机房一定要做好供电冗余!!!
mariadb服务异常
### 解决办法
########## 停止所有mariadb容器 ##########
docker stop mariadb
########## 找到最后关闭的mariadb主机,如果不记得就随机选取一台或者根据/var/lib/docker/volumes/mariadb/_data/grastate.dat的seqno进行选取(越大优先级越高),然后修改其grastate.dat文件的safe_to_bootstrap参数 ##########
vim /var/lib/docker/volumes/mariadb/_data/grastate.dat
safe_to_bootstrap: 1########## 修改mariadb容器启动命令后启动容器,查询日志保证mariadb服务正常启动 ##########
vim /etc/kolla/mariadb/config.json"command":"/usr/bin/mysqld_safe --wsrep-new-cluster",
docker start mariadb
tail -200f /var/lib/docker/volumes/kolla_logs/_data/mariadb/mariadb.log
########## 启动其他节点的mariadb容器 ##########
docker start mariadb
tail -200f /var/lib/docker/volumes/kolla_logs/_data/mariadb/mariadb.log
########## 确保集群运行正常后,恢复最初修改的config.json(这样就保证集群中所有的mariadb容器都是平等的)##########
vim /etc/kolla/mariadb/config.json"command":"/usr/bin/mysqld_safer",
tail -200f /var/lib/docker/volumes/kolla_logs/_data/mariadb/mariadb.log
如果一切正常 不需要关闭mariadb
docker stop mariadb
docker start mariadb
tail -200f /var/lib/docker/volumes/kolla_logs/_data/mariadb/mariadb.log
如果报错
每个节点都要删除以下2个文件
rm -rf /var/lib/docker/volumes/mariadb/_data/galera.cache
rm -rf /var/lib/docker/volumes/mariadb/_data/grastate.dat
③如果以上两种方法全部无效。尝试采用下面操作(进过测试,此方法成功过)
第一步:数据库无法启动情况下把/var/lib/mysql下的几个文件:grastate.dat gvwstate.dat galera.cache mysql.sock统统删掉再重启
rm -rf /var/lib/mysql/grastate.dat gvwstate.dat galera.cache mysql.sock
第二步:更改配置文件中的 “gcomm://” 是特殊的地址,仅仅是galera cluster初始化启动时候使用。如果集群启动以后,
我们关闭了第一个节点,那么再次启动的时候必须先修改"gcomm://"为其他节点的集群地址,首次作为发起人则此处为空,不向任何人同步数据。
第三步:本机启动服务:systemctl start mariadb
第四部:启动集群:galera_new_cluster
第五步:启动其余节点上的mariadb: systemctl start mariadb
第六步:更改回 “gcomm://” 重启数据库systemctl restart mariadb
终极大招
kolla脚本恢复:
登陆部署节点,执行命令 kolla-ansible mariadb_recovery -i /opt/mutinode