问题描述
今天遇到一个问题,openstack集群的3个控制节点内存故障后,同事重启了三个机器,启动后,三个节点上的mysqld(其实就是mariadb)服务都起不来了
根据排查日志/var/log/mariadb/mariadb.log , 发现日志中显示[ERROR] WSREP: failed to open gcomm backend connection: 100: failed to reach primary view: 110 (Connection timed out)
根据网上查资料,初步判断是机器故障时,集群信息发生了异常,每个节点启动mysql的时候,都回去尝试跟其他节点的mysqld通信,结果导致各个节点的服务都起不来
最后根据建议的方法:
1. 在各个节点上:
rm -rf /var/lib/mysql/galera.cache
rm -rf /var/lib/mysql/grastate.dat
2. 然后在选个节点做主节点,在/lib/systemd/system/mysqld.service文件中,找到ExecStart配置,这是启动mysql的命令,然后增加–wsrep-new-cluster参数,然后坐等启动;如果系统不支持systemctl管理,那么直接执行service mysql start –wsrep-new-cluster(服务名称视具体系统而定,一般是mysqld或者mysql,如果是centos7也可能必须是mariadb-server,或者其他)
3. 然后在其他节点启动mysqld即可,systemctl start mysqld, 或者其他启动命令