1、什么是MHA

MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在较大程度上保证数据的一致性,以达到真正意义上的高可用。

2、MHA工作原理


MHA简介_MySQL


  1. 当master出现故障时,通过对比slave之间I/O线程读取master上binlog的位置,选取最接近的slave做为最新的slave(latest slave)。
  2. 其它slave通过与latest slave对比生成差异中继日志,并应用
  3. 在latest slave上应用从master保存的binlog,同时将latest slave提升为master
  4. 最后在其它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的脚本触发,无需人手操作