Mysql高可用MHA架构

一 什么是MHA

MHA是小日子过得还不错的霓虹国程序员yoshinorim开发的MySQL高可用方案

  1. 采用Perl语言开发
  2. MHA是最成熟MySQL高可用方案

其架构图如下:

![image](images/P_-La-TZGdPeuQYxbTWcnEbHzQ2dFC0Dj0VrLw8IK3w.png)

基于最基本的主从Mysql架构,其缺少了很关键的东西就是高可用,mysql本身的主从架构,当主节点宕机,从节点是不会自主升级为主节点的,所以MHA在原集群下,新增了1和2:

  1. 虚拟ip
  2. MHA manager
  3. binlog server - 对主服务器的binlog进行同步,保存当前最完整的东西

我们来看一下MHA包含了哪些东西:

![image](images/HQlHPZa7NkrsVxxDX8yIpRCppmjNx2B39DaWZlSODzI.png)

二 MHA的故障发现与转移

![image](images/O2s0vjryPQ2C71B8s4ij5M7zHwww-ym90i3st37XdcM.png)

如上图,其流程如下:

  1. MHA每3s就会ping一次我们的主节点
  2. 如果3次都没法通讯,即认为该节点可能存在故障
  3. 此时manager会通过mha node通知从属节点通过ssh链接主服务器
  4. 如果两个从服务器都连接不上,即认为master宕机
  5. 此时manager会切断所有与master相关的连接(与slave的连接,与vip的绑定)
  6. manager通过ssh抽取binlog server的binlog日志
  7. manager会开始转移过程,通过差异化比对,找到日志最新的slave,进行差异同步,将最新的slave日志同步到各slave
  8. 最后manger将master的binlog差异化更新到每一个节点
  9. 选主,选主方式有三种:如下图

![image](images/13lE1kWK2c5WvLO2COI_2ANjVSSjkEy91Ds11GztJO4.png)

  1. 选举得到新的maser之后,将slave的master指向新master,master同步binlog server
  2. 自动将vip漂移到新的主机

![image](images/1-BuoYzTaH9vZZiFXRSuGKv2iUiCeb7ji3om7abk5B4.png)

  1. 原有的master在恢复服务能力后,会自动降级为slave指向新的master

三 总结

![image](images/69QqI1uCwJqmP7nD5fNG8MO-NT30souPGp_oVq-R3rU.png)

Last modification:July 5, 2022
If you think my article is useful to you, please feel free to appreciate