如何创建MySQL的PXC集群
下载PXC集群镜像文件
下载
1 | docker pull percona/percona-xtradb-cluster |
重命名
1 | [root@hongshaorou ~]# docker tag docker.io/percona/percona-xtradb-cluster pxc |
创建内部网络
处于安全考虑,需要给PXC集群实例创建Docker内部网络
创建网段:
1 | [root@hongshaorou ~]# docker network create --subnet=172.18.0.0/24 net1 |
查看网段
1 | [root@hongshaorou ~]# docker network inspect net1 |
删除网段
1 | [root@hongshaorou ~]# docker network rm net1 |
创建Docker卷
Docker容器使用原则:一旦创建出容器,尽量不要在容器中保存数据。一般通过目录映射将数据保存在宿主机里面(我们把宿主机的一个目录映射到容器内,然后容器的数据都保存到映射目录,这样就保存到了宿主机,即使容器损坏,宿主机也有数据保存)。但是,PXC技术在使用Docker的时候无法直接使用映射目录,需要另外一种映射技术—Docker卷。
容器中的PXC节点映射数据目录的解决办法
1 | 创建Docker卷:[root@hongshaorou ~]# docker volume create --name v1 |
我们创建的Docker卷是在宿主机上可以看到的具体映射真实目录
1 | [root@hongshaorou ~]# docker inspect v1 |
删除Docker卷
1 | [root@hongshaorou ~]# docker volume rm v1 |
创建PXC容器
只需要向PXC镜像传入运行参数就能创建出PXC容器
1 | [root@hongshaorou ~]# docker run -d -p 3307:3306 -v v1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 --privileged --name=node1 --net=net1 --ip 172.18.0.2 pxc |
这样我们就创建了第一个PXC节点
下面依次创建剩余四个节点
创建Docker卷
1 | [root@hongshaorou ~]# docker volume create --name v2 |
创建容器
1 | 创建node2: |
在创建剩余容器的时候需要注意的是网络和端口的映射不同,以及多了-e CLUSTER_JOIN=node1
表示加入node1节点。
注意:第一个节点创建时间较长,必须等待两分钟左右再创建剩余节点。
创建好之后我们就可以使用客户端连接数据库
依次配置连接 得到五个连接
完成以上配置之后,我们的PXC集群就已经搭建完毕(数据同步我已验证,完全可行)。