参考:
https://blog.csdn.net/Fupengyao/article/details/88931880
https://blog.csdn.net/super_ye_man/article/details/94037377
docker重启后docker start pxc节点后闪退,解决方法如下:
方法一:
1. 找出数据卷映射目录
docker inspect v1
显示结果如下:
2. 到映射目录下修改配置文件 grastate.dat
# cd到映射目录
cd /var/lib/docker/volumes/v1/_data
# 查看配置文件
cat grastate.dat
可以看到,safe_to_bootstrap的值为0,编辑这个文件,将这个值改为1
3. 再次启动 pxc容器
docker start -i node1
注意:只需要修改第一个pxc节点,就能启动成功,不需要全部修改。
PXC集群只有在超过一半数量的节点宕机,集群才会不可用,这是为了避免异地机房部署PXC集群,因为网络故障,导致一个PXC集群分裂成两个集群。所以说挂掉一两个节点没什么问题,只要不超过一半的节点就行。
方法二:
直接通过docker start node1 或者任何一个节点是启动不了的,原因是集群之前的同步机制造成的,启动任何一个节点,该节点都会去其它节点同步数据,其它节点仍处于宕机状态,所以该节点启动失败,这也是pxc集群的强一致性的表现。
删除所有节点docker rm node1 node2 node3 node4 node 5和数据卷中的grastate.dat文件
rm -rf /var/lib/docker/volumes/v1/_data/grastate.dat
rm -rf /var/lib/docker/volumes/v2/_data/grastate.dat
rm -rf /var/lib/docker/volumes/v3/_data/grastate.dat
rm -rf /var/lib/docker/volumes/v4/_data/grastate.dat
rm -rf /var/lib/docker/volumes/v5/_data/grastate.dat
重新执行集群创建的命令即可,因为数据都在数据卷中,所有放心,集群重新启动都数据仍然都在