MHA failover流程

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

MHA manager启动后,启动流程以及failover流程如下:


1. 启动前准备情况

2. 检查数据库服务器状态,获取相关的配置参数

3. 测试SSH连接是否成功

4. 测试MHA node是否可用

5. 开始检查SLAVE的差异日志应用权限

6. 确定当前的复制架构

7. 调试master_ip_failover_script脚本

8. 调试shutdown_script

9. 设置二次检查的主机masterha_secondary_check

10. MHA启动完毕,进入检测过程

11. 检测到MASTER挂了

12. 通过定义的二次检测,确认MASTER是否真的挂了

13. 确认MASTER挂了,开始执行failover流程

14. 再次尝试连接MASTER和MASTER 的SSH

15. 再次检查SLAVE的配置是否有变化,是否符合failover条件

16. 正式开始failover

17. 再次对SLAVE的配置做检查

18. 对原Master的master_ip_failover_script和shutdown_script的做操作,关闭SSH或者关闭数据库

19. 开始做差异日志的恢复,获取SLAVE最后得到的binlog位置

20. 获取原MASTER的binlog日志

21. 确定新的MASTER

22. 在新的MASTER上应用差异的binlog日志

23. 获取新MASTER的binlog位置

24. 如果有master_ip_failover,那么给新master设置VIP或者设置域名

25. 开始回去其他SLAVE,也是从原MASTER的binlog对比来做恢复

26. 差异日志应用完毕后,切换所有的slave到新MASTER

27. failover操作完成,生成failover报告

28. master manager退出



其中:

    

#master_ip_failover_script:
首先启动的时候会调用这个脚本--检测status
/opt/master_ip_failover_script.sh –command=status –ssh_user=root –orig_master_host=192.168.153.150 –orig_master_ip=192.168.153.150 –orig_master_port=3306
然后在正式failover过程中的第二步,Dead Master Shutdown Phase阶段会在次执行。  第18步,综合shutdown_script关闭数据库或者服务器
/opt/master_ip_failover_script.sh –orig_master_host=192.168.153.150 –orig_master_ip=192.168.153.150 –orig_master_port=3306 –command=stopssh –ssh_user=root
在正式failover过程中的第3.4步骤中(选举新的master以后,应用差异的binlog后),会再次执行。在第24步,执行VIP或者域名切换操作
/opt/master_ip_failover_script.sh –command=start –ssh_user=root –orig_master_host=192.168.153.150 –orig_master_ip=192.168.153.150 –orig_master_port=3306 –new_master_host=192.168.153.151 –new_master_ip=192.168.153.151 –new_master_port=3306 –new_master_user=’mha’ –new_master_password=’mha’


#shutdown_script:
首先启动的时候会执行这个脚本,执行时间紧跟着master_ip_failover_script第一次执行后面
/opt/shutdown_script.sh –command=status –ssh_user=root –host=192.168.153.150 –ip=192.168.153.150
第二次执行是在master_ip_failover_script第二次执行后面
/opt/shutdown_script.sh –command=stopssh –ssh_user=root –host=192.168.153.150 –ip=192.168.153.150 –port=3306

#report_script=”" //通知脚本
在masterha_manager自动切换完成的最后会调用一次这个脚本。
report_script.sh –orig_master_host=(dead master’s hostname) –new_master_host=(new master’s hostname) –new_slave_hosts=(new slaves’ hostnames, delimited by commas) –subject=(mail subject) –body=(body)


#master_ip_online_change_script:
在使用masterha_master_switch –conf=/etc/app1.cnf –master_state=alive –new_master_host=192.168.153.151主动切换mysql master的时候会调用.
在online切换的第二阶段,拒绝写入原master的时候执行。
/opt/master_ip_online_change_script.sh –command=stop –orig_master_host=192.168.153.150 –orig_master_ip=192.168.153.150 –orig_master_port=3306 –orig_master_user=’mha’ –orig_master_password=’mha’ –new_master_host=192.168.153.151 –new_master_ip=192.168.153.151 –new_master_port=3306 –new_master_user=’mha’ –new_master_password=’mha’
然后会在new master上执行
/opt/master_ip_online_change_script.sh –command=start –orig_master_host=192.168.153.150 –orig_master_ip=192.168.153.150 –orig_master_port=3306 –orig_master_user=’mha’ –orig_master_password=’mha’ –new_master_host=192.168.153.151 –new_master_ip=192.168.153.151 –new_master_port=3306 –new_master_user=’mha’ –new_master_password=’mha’


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
5月前
|
关系型数据库 MySQL 网络安全
MHA 高可用配置 及故障切换
MHA 高可用配置 及故障切换
|
安全 关系型数据库 MySQL
MHA高可用配置及故障切换
MHA高可用配置及故障切换
134 0
|
网络安全
Heartbeat配置方案
Heartbeat配置方案
|
监控 算法 关系型数据库
高可用 - 08 Keepalived集群中Master和Backup角色选举策略
高可用 - 08 Keepalived集群中Master和Backup角色选举策略
106 0
|
Go API 开发工具
利用etcd选举sdk实践master/slave故障转移
本次记录[利用etcd选主sdk实践master/slave故障转移], 并利用etcdctl客户端验证选主sdk的工作原理。
利用etcd选举sdk实践master/slave故障转移
|
SQL 关系型数据库 MySQL
MHA failover GTID 专题
MHA failover GTID 专题 这里以masterha_master_switch为背景详解各种可能遇到的场景 假定环境(经典三节点) host_1(host_1:3306) (current master) +--host_2(host_2:3306 slave[candidat.
2941 0
|
关系型数据库 MySQL 测试技术
搭建MHA
安装MySQL 5.7 yum源的配置文件如下 [mysql57-community] name=MySQL 5.7 Community Server baseurl=http://repo.mysql.
1303 0
|
MySQL 关系型数据库 Windows
使用Heartbeat实现MySQL主从高可用
使用Heartbeat实现MySQL主从高可用 前面我们使用Keepalived实现MySQL主从复制的失败自动切换,参见“使用Keepalived实现MySQL主从高可用”。本篇介绍如何利用Heartbeat来完成相同的功能。
1815 0
|
Shell
高可用检测脚本failover.sh
#!/bin/sh VIP="10.0.0.1" DEV="eth0" healthcheck(){ ping -c 1 -w 1 $VIP >/dev/null return $? } ip_takeover(){ MAC=`ip link sho...
1145 0