四十四、MHA工作原理

MHA软件包含如下工具

Manager工具包
mha4mysql-manager-0.56-0.el6.noarch.rpm

masterha_manger        启动MHA 
masterha_check_ssh     检查MHA的SSH配置状况 
masterha_check_repl    检查MySQL复制状况 
masterha_master_monitor  检测master是否宕机 
masterha_check_status   检测当前MHA运行状态 
masterha_master_switch  控制故障转移(自动或者手动)
masterha_conf_host      添加或删除配置的server信息

Node工具包
mha4mysql-node-0.56-0.el6.noarch.rpm
这些工具通常由MHA Manager的脚本触发,无需人为操作

save_binary_logs        保存和复制master的二进制日志 
apply_diff_relay_logs   识别差异的中继日志事件并将其差异的事件应用于其他的
purge_relay_logs        清除中继日志(不会阻塞SQL线程)

MHA工作原理

也叫MHA FailOver过程,FailOver意为故障转移
1、使用masterha_manger脚本启动MHA
2、manager通过masterha_master_monitor脚本(默认4次,间隔ping_interval秒)检测主库是否存活
3、当主库宕机后,选择新的主库(选主过程后续介绍)
4、新主库进行日志恢复,使其数据最接近故障主库的状态
5、使用masterha_conf_host脚本剔除故障主库,建立新主从关系

选主过程

1、查看配置文件中备选主参数,也就是优先级

$ cat /etc/mha/app1.cnf
...
[server2]
hostname=10.154.0.112
port=3306
candidate_master=1  #设置该服务器为备选主库
check_repl_delay=0  #不检查该从库日志量,不设置此参数当备选主库日志量少于故障主库时(通常为100M日志量),不会被选择为新主库

2、选择日志量最接近主库的从库为新主库
3、当日志量一致时,按照配置文件/etc/mha/app1.cnf先后顺序的进行选新主库

日志恢复过程

1、当能SSH到故障主库时
调用save_binary_logs脚本,立即保存缺失部分的binlog到各个从节点进行恢复

2、当不能SSH到故障主库时
调用apply_diff_relay_logs脚本,计算各从库的relaylog的差异,再在备选主库上恢复

学习来自:B站课程:搭建MHA高可用 P145-146,《MySQL入门与提高实践》第18章

posted @ 2021-04-17 10:07  努力吧阿团  阅读(236)  评论(1编辑  收藏  举报