news 2026/8/6 5:55:05

部署 MHA 高可用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
部署 MHA 高可用

目录

一、MySQL MHA

1.1 什么是MHA

1.2 MHA的组成

1.3 MHA的特点

1.4 MHA的工作原理

二、搭建MySQL MHA

2.1 环境

2.2 准备工作

2.3 安装MHA

2.4 在所有服务器上配置无密码认证

2.5 在manager节点上配置MHA

2.6 第一次配置需要在Master节点上手动开启虚拟IP

2.7 在manager节点上测试ssh

2.8 在manager节点上测试mysql主从连接

2.9 在manager节点上启动MHA

2.10 查看MHA状态

2.11 查看MHA日志

2.12 查看master VIP

2.13 MHA故障模拟

2.14 故障恢复

三、总结


一、MySQL MHA

1.1 什么是MHA

MHA(Master High Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制

的软件。

MHA 的出现就是解决MySQL 单点的问题。

MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。

MHA能在故障切换的过程中最大程度上保证数据的一致性,以达到真正意义上的高可用。

1.2 MHA的组成

1、MHA Node(数据节点)

MHA Node 运行在每台 MySQL 服务器上。

2、MHA Manager(管理节点) 检测

MHA Manager 可以单独部署在一台独立的机器上,管理多个 master-slave 集群;

也可以部署在一台 slave 节点上。

MHA Manager 会定时探测集群中的 master 节点。当 master 出现故障时,它可以

自动将最新数据的 slave 提升为新的 master 然后将所有其他的 slave 重新指向新的

master。整个故障转移过程对应用程序完全透明。

1.3 MHA的特点

1、自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度

的保证数据不丢失

2、使用半同步复制,可以大大降低数据丢失的风险,如果只有一个slave已经收到了

最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器

上,因此可以保证所有节点的数据一致性

3、目前MHA支持一主多从架构,最少三台服务,即一主两从

1.4 MHA的工作原理

1、从宕机崩溃的master 保存二进制日志事件(binlog events);

2、识别含有最新的更新 slave 日志

3、应用差异的中继日志(relay log)到其他的slave

4、应用从master保存的二进制日志事件

5、提升一个 salve 为新的master

6、使其他的slave连接行的master 进行复制。

二、搭建MySQL MHA

2.1 环境

1、MHA manager 节点服务器:CentOS7.6(64 位) manager/10.8.0.104 ,安装MHA node和 manager 组件

2、Master 节点服务器:CentOS7.6(64 位) mysql1/10.8.0.110 ,安装mysql5.7、MHA node组件

3、Slave1 节点服务器:CentOS7.6(64 位) mysql2/10.8.0.100 ,安装mysql5.7、MHA node组件

4、Slave2 节点服务器:CentOS7.6(64 位) mysql3/10.8.0.102 ,安装mysql5.7、MHA node组件

5、主从复制

2.2 准备工作

1、主从复制后将两个从库设置为只读模式

2、插入数据测试数据库同步

主库

从库

2.3 安装MHA

1、在所有服务器上安装MHA依赖环境

2、在所有服务器上安装node组件

3、在MHA manager节点上安装manager组件(10.8.0.104)

2.4 在所有服务器上配置无密码认证

1、在manager节点上配置所有数据库节点的无密码认证

2、在master节点上配置slave1和slave2节点的无密码认证

3、在slave1上配置数据库节点master和slave2的无密码认证

4、在slave2上配置数据库节点master和slave1的无密码认证

2.5 在manager节点上配置MHA

1、在 manager 节点上复制相关脚本到/usr/local/bin 目录

生成4个执行文件

2、复制master_ip_failover文件到/usr/local/bin目录下

3、修改master_ip_failover文件

添加内容

4、创建 MHA 软件目录并拷贝配置文件,这里使用app1.cnf配置文件来管理 mysql 节

点服务器

5、修改app1.cnf配置文件

2.6 第一次配置需要在Master节点上手动开启虚拟IP

2.7 在manager节点上测试ssh

2.8 在manager节点上测试mysql主从连接

2.9 在manager节点上启动MHA

2.10 查看MHA状态

2.11 查看MHA日志

2.12 查看master VIP

2.13 MHA故障模拟

1、关闭master节点的Mysql,正常自动切换一次后,MHA进程会退出。HMA会自动修改app1.cnf文件内容,将宕机的 master 节点删除。查看slave1是否接管VIP

2.14 故障恢复

1、master节点开启mysql服务

2、在slave1节点上查看

3、在原主服务器上执行同步操作

4、在 manager节点上修改配置文件app1.cnf(再把这个记录添加进去,因为它检测掉失

效时候会自动消失)
5、manager节点上启动MHA

三、总结

  1. 环境准备:基于CentOS 7.6搭建一主两从(10.8.0.110为主,10.8.0.100/102为从)架构,并配置MySQL主从复制,将从库设为只读。

  2. 组件安装:在所有节点安装MHA依赖环境,并分别在Master/Slave节点安装node组件,在Manager节点安装manager组件。

  3. 核心配置:配置各节点间的SSH无密码认证,复制并修改MHA配置文件app1.cnf,手动开启虚拟IP。

  4. 启动与测试:通过masterha_check_ssh检查连通性,随后在Manager节点后台启动MHA服务。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/6 5:54:50

Element Plus Timeline组件横向布局改造:CSS深度覆盖与响应式实践

1. 项目概述与需求拆解最近在做一个后台管理系统的仪表盘,需要展示一个项目从立项到上线的关键里程碑。产品经理给的原型图上,这个里程碑列表是横向排列的,看起来更现代,也更节省纵向空间。我第一反应就是去用 Element Plus 的 Ti…

作者头像 李华
网站建设 2026/8/6 5:53:01

中介孟德尔随机化:从因果推断到机制解析的完整指南

1. 项目概述:为什么“中介孟德尔随机化”值得期待?如果你在流行病学、遗传学或者临床研究领域摸爬滚打过几年,听到“中介孟德尔随机化”这个词,大概率会和我一样,有种“终于等到你”的感觉。这玩意儿不是什么全新的魔法…

作者头像 李华
网站建设 2026/8/6 5:48:55

拼多多批量开票为什么还要一张张点?我做了个“多多开票助手”

申请一张发票不难,但处理五十张采购订单的发票申请,却成了许多采购人员、代发卖家的‘老大难’问题,有没有办法让这件事变得简单?先说明一下:多多开票助手是我参与开发的一款第三方 Chrome 浏览器扩展,面向…

作者头像 李华
网站建设 2026/8/6 5:47:54

海塞矩阵:从数学本质到深度学习优化的核心工具

1. 项目概述:为什么我们需要深入理解海塞矩阵?在机器学习和优化领域,我们经常听到梯度下降、牛顿法这些耳熟能详的名字。梯度告诉我们函数在某个点上升最快的方向,这很好理解,就像爬山时感觉最陡峭的坡。但当你真正站在…

作者头像 李华
网站建设 2026/8/6 5:47:30

品牌做种草,先选小红书还是抖音?关键看产品处在哪个阶段

品牌做种草,先选小红书还是抖音?关键看产品处在哪个阶段很多品牌做种草时,第一反应是问:小红书和抖音,到底应该先投哪个?这个问题不能只从平台流量大小来判断。真正要先想清楚的是:产品现在处在…

作者头像 李华