前言
昨天公司要进行线上MHA高可用集群故障切换演练。由于我刚入职公司。公司还没有做过太多的灾难级别的故障演练。
我写了一些步骤:
故障切换
- 查看主从延迟状态
- 登录MHA中控机,查看演练切换的数据库MHA log文件,使用tail -f 命令来获取切换的log日志信息
- 登录master机器,执行 /etc/init.d/mysql stop
- 查看MHA中控机日志信息。
- 切换成功,登录到 new_master 中查看vip是否已经绑定到网卡上
- 登录slave,查看 show slave status 是否已经change master to new_master ip上,查看slave正常与否
- 在 MHA 中控机启动 masterha_manager 进程,查看MHA集群启动是否正常。(两节点)
结构图:
new_master: (master)
—> slave: (slave)
master 数据库恢复
- 登录到old_master 机器上执行 /etc/init.d/mysql start 是否正常启动服务
- 在MHA中控机中获取切换的log 日志信息找出 change master to new_master 信息语句
- 在old_master 中执行change master to 语句,变为 new_master的slave
- show slave status 查看 old_master 是否正常变为 new_master 的slave
- 在MHA 中控机节点,执行 masterha_stop 命令结束 masterha_manager进程。
- 在MHA 中控机启动 masterha_manager 进程,查看恢复好的old_master是否正常加入到MHA节点 (三节点)
结构图:
new_master: (master)
—> old_master: (slave)
—> slave: (slave)
恢复 old_master为 master 角色
- 查看主从延迟状态
- 登录MHA中控机,查看演练切换的数据库MHA log文件,使用tail -f 命令来获取切换的log日志信息
- 登录new_master机器,执行 /etc/init.d/mysql stop
- 查看MHA中控机日志信息。
- 切换成功,登录到 old_master 中查看vip是否已经绑定到网卡上
- 登录slave,查看 show slave status 是否已经change master to old_master ip上,查看slave正常与否
- 在 MHA 中控机启动 masterha_manager 进程,查看MHA集群启动是否正常。(两节点)
结构图:
master(old_master): (master)
—> slave(new_master): (slave)
—> slave: (slave)
但是这么操作虽然能更贴近真实灾难(暂时没有把主从数据延迟考虑进入),需要的时间会更多。领导建议手动操作MHA failover测试能不能切换。
服务器架构
server | role |
---|---|
master | old_master |
slave | new_master |
slave | slave |
具体操作
在MHA 中控机中执行命令
1 | # masterha_check_repl --conf=/root/dba/mha/conf/babybi_#1.conf |
1 | Wed Mar 27 23:28:28 2019 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping. |
执行 masterha_master_switch 命令
1 | # masterha_master_switch --conf=/root/dba/mha/conf/babybi_#1.conf --master_state=alive --new_master_host=10.25.1.67 --new_master_port=3306 --orig_master_is_new_slave --running_updates_limit=10000 |
1 | Wed Mar 27 23:34:27 2019 - [info] MHA::MasterRotate version 0.56. |
1 | # ps -ef|grep babybi_#1.conf |
到new_master机器中查看VIP有没有绑定过来到网卡上
1 | # ip a |
1 | 1: lo: |
登录到slave机器上
1 | mysql> show slave status\G |
正常 CHANGE MASTER TO NEW_MASTER
登录到old_master中查看
1 | mysql> show slave status\G |
到new_master上查看
1 | $ ps -ef|grep keepalived |
在切换回来到old_master提成为master
步骤按照上面操作,就不重复搬砖了。
结果
MHA 高可用集群切换成功,虽然是手动MHA failover测试,并不能代表MHA的高可用。以后还会按照上面缩写的步骤在加上一定的主从数据同步延迟来进行演练。