如何安全重启MariaDB Galera集群,解决关机重启后无法启动问题
MariaDB Galera集群重启失败排查与解决方案
第一步:修复种子节点启动标识(最常见故障原因)
异常关机/重启后所有Galera节点的状态文件会自动禁用启动种子权限,是集群启动失败的最高发原因,操作步骤如下:
- 先停止所有节点的MariaDB服务:
systemctl stop mariadb - 找到3个Galera节点的状态文件,默认路径为
/var/lib/mysql/grastate.dat,逐一查看文件中seqno字段的数值,找到seqno数值最大的节点(该节点存储了集群最新的数据) - 把该节点
grastate.dat文件中safe_to_bootstrap的参数值修改为1 - 以种子节点模式拉起该节点:
galera_new_cluster - 确认种子节点运行正常后,依次启动剩余2个Galera节点:
systemctl start mariadb - 3个Galera节点全部正常运行后,最后启动从属复制节点的MariaDB服务
第二步:日志排查其他异常场景
如果第一步操作后仍启动失败,查看MariaDB错误日志定位具体问题,默认日志路径为/var/log/mariadb/mariadb.log,常见问题修复方案如下:
- 端口占用:Galera集群默认使用4567、4568、4444三个通信端口,执行
ss -tulpn | grep -E '4567|4568|4444'检查端口是否被其他进程占用,释放端口后重启即可 - 权限异常:检查MySQL数据目录所属用户是否为mysql,执行
chown -R mysql:mysql /var/lib/mysql修复权限后重启 - 残留同步锁文件:如果之前集群触发过状态快照同步,异常关机后会残留锁文件,执行
rm -f /var/lib/mysql/sst_in_progress删除锁文件后重启 - 配置错误:检查
/etc/my.cnf.d/galera.cnf中wsrep_cluster_address参数是否正确填写了所有3个Galera节点的IP地址,无拼写或IP填写错误
第三步:集群状态验证
所有节点启动完成后,登录Galera节点的MariaDB执行命令SHOW STATUS LIKE 'wsrep_cluster_size';,返回值为3即代表Galera集群运行正常。再登录从属复制节点执行SHOW SLAVE STATUS\G,确认Slave_IO_Running和Slave_SQL_Running两个参数值都为Yes,即代表从属复制同步正常。
内容的提问来源于stack exchange,提问作者Subrato Pal
相关产品推荐
相关产品推荐

