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章