1、什么是MHA
MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在较大程度上保证数据的一致性,以达到真正意义上的高可用。
2、MHA工作原理
- 当master出现故障时,通过对比slave之间I/O线程读取master上binlog的位置,选取最接近的slave做为最新的slave(latest slave)。
- 其它slave通过与latest slave对比生成差异中继日志,并应用。
- 在latest slave上应用从master保存的binlog,同时将latest slave提升为master。
- 最后在其它slave上应用相应的差异中继日志并开始从新的master开始复制.
3、MHA组件
-
MHA Manager(管理节点)
MHA Manager可以单独部署在一*立的机器上管理多个master-slave集群,也可以部署在一台slave节点上。 -
MHA Node(数据节点)
MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。整个故障转移过程对应用程序完全透明。
4、MHA组件介绍
- MHA Manager
运行一些工具,比如masterha_manager工具实现自动监控MySQL Master和实现master故障切换,其它工具手动实现master故障切换、在线mater转移、连接检查等等。一个Manager可以管理多 个master-slave集群
- MHA Node
部署在所有运行MySQL的服务器上,无论是master还是slave。主要有三个作用:
1)保存二进制日志
如果能够访问故障master,会拷贝master的二进制日志
2)应用差异中继日志
从拥有最新数据的slave上生成差异中继日志,然后应用差异日志。
3)清除中继日志
在不停止SQL线程的情况下删除中继日志
5、MHA中工具介绍
㈠ Manager工具
工具 |
说明 |
masterha_check_ssh |
检查MHA的SSH配置 |
masterha_check_repl |
检查MySQL复制 |
masterha_manager |
启动MHA |
masterha_check_status |
检测当前MHA运行状态 |
masterha_master_monitor |
监测master是否宕机 |
masterha_master_switch |
控制故障转移(自动或手动) |
masterha_conf_host |
添加或删除配置的server信息 |
㈡ Node工具
工具 |
说明 |
save_binary_logs |
保存和复制master的二进制日志 |
apply_diff_relay_logs |
识别差异的中继日志事件并应用于其它slave |
filter_mysqlbinlog |
去除不必要的ROLLBACK事件(MHA已不再使用这个工具) |
purge_relay_logs |
清除中继日志(不会阻塞SQL线程) |
注意:Node这些工具通常由MHA Manager的脚本触发,无需人手操作。