一、基本情况
本地虚拟机测试,在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 sharednet
docker network ls
可以在从节点验证同步添加完成
docker network ls
NETWORK ID NAME DRIVER SCOPE
b8ec7ad1fc53 bridge bridge local
2b7389a49c3c docker_gwbridge bridge local
2f604b57947e host host local
ov9l5tb6udg3 ingress overlay swarm
d9e27827037d none null local
0diog40psryu sharednet overlay swarm
2、拉取pxc镜像并重新标记、删除源镜像(所有节点均需操作)
docker pull percona/percona-xtradb-cluster:5.7.34
docker tag percona/percona-xtradb-cluster:5.7.34 mysql:5.7.34
docker rmi percona/percona-xtradb-cluster:5.7.34
3、创建数据卷
docker volume create v1
docker volume create backup
可以在从节点验证同步添加完成
docker volume ls
[root@Master ~]# docker volume ls
DRIVER VOLUME NAME
local ab088d81b38ece678f9d1e86a36e35cd198f04dc2329d536d2ad7e7538825143
local backup
local d5b2246c7c5bd258924df21f3a266e26e4cc71769bc7f86b710adb480003c832
local nginx-config
local portainer_data
local 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 ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
402e30dbe622 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库也同步导入。
证明主从模式配置无问题,一切使用正常。