- 启动其他节点的命令是:
systemctl start mysqld
- 那么对应的关闭命令就是:
systemctl stop mysqld
2、如果所有PXC节点都是安全下线的,那么在启动集群时,就需要先启动最后下线的节点
初次启动集群时可以将任意一个节点作为首节点启动。但如果是一个已经启动过的集群,那么当该集群下线再上线时,就需要将最后下线的节点作为首节点来启动。其实关于某个节点是否能作为首节点启动,可以通过查看 grastate.dat
文件得知:
[root@PXC-Node1 ~]# cat /var/lib/mysql/grastate.dat
# GALERA saved state
version: 2.1
uuid: 2c915504-39ac-11ea-bba7-a294386c4285
seqno: -1
safe_to_bootstrap: 0
[root@PXC-Node1 ~]#
- 说明:
safe_to_bootstrap
的值为0
时表示不能作为首节点启动,为1
时表示可以作为首节点启动。PXC集群中最后一个下线的节点就会将safe_to_bootstrap
的值改为1
,下次启动集群时就需要将该节点作为首节点启动。这是因为最后一个下线的节点数据是最新的。将其作为首节点启动,然后让其他节点与该节点进行数据同步,这样才能保证集群中的数据是最新的。否则,可能会导致集群中的数据是某个时间点之前的旧数据。
3、如果PXC节点都是意外退出的,而且不是在同一时间退出的情况
在本文开头提到过,PXC集群中一半以上的节点因意外宕机而无法访问时,PXC集群就会停止运行。但如果这些PXC节点是以安全下线的方式退出,则不会引发集群自动停止运行的问题,只会缩小集群的规模。只有意外下线一半以上节点时集群才会自动停止,意外下线的情况包括:
- 宕机、挂起、关机、重启、断电、断网等等,反正就是没有使用相应的停止命令安全下线节点都属于意外下线
只要PXC集群中的节点不是同时意外退出的,那么当集群还剩一个节点时,该节点就会自动将grastate.dat
文件中的safe_to_bootstrap
值改为1
。所以在重启集群时,也是先启动最后一个退出的节点。
4、如果PXC节点都是同时意外退出的,则需要修改**grastate.dat
**文件
当集群中所有节点都是在同一时间因意外情况而退出,那么此时所有节点的safe_to_bootstrap
都为0
,因为没有一个节点来得及去修改safe_to_bootstrap
的值。当所有节点的safe_to_bootstrap
均为0
时,PXC集群是无法启动的。
在这种情况下我们就只能手动选择一个节点,将safe_to_bootstrap
修改为1
,然后将该节点作为首节点进行启动:
[root@PXC-Node1 ~]# vim /var/lib/mysql/grastate.dat
...
safe_to_bootstrap: 1
[root@PXC-Node1 ~]# systemctl start mysql@bootstrap.service
接着再依次启动其他节点即可:
代码语言:javascript复制[root@PXC-Node2 ~]# systemctl start mysqld
5、如果集群中还有可运行的节点,那么其他下线的节点只需要按普通节点上线即可
代码语言:javascript复制[root@PXC-Node2 ~]# systemctl start mysqld