//创建网段
docker network create --subnet=172.18.5.0/24 pxcNet0
docker volume create --name pxcData1
docker volume create --name pxcData2
docker volume create --name pxcData3
docker volume create --name pxcData4
docker volume create --name pxcData5
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=AOOB.Pxc.db -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=AOOB.Pxc.db -v pxcData1:/var/lib/mysql -v pxcBackup:/data --privileged --name=node1 --net=pxcNet0 --ip 172.30.0.3 pxc
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=AOOB.Pxc.db -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=AOOB.Pxc.db -e CLUSTER_JOIN=node1 -v pxcData2:/var/lib/mysql -v pxcBackup:/data --privileged --name=node2 --net=pxcNet0 --ip 172.30.0.4 pxc
docker run -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=AOOB.Pxc.db -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=AOOB.Pxc.db -e CLUSTER_JOIN=node1 -v pxcData3:/var/lib/mysql -v pxcBackup:/data --privileged --name=node3 --net=pxcNet0 --ip 172.30.0.5 pxc
docker run -d -p 3309:3306 -e MYSQL_ROOT_PASSWORD=AOOB.Pxc.db -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=AOOB.Pxc.db -e CLUSTER_JOIN=node1 -v pxcData4:/var/lib/mysql -v pxcBackup:/data --privileged --name=node4 --net=pxcNet0 --ip 172.30.0.6 pxc
docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=AOOB.Pxc.db -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=AOOB.Pxc.db -e CLUSTER_JOIN=node1 -v pxcData5:/var/lib/mysql -v pxcBackup:/data --privileged --name=node5 --net=pxcNet0 --ip 172.30.0.7 pxc
删除所有节点docker rm node1 node2 node3 node4 node 5和数据卷中的grastate.dat文件
rm -rf /var/lib/docker/volumes/pxcData1/_data/grastate.dat
rm -rf /var/lib/docker/volumes/pxcData2/_data/grastate.dat
rm -rf /var/lib/docker/volumes/pxcData3/_data/grastate.dat
rm -rf /var/lib/docker/volumes/pxcData4/_data/grastate.dat
rm -rf /var/lib/docker/volumes/pxcData5/_data/grastate.dat
docker stop node1 node2 node3 node4 node5
重新执行集群创建的命令即可,因为数据都在数据卷中,所有放心,集群重新启动都数据仍然都在
--》 容器全部初始化完毕后 --》停止全部节点容器--》去主节点node1数据卷复制全部 .pem 文件到其他节点数据卷 --》删除所有节点数据卷下面的grastate.dat --》 删除全部节点 --》重新初始化容器 --》 所有容器依次启动,启动其他容器先关闭之前启动的那个从节点,等所有容器跑过一边再运行其他的(依次运行!!!!!!!)
//所有节点无法启动 vim /var/lib/docker/volumes/pxcData2/_data/grastate.dat 改 node1 节点内的safe_to_bootstrap为 1表示引导节点
这个值是用来判断是否是主节点,0表示非引导节点,-1表示引导节点(引导节点-最后关闭的节点)
直接通过docker start node1 或者任何一个节点是启动不了的,原因是集群之前的同步机制造成的,启动任何一个节点,该节点都会去其它节点同步数据,其它节点仍处于宕机状态,所以该节点启动失败,这也是pxc集群的强一致性的表现。
评论