一、基本情况
本地虚拟机测试,在3台服务器上使用Docker Swarm搭建Mysql集群,实现一主两从的效果。
主节点:192.168.1.132
node-1:192.168.1.139
node-2:192.168.1.140
Percona XtraDB Cluster (PXC) 是一个基于 Percona Server for MySQL 的开源、高可用性的 MySQL 集群解决方案。它使用 Galera Cluster 技术,允许多个 MySQL 节点协同工作,提供水平扩展和高可用性。
PXC 使用 InnoDB 存储引擎作为默认存储引擎。
Docker Swarm集群节点初始化(略)。
二、Master管理节点配置
1、创建nerwork
docker network create -d overlay --attachable sharednetdocker network ls
可以在从节点验证同步添加完成
docker network ls
NETWORK ID NAME DRIVER SCOPEb8ec7ad1fc53 bridge bridge local2b7389a49c3c docker_gwbridge bridge local2f604b57947e host host localov9l5tb6udg3 ingress overlay swarmd9e27827037d none null local0diog40psryu sharednet overlay swarm
2、拉取pxc镜像并重新标记、删除源镜像(所有节点均需操作)
docker pull percona/percona-xtradb-cluster:5.7.34docker tag percona/percona-xtradb-cluster:5.7.34 mysql:5.7.34docker rmi percona/percona-xtradb-cluster:5.7.34
3、创建数据卷
docker volume create v1docker volume create backup
可以在从节点验证同步添加完成
docker volume ls
[root@Master ~]# docker volume lsDRIVER VOLUME NAMElocal ab088d81b38ece678f9d1e86a36e35cd198f04dc2329d536d2ad7e7538825143local backuplocal d5b2246c7c5bd258924df21f3a266e26e4cc71769bc7f86b710adb480003c832local nginx-configlocal portainer_datalocal v1
4、主节点创建并运行容器
docker run --restart=always-p 3306:3306-e MYSQL_ROOT_PASSWORD=123456-e CLUSTER_NAME=PXC-e XTRABACKUP_PASSWORD=123456-v v1:/var/lib/mysql-v backup:/data--privileged=true--name=node1--net=sharednet-d mysql:5.7.34
查看容器运行状态:
[root@Master ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES402e30dbe622 mysql:5.7.34 "/entrypoint.sh mysq…" 50 minutes ago Up 50 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 4567-4568/tcp node1

三、SLAVE节点配置(2台)
1、拉取镜像(略);
2、加入集群
node 1执行:
docker run --restart=always-p 3306:3306-e MYSQL_ROOT_PASSWORD=123456-e CLUSTER_NAME=PXC-e XTRABACKUP_PASSWORD=123456-v v1:/var/lib/mysql-v backup:/data--privileged=true--name=node1--net=sharednet-d mysql:5.7.34
node 2执行:
docker run --restart=always-p 3306:3306-e MYSQL_ROOT_PASSWORD=123456-e CLUSTER_NAME=PXC-e XTRABACKUP_PASSWORD=123456-e CLUSTER_JOIN=node1-v v1:/var/lib/mysql-v backup:/data--privileged=true--name=node2--net=sharednet-d mysql:5.7.34
四、验证
在master数据库创建一个test库,并导入sql;可以发现slave库也同步导入。
证明主从模式配置无问题,一切使用正常。

