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.