MHA从启动到宕机处理的工作过程:
MHA从启动到宕机处理的工作过程:
Manager启动:
1读取--conf=.etc/mha/appl.cnf配置文件,获取配置信息
2获取到MHA的node节点相关信息(一主两从)
3调用脚本masterha_check_ssh脚本,通过ssh_user=root用户进行ssh互信检查
4调用masterha_chech_repl检查主从复制情况
5启动manager管理软件通过脚本masterha_master_monitor以ping_interval=2时间为间隔,持续监控主库的状态
6当manager监控到主库master宕机后开始选主,选主的过程算法如下:
算法1:判断是否有<<强制主>>参数,如果有设置就将其设为主库,如果没有设置主参数就执行算法2
算法2:判断两个从库谁更新,将最新的设为主库,如果两个从库一样新就执行算法3
算法3:按照配置文件的书写顺序来选主例如配置文件中的serverl,server2,server3
7当新主库选好后,就判断宕机前的主库是否能够ssh通,如果能联通,就通过脚本save_binary_logs将缺失部分的binlog立即保存到本地另外两台好的机器中。如果之前的主机不能ssh通,就判断是否开了gtid主从复制:
如果没有开gtid主从:
那么manager软件就会调用脚本apply_diff_relay_logs计算两台好机器的relay-log的差异,通过内容进行复杂的对比,
如果开gtid主从:
Manager软件也需要调用脚本apply_diff_relay_logs计算两计算两台好机器的relay-log的差异,只不过他对比的是gtid号而不是内容,效率更高。
最后进行数据补偿
8数据补偿之后,解除某一天机器从库的身份,将其变为主库,然后将另外一台从库的指针从新指向新的Master主库,构建新的主从关系。
9移除配置文件中的故障节点
10manager工作完成,软件执行程序自动退出(manager属于一次性的高可用)
额外的功能:
1提供了Binlog Server,实时的在异地保存主库的二进制日志,如果主库连不上,就让从库自动读这个文件。
2应用透明vip飘逸命令,自动实现让网站程序指向新的主库
3由于manager属于一次性的高可用,因此MHA自带了一个send_report功能要实时通知管理员
4自愈(待开发)

浙公网安备 33010602011771号