kolla-ansible部署OpenStack集群断电mairadb数据库集群恢复

机房一定要做好供电冗余!!!

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

你可能感兴趣的:(kolla-ansible部署OpenStack集群断电mairadb数据库集群恢复)