【环境】
云平台版本:openstack queens版本
架构:ARM
数据库类型: Mariadb galera集群,3个节点
数据库版本:10.3.20-MariaDB
【现象】
三控的云平台集群被非正常关机(机房直接断电)后,云平台启动时报500错误,此错误对应mariadb集群异常。 通过手动指定启动节点方法,成功启动了controller2、controller1节点数据库,在起controller3 mariadb时,组件无法启动,而且容器日志与服务日志均未有ERROR报错。
容器状态如下:
检查docker logs mariadb容器日志,无报错:
检查mariadb.log服务日志,也无报错。
【处理思路】
-
mariadb没有报错不好排查,关闭节点wsrep同步参数 wsrep_on = OFF
-
先恢复组件状态
-
之后开启wsrep参数,让节点与集群同步
-
最后检查集群整体状态,正常是三副本
【恢复步骤】
以下操作都在controller3节点执行
1、备份mariadb配置及数据文件
cp /etc/mariadb/galera.cnf /etc/mariadb/galera.cnf.bak
cp -raf /var/lib/docker/volumes/mariadb/ /var/lib/docker/volumes/mariadb_bak/
2、关闭wsrep_on集群参数,并重启组件
sed -i 's/wsrep_on = ON/wsrep_on = OFF/' /etc/mariadb/galera.cnf
docker restart mariadb
3、再检查mariadb.log服务日志,已经出现can't init tc.log报错。之后我们处理相应报错
tail -f /var/lib/docker/volumes/kolla_logs/_data/mariadb/mariadb.log
4、删除tc.log ib_logfile_0 ib_logfile_1这几个集群数据同步日志
cd /var/lib/docker/volumes/mariadb/_data/
rm -rf tc.log ib_logfile0 ib_logfile1
docker restart mariadb
5、间隔一分钟后,检查组件已经up。 但wsrep_on = OFF参数仍是关闭,下一步我们开启参数
6、检查wsrep_on参数,并再次重启mariadb,检查组件与mariab galera集群状态
mv /etc/kolla/mariadb/galera.cnf.bak /etc/kolla/mariadb/galera.cnf
docker restart mariadb
docker ps -a | grep mariadb
tail -f /var/lib/docker/volumes/kolla_logs/_data/mariadb/mariadb.log #看到节点已经ready for connections
7、登录controller1节点,检查数据库集群状态
docker exec -it mariadb mysql -u root -p密码 -e "show status like 'wsrep%';"
8、检查云平台其它服务也正常,web页面登录正常。
【总结】
后续galera集群中某个节点组件无法启动,mariadb.log又没报错时,可尝试关闭wsrep_on = ON参数,让组件先以单节点形式启动,再考虑同步集群数据。