Mariadb 节点故障替换过程


这段时间搭建mariadb集群,老板问我,一个节点坏掉了,能否直接替换,不用重启其他机器,不新加节点。我在网上找了很多资料,都没有一个完整的解决方案。于是自己探索模拟了下,还真被自己试成功了,下面把过程记录了下来。

场景:三台Mariadb集群,假设其中某一台突然出现问题,启动不了,现在用一台新的进行替换。

三台主机

172.20.30.189

172.20.30.190

172.20.30.191

问题主机

172.20.30.190

原先三台机器都正常,如下图所示:

mariadb集群 mariadb集群 主节点异常_mariadb集群


我们先修改下下190的ip,然后reboot一下,发现190从集群节点中消失

mariadb集群 mariadb集群 主节点异常_mariadb_02


下面我们用一台新的机器进行替换,

前提:节点故障之前保存所有节点配置文件最主要的是data目录下的grastate.dat文件(注意:一定要是文件本身,拷贝其中内容无效)

mariadb集群 mariadb集群 主节点异常_mariadb_03


1:修改新节点的主机名和ip,保证与故障节点一致

a:修改主机名,保证与故障主机节点一致

mariadb集群 mariadb集群 主节点异常_mysql_04


b:修改主机ip,保证与故障主机节点一致

mariadb集群 mariadb集群 主节点异常_mariadb集群_05


mariadb集群 mariadb集群 主节点异常_linux_06


c:重启下网卡服务

systemctl restart network

2:修改本地主机映射关系,将故障节点的信息拷贝上去

mariadb集群 mariadb集群 主节点异常_mysql_07


3:重启下机器

reboot

4:修改mariadb集群的配置文件,保证相关信息与故障节点一致

vim /etc/my.cnf.d/server.cnf

mariadb集群 mariadb集群 主节点异常_mariadb_08


5:初始数据库

/usr/bin/mysql_install_db --defaults-file=/etc/my.cnf.d/server.cnf --user=mysql --datadir=/usr /local /mysql/data --basedir=/usr

这个可以按照自己配置进行修改

mariadb集群 mariadb集群 主节点异常_linux_09


6:将grastate.dat文件拷贝过去

mariadb集群 mariadb集群 主节点异常_mariadb集群_10


7:给mysql 添加grastate.bat添加操作权限

chown -R mysql /usr/local/mysql/data/grastate.dat
chgrp -R mysql /usr/local/mysql/data/grastate.dat

8:重启mariadb集群服务

Service mariadb restart

mariadb集群 mariadb集群 主节点异常_linux_11


9:查看节点是否加入集群

mariadb集群 mariadb集群 主节点异常_mariadb_12


10:数据同步完成

检查下了数据,发现数据同步需要一段时间,在这段时间无法插入数据,感觉这个应该是和mariadb(主主集群)机制有关系。