一 首先 拉取pxc镜像
docker pull percona/percona-xtradb-cluster
重命名pxc名字
docker tag percona/percona-xtradb-cluster pxc
删除之前的
docker rmi percona/percona-xtradb-cluster
二 创建内部网络
docker network create --subnet=172.18.0.0/24 net1
查看net1网段:
docker inspect net1
删除net1 (docker network rm net1)
三 创建docker数据卷
因为pxc不支持映射目录,所以采用映射数据卷的方式。创建数据卷叫v1,这里2个节点,所以创建2个数据卷:
docker volume create v1 docker volume create v2
查看v1数据卷在宿主机的位置:
docker inspect v1
删除数据卷v1:(这里不执行,留作参考。)(docker volume rm v1)
4、创建pxc容器
这里最好先把备份数据的数据卷创建出来,然后也映射到宿主机,这样以后做热备份的时候就不用删掉容器节点重新再创建容器并映射备份目录了。做备份数据的数据卷:
docker volume create backup1 docker volume create backup2
五 开始创建2个MySQL节点
命令参数说明:端口3306,密码123456,集群名称PXC,同步数据密码123456,映射数据目录到宿主机的v1数据卷,给予最高权限,名称叫node1,网段为net1,ip指定为172.18.0.2,运行的镜像是pxc。
1)、创建第1个MySQL节点
这里要注意:一定要等到第一个节点创建并通过客户端连接成功,才能继续创建其它的节点,否则因为找不到node1同步库,其它节点创建时会闪退!
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -v v1:/var/lib/mysql -v backup1:/data --privileged --name=node1 --net=net1 --ip 172.18.0.2 pxc
2)、创建第2个MySQL节点
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=node1 -v v2:/var/lib/mysql -v backup2:/data --privileged --name=node2 --net=net1 --ip 172.18.0.3 pxc
3)、创建第3个MySQL节点
docker run -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=node1 -v v3:/var/lib/mysql -v backup3:/data --privileged --name=node3 --net=net1 --ip 172.18.0.4 pxc