PXC 方案 
 
 
 
很明显 PXC方案在任何一个节点写入的数据都会同步到其他节点,数据双向同步的(在任何节点上都可以同时读写) 
 
创建MySQL PXC集群
 
1  安装PXC镜像 
 
docker pull percona/percona-xtradb-cluster:5.7.21 
 
 
2  为PXC镜像改名 
 
docker tag percona/percona-xtradb-cluster:5.7.21 pxc 
 
 
 3  创建net1网段 
 
docker network create --subnet=172.18.0.0/16 net1 
 
 
4  创建5个数据卷 
 
docker volume create --name v1 
 
docker volume create --name v2 
 
docker volume create --name v3 
 
docker volume create --name v4 
 
docker volume create --name v5 
 
 
 5  创建备份数据卷(用于热备份数据) 
 
docker volume create --name backup 
 
6  创建5节点的PXC集群   
 
注意,每个MySQL容器创建之后,因为要执行PXC的初始化和加入集群等工作,耐心等待1分钟左右再用客户端连接MySQL。另外,必须第1个MySQL节点启动成功,用MySQL客户端能连接上之后,再去创建其他MySQL节点。   
 
创建第1个MySQL节点 
 
 docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -v v1:/var/lib/mysql -v backup:/data --privileged --name=node1 --net=net1 --ip 172.18.0.2 pxc 
  
 
 
创建第2个MySQL节点 
 
 docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v2:/ var /lib/mysql -v backup:/data --privileged --name=node2 --net=net1 --ip 172.18.0.3 pxc 
  
 
创建第 3 个 MySQL 节点 
 
 docker run -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v3:/ var /lib/mysql --privileged --name=node3 --net=net1 --ip 172.18.0.4 pxc 
  
 
创建第 4 个 MySQL 节点 
 
 docker run -d -p 3309:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v4:/ var /lib/mysql --privileged --name=node4 --net=net1 --ip 172.18.0.5 pxc 
   
  
 
创建第 5 个 MySQL 节点 
 
 docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v5:/ var /lib/mysql -v backup:/data --privileged --name=node5 --net=net1 --ip 172.18.0.6 pxc 
  
 
查看容器运行状态   
 
docker container ls 
 
 
 可以创建一个数据库或表,发现在任意节点创建的数据都会同步到其他节点