PXC全称Percona XtraDB Cluster,它提供了MySQL高可用的一种实现方案。PXC集群是以节点组成,推荐奇数个节点(至少3个以上),集群中的每个节点都包含完整的数据,并且所有节点都是可读可写的。PXC集群方案能够保证数据的强一致性,当程序向PXC的一个节点提交数据时,该节点先同步其他的节点,如果其他节点同步失败,那么这个提交数据的行为就算失败,只有所有节点都同步成功才返回程序提交数据成功。

下载镜像文件

# docker pull percona/percona-xtradb-cluster:5.7.20

查看镜像文件

# docker images

修改镜像文件名称

# docker tag percona/percona-xtradb-cluster:5.7.20 pxc

删除原来镜像文件

# docker rmi percona/percona-xtradb-cluster:5.7.20

创建pxc集群内部网络

# docker network create --subnet=172.18.0.0/24 net1

查看内部网络信息

# docker inspect net1

创建docker卷

# docker volume create v1
# docker volume create v2
# docker volume create v3
# docker volume create v4
# docker volume create v5

查看docker卷信息

# docker inspect v1
# docker inspect v2
# docker inspect v3
# docker inspect v4
# docker inspect v5

创建容器

# docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=tang1611 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=tang1611 -v v1:/var/lib/mysql --privileged --name=node1 --net=net1 --ip 172.18.0.2 pxc
# docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=tang1611 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=tang1611 -e CLUSTER_JOIN=node1 -v v2:/var/lib/mysql --privileged --name=node2 --net=net1 --ip 172.18.0.3 pxc
# docker run -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=tang1611 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=tang1611 -e CLUSTER_JOIN=node1 -v v3:/var/lib/mysql --privileged --name=node3 --net=net1 --ip 172.18.0.4 pxc
# docker run -d -p 3309:3306 -e MYSQL_ROOT_PASSWORD=tang1611 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=tang1611 -e CLUSTER_JOIN=node1 -v v4:/var/lib/mysql --privileged --name=node4 --net=net1 --ip 172.18.0.5 pxc
# docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=tang1611 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=tang1611 -e CLUSTER_JOIN=node1 -v v5:/var/lib/mysql --privileged --name=node5 --net=net1 --ip 172.18.0.6 pxc

查看正在运行的容器

# docker ps

使用本地navicate连接PXC集群节点