MHA failover流程

简介:

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日志并进行多维度分析。
目录
相关文章
|
7月前
|
安全 关系型数据库 MySQL
MHA高可用配置及故障切换
MHA高可用配置及故障切换
52 0
|
11月前
|
监控 算法 关系型数据库
高可用 - 08 Keepalived集群中Master和Backup角色选举策略
高可用 - 08 Keepalived集群中Master和Backup角色选举策略
75 0
|
关系型数据库 MySQL 网络协议
Galera Cluster中节点异常宕机排查
背景 在Group Replication发布之前,MySQL官方复制有异步、半同步。当时弥补全同步的方案,大多数公司会选择Galera cluster,主要有percona server的PXC和MariaDB的MGC两种版本,而且都嵌入到各自的版本中。
2678 0
|
Kubernetes Docker 容器
kubeadm HA master集群master重置故障恢复
文章楔子 对于一个具有HA master的集群来说,发生单点故障通常不会影响集群的正常运行,只要及时复原单点故障,就可以避免潜在的数据、状态丢失。本文旨在指导读者,在kubeadm搭建的HA master集群中,某一master主机遭遇硬件更换、系统重置、k8s配置重置的情况下,应当如何恢复K8s HA master集群。
2756 0
|
关系型数据库 MySQL 测试技术
搭建MHA
安装MySQL 5.7 yum源的配置文件如下 [mysql57-community] name=MySQL 5.7 Community Server baseurl=http://repo.mysql.
1272 0
|
MySQL 关系型数据库 Windows
使用Heartbeat实现MySQL主从高可用
使用Heartbeat实现MySQL主从高可用 前面我们使用Keepalived实现MySQL主从复制的失败自动切换,参见“使用Keepalived实现MySQL主从高可用”。本篇介绍如何利用Heartbeat来完成相同的功能。
1789 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...
1116 0
|
关系型数据库 MySQL 数据中心
|
关系型数据库 MySQL Linux