MySQL高可用架构
# 一、MHA简介
MHA 是 Master High Availability 的缩写,直译过来就是“主机高可用”。它是一款当前主流的相对成熟的MySQL高可用方案之一,能做到在0~30s内自动完成MySQL的failover,在Master服务器不宕机的情况下,基本能保证数据的一致性
# 二、MHA工作原理
# 2.1、MHA的组成
MHA Manager(管理节点)
MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在master-slave集群中任意一台机器上,建议单独部署在一台独立的机器上。
MHA Node(数据节点)
MHA Node运行在每台MySQL服务器上,是MHA Manager的员工,接收Manager的命令并执行
# 2.2、MHA故障发现过程
- MHA会每3s向主节点发送一个select 1 的sql语句,看主节点能不能执行成功
- 如果连续ping3都无法通信的话,现在MHA就会认为主节点是存在问题的
- HMA manager会通知所有的从节点,slave1 MHA node,slave2 MHA node等,尝试使用SSH连接主节点
- 如果从节点也无法连接到服务器的时候,就会认为主节点挂掉了,就会执行failover的操作
# 2.3、MHA的工作原理
- 断掉VIP,断掉主从复制
- 从宕机崩溃的master保存二进制日志事件(binlog events)
- 识别含有最新更新的slave
- 应用差异的中继日志(relay log)到其他的slave
- 应用从master保存的二进制日志事件(binlog events)
- 提升一个slave为新的master
- 使其他的slave连接新的master进行主从复制,IP漂移
参考: