image-1665468211856

MHA 功能

  • 故障切换
  • 保证故障切换的过程中数据丢失尽可能少
  • 保证故障切换之后,其他从库与新的主库一致

MHA 原理

  • 如果宕机的主库仍可通过SSH连接,MHA会保存主库的binlog
  • 根据从库的binlog位置,找到包含最新更新的从库作为备用主库
  • 应用差异的relay log到其他从库,保持从库和备用主库数据一致
  • 应用从原主库保存的binlog,并将数据恢复到所有节点
  • 将备用主库晋升为新的主库,并让从库和新主库保持主从关系

原理总结

  • 选择新主库,数据不起,角色切换
  • 恢复过程依赖relay log
    默认情况下,relay log会在SQL thread执行完毕后就自动删除,因此建议设置relay_log_purge=OFF

MHA - MHA Manger1

  • masterha_check_ssh:检查MHA的SSH配置
  • master_check_repl:检查MySQL复制
  • masterha_manager:MHA管理工具
  • master_check_status:检测当前MHA运行状态
  • masterha_master_monitor:监控MySQL主节点状态
  • masterha_master_switch:控制故障转移
  • masterha_conf_host:添加或删除配置的主机信息

MHA组成 - MHA Node

  • save_binary_logs :保存和复制主节点的binlog
  • apply_diff_relay_logs:识别差异的realy log事件并应用于其他从节点
  • purge_relay_logs:清除relay log

MHA部署

主机规划

主机名 角色 安装软件
master 主节点 MySQL,MHA Node
salve-master 从节点,备用主节点 MySQL,MHA Node
slave 从节点 MySQL,MHA Node
mha MHA Manager MHA Manager,MHA Node

Q.E.D.