当前位置: 首页 > news >正文

MySQL数据库高可用(MHA)详细方案与部署教程

一:MHA简介

核心功能

二:MHA工作原理

三:MHA组件

四:MHA 架构与工具

MHA架构

Manager关键工具

Node工具

五:工作原理与流程

1: 故障检测

2:  故障切换(Failover)

3 : 切换模式

六:与其他高可用方案对比

七:实际应用场景

八: 总结


 

一:MHA简介

MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在较大程度上保证主从数据库数据的一致性,以达到真正意义上的高可用。  

核心功能

  • 自动故障检测与切换:主库故障时,自动选举最优从库(Slave)晋升为新主库。

  • 数据一致性保障:通过应用未同步的二进制日志(Binlog)补全数据差异。

  • 手动切换支持:支持人工触发主从切换(如维护场景)。

  • 多节点管理:支持管理多个主从复制集群。

二:MHA工作原理

  1. 当master出现故障时,通过对比slave之间I/O线程读取master上binlog的位置,选取最接近的slave做为最新的slave(latest slave)。

  2. 其它的slave通过与latest slave对比生成差异中继日志,并应用。

  3. 在latest slave上应用从master保存的binlog,同时将latest slave提升为master。

  4. 最后在其它slave上应用相应的差异中继日志并开始从新的master开始复制.

三:MHA组件

  • MHA Manager(管理节点)

    MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上。比如masterha_manager工具实现自动监控MySQL Master和实现master故障切换,其它工具手动实现master故障切换、在线mater转移、连接检查等等。一个Manager可以管理多 个master-slave集群

  • MHA Node(数据节点)

    MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。

四:MHA 架构与工具

MHA架构

  • Manager节点:核心控制节点,负责监控主库状态、协调故障切换。

  • Master节点:当前主库,负责处理写请求。

  • Slave节点:从库,复制主库数据,故障切换时可能晋升为新主库。

  • VIP(虚拟IP):可选组件,用于对外提供透明的访问入口。

Manager关键工具

工具说明
masterha_check_ssh检查节点间SSH免密登录配置
masterha_check_repl验证主从复制配置是否正确
masterha_manager启动MHA,主监控进程,持续检查主库健康状态
masterha_check_status检测当前MHA运行状态
masterha_master_monitor监测master是否宕机
masterha_master_switch控制故障转移(自动或手动)
masterha_conf_host添加或删除配置的server信息

Node工具

工具说明
save_binary_logs保存和复制master的二进制日志
apply_diff_relay_logs识别差异的中继日志事件并应用于其它slave
filter_mysqlbinlog去除不必要的ROLLBACK事件(MHA已不再使用这个工具)
purge_relay_logs清除中继日志(不会阻塞SQL线程)

五:工作原理与流程

1: 故障检测

  • Manager节点 定期通过 ping 或执行SQL命令(如 SELECT 1)检测主库存活状态。

  • 若主库连续无响应,触发 故障判定

2:  故障切换(Failover)

  1. 选举新主库

    • 选择数据最接近原主库的从库(通过对比 SHOW SLAVE STATUS 中的 Exec_Master_Log_Pos)。

    • 优先选择已开启 log_slave_updates 的从库(确保其Binlog完整)。

  2. 数据补全

    • 从原主库服务器(若可访问)或存活的从库获取未同步的Binlog。

    • 将缺失的Binlog事件应用到新主库,确保数据一致性。

  3. 切换拓扑

    • 将其他从库指向新主库,重建复制关系。

    • 更新应用连接的VIP或配置,指向新主库。

3 : 切换模式

  • 自动切换(Automatic Failover):主库不可用时自动触发。

  • 手动切换(Manual Switchover):人工干预,常用于维护场景。

六:与其他高可用方案对比

方案MHAGalera ClusterInnoDB Cluster
架构主从复制+自动切换多主同步复制基于Group Replication
数据一致性最终一致性强一致性强一致性
复杂度
适用场景读写分离,主库故障切换多活写入,低延迟云原生集成,自动化管理

七:实际应用场景

  1. 电商大促:主库突发故障时,快速切换保障订单交易。

  2. 金融系统:通过Binlog补全确保账户余额一致性。

  3. 物联网日志存储:读写分离架构下主库宕机不影响数据写入。

八: 总结

MHA 是MySQL主从架构下简单高效的高可用解决方案,尤其适合对数据一致性要求较高且运维资源有限的场景。尽管其功能不如Galera或InnoDB Cluster全面,但在传统主从复制架构中仍具有不可替代的价值。实际使用中需结合监控工具(如Prometheus)和告警系统,形成完整的高可用保障体系。

http://www.xdnf.cn/news/329797.html

相关文章:

  • 国标GB28181视频平台EasyGBS打造电力行业变电站高效智能视频监控解决方案
  • 统计匹配的二元组个数 - 华为OD机试真题(A卷、JavaScript题解)
  • 宝塔面板,删除项目后还能通过域名进行访问
  • 从人脸扫描到实时驱动,超写实数字分身技术解析
  • Go语言中的并发编程--详细讲解
  • 【赵渝强老师】TiDB的备份恢复策略
  • 将本地项目提交到新建的git仓库
  • 【性能工具】一种简易hook bitmap创建的插件使用
  • Docker + Watchtower 实现容器自动更新:高效运维的终极方案
  • 算法研习:最大子数组和问题深度剖析
  • YOLO-POSE 姿态扩充
  • CUDA:out of memory的解决方法(实测有效)
  • 心智领航・数启未来 | AI数字化赋能精神心理医疗学术大会重磅来袭,5月10日广州附医华南医院开启智慧对话!
  • 【C++贪心】P9344 去年天气旧亭台|普及
  • Spark处理过程-转换算子和行动算子
  • NumPy 2.x 完全指南【一】简介
  • 混淆矩阵(Confusion Matrix)
  • Qt开发经验 --- 避坑指南(5)
  • python打卡day18
  • Spring MVC中跨域问题处理
  • 把一个过大的文件夹分成若干个 ZIP 分卷
  • 雅努斯问题(Janus Problem)及解决方案
  • 三轴云台之模糊控制算法篇
  • Golang的linux运行环境的安装与配置
  • AB测试面试题
  • MCP学习
  • 行动作用作用
  • 后端返回文件流,前端展示图片
  • 003 系统和入门指令
  • 【基础知识】常见公式计算(三)