一.MHA是什么?能干什么的
(1)以Perl语言写的一套Mysql故障切换方案,一个脚本管理工具
(2)保障数据库的高可用性
(3)修复多个slave之间的差异日志,最终使所有的slave保持数据一致
(4)能在0-30秒内选定新Master,实现mysql故障转移
二.MHA组成部分
MHA manager 管理节点
可以部署在一台单独的机器上,管理多套一主多从的集群,也可以部署在一台slave之上,作用:
(1)运行一些管理和监控工具
(2使用masterha_manager工具自动监控mysql master和实现master故障切换
(3以及手工实现master故障切换、在线master转移、连接检查等
MHA node 数据节点
必须部署在每个独立的Mysql服务器之上,包括master和slave,作用:
(1)保存二进制日志binlog
如果能够访问故障的master,即mysqld挂了,ssh还能连接OS,拷贝master的二进制日志
(2)应用差异中继日志
从拥有最新日志的slave上生成差异中继日志,然后应用差异日志
(3)清除中继日志
在不停止SQL线程的情况下删除中继日志
三.工作原理
(1)当master出现故障时,通过对比slave之间的IO线程读取master binlog的位置,选取最接近的slave作为latest slave
(2)其他slave通过与latest slave对比,生成差异中继日志
(3)在latest slave上应用故障master中保存的binlog(如果能访问ssh),同时将latest slave提升为master
(4)最后在其他slave上应用差异中继日志并开始从新的master进行主从复制