MHA masterha manager检测master及failover处理说明
masterha_manager按照设置频率(ping_interval)定期检测 master 的访问情况, 超过3次检测失败则调用 master_ip_failover_script,master_ip_online_change_script和masterha_master_switch脚本提升一个slave为新的master, 老的master独立出来,供DBA手动操作或者恢复; 详见: https://code.google.com/p/mysql-master-ha/wiki/masterha_manager
masterha_manager检测分为3部分: ping检测, ssh检测, MySQL connection检测;
- MySQL connection检测: 使用init_conf_load_script参数提供的账号信息连接MySQL,成功则master->slave关系正常,失败转到ssh检测;
- SSH检测: 在MySQL检测失败的情况下,继续检测ssh连接性,正常通信则拷贝binlog文件为提升新master做准备,失败则宣告master为dead状态,后续的slave提升会忽略该主机的binlog信息;
- PING检测: 通用检测项,按照ping_interval参数定期ping master主机;
masterha_manager循环检测,直到做一次主从切换(不论切换成功或失败)就退出(退出后发送报告,report_script参数指定); 调用unix daemonize让masterha_manager命令检测作为守护进程运行:
#yum install daemonize
/web/scripts/mha_monitor/
├── 3306.lock
├── 3306.log
├── 3306.pid
└── run_3306 #一对主从,按照端口号区分
#!/bin/bash
daemonize -p /web/scripts/mha_monitor/3306.pid -l /web/scripts/mha_monitor/3306.lock /usr/bin/masterha_manager --global_conf=/etc/masterha/app_default.cnf --conf=/etc/masterha/app_<name>.conf >> /web/scripts/mha_monitor/3306.log 2>&1
详细的检测输出见: /web/masterhalog/app_
总结: 在master不可访问(不管是手工shutdown还是主机或服务崩溃)的时候,masterha_manager会做主从切换, 该点需牢记, 后面如果有手工shutdown却不想切换的操作,可能会掉坑里。非重要业务不要使用该脚本, 出问题后在线切换主从即可; 重要业务可考虑使用,服务或主机崩溃不可访问的时候 30s 左右就可以切换完成。自动切换需考虑InnoDB预热问题(后面处理).