Mysql高可用MHA架构
一 什么是MHA
MHA是小日子过得还不错的霓虹国程序员yoshinorim开发的MySQL高可用方案
- 采用Perl语言开发
- MHA是最成熟MySQL高可用方案
其架构图如下:
基于最基本的主从Mysql架构,其缺少了很关键的东西就是高可用,mysql本身的主从架构,当主节点宕机,从节点是不会自主升级为主节点的,所以MHA在原集群下,新增了1和2:
- 虚拟ip
- MHA manager
- binlog server - 对主服务器的binlog进行同步,保存当前最完整的东西
我们来看一下MHA包含了哪些东西:
二 MHA的故障发现与转移
如上图,其流程如下:
- MHA每3s就会ping一次我们的主节点
- 如果3次都没法通讯,即认为该节点可能存在故障
- 此时manager会通过mha node通知从属节点通过ssh链接主服务器
- 如果两个从服务器都连接不上,即认为master宕机
- 此时manager会切断所有与master相关的连接(与slave的连接,与vip的绑定)
- manager通过ssh抽取binlog server的binlog日志
- manager会开始转移过程,通过差异化比对,找到日志最新的slave,进行差异同步,将最新的slave日志同步到各slave
- 最后manger将master的binlog差异化更新到每一个节点
- 选主,选主方式有三种:如下图
- 选举得到新的maser之后,将slave的master指向新master,master同步binlog server
- 自动将vip漂移到新的主机
- 原有的master在恢复服务能力后,会自动降级为slave指向新的master