当前位置: 首页 > 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能在较大程度上保证主从数据库数据的一致性,以达到真正意义上的高可用。  

搭建教程地址:手把手教你搭建MySQL高可用解决方案(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)和告警系统,形成完整的高可用保障体系。

相关文章:

  • hadoop中的序列化和反序列化(3)
  • C# WPF 颜色拾取器
  • AI与情感计算:如何让机器更好地理解人类情感与情绪?
  • CATIA高效工作指南——零件建模篇(二)
  • docker host模式问题
  • 二叉树与优先级队列
  • android中背压问题面试题及高质量回答范例
  • 怎么有效管理项目路径(避免使用绝对路径)
  • AI应用开发实战分享
  • 掌握Multi-Agent实践(一):使用AgentScope实践入门和Workstation上手指南
  • QT6 源(84):阅读与注释时间类型 QTime,源代码以及属性测试
  • 5.7线性动态规划1
  • Ubuntu 安装 Keepalived、LVS
  • ROS1和ROS2使用桥接工具通信
  • leeCode算法之独一无二出现次数
  • 自由浮动时间和总浮动时间对比
  • 贷中业务提额、降额策略
  • (eNSP)策略路由实验配置
  • Java中有哪些锁?
  • OpenShift AI - 模型注册管理
  • 动物只有在被认为对人类有用时,它们的建筑才会被特别设计
  • 吴清:巴菲特即将退休,但价值投资、长期投资、理性投资、努力回报投资者等理念不会退休
  • 联合国秘书长吁印巴“最大程度克制”,特朗普:遗憾,希望尽快结束冲突
  • 最新研究:基因编辑治疗晚期胃肠道癌显成效
  • 印巴冲突升级,巴防长称已击落5架印度战机
  • 一揽子十条货币政策措施出炉:降准降息,设立五千亿服务消费与养老再贷款