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

MySQL的MHA高可用

1. 环境准备

  • 前文搭建的一主二从结构
  • 新增centos7当MHA Manager

整体结构:

主机角色IP 地址说明
MHA 管理节点172.25.254.138监控集群、执行故障调度
MySQL 初始主库172.25.254.135故障后下线
MySQL 候选主库172.25.254.136candidate_master=1,故障后自动升级为新主
MySQL 普通从库172.25.254.137no_master=1,仅作为从库,不参与主库竞选

2.实验步骤

2.1 安装centos7虚拟机

镜像地址https://mirrors.cloud.tencent.com/centos-vault/7.9.2009/isos/x86_64/选择CentOS-7-x86_64-Minimal-2009.iso即可满足需求

2.2切换yum源

原因:由于红帽官方已经终止对 CentOS 7 的维护及软件分发服务,系统预装的默认 yum 源会请求 CentOS 官方服务器的常规软件目录;目前 CentOS 7 的安装包整体迁移至归档目录,原有路径下资源大量缺失,继续使用原装源执行yum install时,容易出现连接超时、软件包检索失败、下载中断等问题,无法顺利安装所需的各类依赖组件。 因此我们把系统 yum 源切换至腾讯云镜像源,同时修正源内归档目录路径,依托国内镜像稳定的访问能力,保障后续软件安装、MHA 部署流程正常推进。

切换步骤:

1.备份原有yum源

[root@mha-manager ~]# mkdir -p /etc/yum.repos.d/bak
[root@mha-manager ~]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/

2.切换

#从网络下载文件并指定保存位置
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

虽然中间出现Connection refused,但这没太大影响,这是阿里云普通centos/7旧节点访问受限、部分备用镜像节点端口拦截,yum 具备自动重试、切换其他可用镜像的能力;后面 10 项仓库元数据全部下载完成,末尾输出元数据缓存已建立,代表 yum 缓存构建成功。经验证是可以正常安装软件的。

2.3关闭防火墙和selinux

2.4配置集群ssh免密

1. 在 mha-manager 生成密钥

一路回车即可

2. 把公钥分发到所有 MySQL 节点

免密主库:

其它两个从库以此类推。

3.反向免密

MHA 故障切换时,从库需要主动向管理机传输日志、上报状态,单向免密会导致后续校验失败。 操作示例(以主库为例,两台从库执行同样操作):

总的来说就是先ssh到没有与管理机双向免密的机器上,ssh上后生成密钥,再ssh-copy-id 给管理机即可。

2.4 三台 MySQL 数据库节点统一部署环境

前提条件:

下面这三个rpm包是必须的。

  • epel-release-latest-9.noarch.rpm

作用:部署 EPEL 第三方 yum 源;MHA node 程序运行依赖大量 perl 组件,系统默认源不提供,需要 EPEL 源下载依赖包。部署范围:仅 3 台 MySQL 数据库节点(135、136、137)安装;MHA 管理节点不需要安装

下载地址:Making sure you're not a bot!

  • mha4mysql-node-0.58-0.el7.centos.noarch.rpm

作用:MHA 节点程序;负责收集本机 binlog、中继日志、日志补齐、动态修改主从复制配置,与 manager 节点通信。部署范围:3 台 MySQL 数据库节点(135、136、137)安装

下载地址:https://github.com/yoshinorim/mha4mysql-node/releases/download/v0.58/mha4mysql-node-0.58-0.el7.centos.noarch.rpm

  • mha4mysql-manager-0.58-0.el7.centos.noarch.rpm

作用:MHA 管理端核心程序;负责监控 MySQL 集群、故障判定、调度所有 node 节点执行故障转移、输出转移日志。部署范围:仅 MHA 管理节点单独安装;三台 MySQL 节点不安装

下载地址:https://github.com/yoshinorim/mha4mysql-manager/releases/download/v0.58/mha4mysql-manager-0.58-0.el7.centos.noarch.rpm

2.5 三台 MySQL 节点搭建初始主从复制(初始拓扑:135 为主,136、137 为从)

在三台 MySQL 节点登录 MySQL,创建复制账号 repl、MHA 管理账号 mha:

CREATE USER repl@'%' IDENTIFIED BY 'Repl@123456'; GRANT REPLICATION SLAVE ON *.* TO repl@'%'; CREATE USER mha@'%' IDENTIFIED BY 'Mha@123456'; GRANT ALL ON *.* TO mha@'%'; FLUSH PRIVILEGES;

在 136、137 两台从库配置复制,指向初始主库 135:

CHANGE MASTER TO MASTER_HOST='172.25.254.135', MASTER_USER='repl', MASTER_PASSWORD='Repl@123456', MASTER_AUTO_POSITION=1; START SLAVE;

校验复制状态:

show slave status\G

预期结果:两台从库全部Slave_IO_Running: Yes,Slave_SQL_Running: Yes

常见问题:从库 Slave_IO_Running: No,无法连接主库

解决:检查防火墙 3306 端口、repl 账号密码、MySQL 地址解析;主库开启 skip_name_resolve 优化。

2.6MHA 管理节点配置集群、校验、启动监控(仅 mha-manager 执行)

1.创建目录,编写 MHA 配置文件/etc/mha/app1.cnf,定义各个数据库节点、候选主、VIP 脚本路径。

[server default] user=mha password=Mha@123456 repl_user=repl repl_password=Repl@123456 ssh_user=root manager_workdir=/var/log/mha/app1 manager_log=/var/log/mha/app1/manager.log remote_workdir=/var/log/mha/app1 ping_interval=3 [server1] hostname=172.25.254.135 port=3306 candidate_master=1 [server2] hostname=172.25.254.136 port=3306 candidate_master=1 [server3] hostname=172.25.254.137 port=3306 no_master=1

密码和hostname记得根据实际。

2.SSH 互通校验(依托前期免密)

masterha_check_ssh --conf=/etc/mha/app1.cnf3.如果结果报ok就说明免密成功。

3.MySQL 主从复制状态校验

masterha_check_repl --conf=/etc/mha/app1.cnf

4.启动MHA监控

nohup masterha_manager --conf=/etc/mha/app1.cnf & # 实时查看转移日志 tail -f /var/log/mha/app1/manager.log

3.实验

模拟主库宕机,在主库执行systemctl stop mysqld。

管理机报错:

自动切换成功:

验证:

在slave2上,主从仍然有效,且主库切换为slave1。

http://www.jsqmd.com/news/1257367/

相关文章:

  • TranslucentTB 开机启动配置终极指南:解决灰色选项与系统兼容性问题
  • 5分钟掌握Adobe-GenP 3.0:设计师必备的免费Adobe全家桶激活神器
  • 3步快速解锁Steam创意工坊:WorkshopDL免费下载器终极指南
  • AI通识指南:从基础概念到实践应用
  • 广州品牌出海企业做GEO服务商怎么选?2026本地靠谱选型指南与五家服务商深度测评 - 子柔传媒
  • AI如何提升学术写作效率:智能工具实战解析
  • UE5 Lyra Character 模块深度剖析——从一张空地图到一个活生生的角色
  • 终极指南:XiaoMusic如何彻底解放小爱音箱的音乐播放限制
  • 零基础怎么学网络安全,从入门到能干活的具体路线
  • 2026全民寄件省钱攻略:告别驿站高价!多场景通用便宜寄快递实用指南 - 优企甄选
  • 抖音内容收藏革命:3分钟搭建个人无水印视频库的完整方案
  • 福州甲醛检测怎么选?2026新政后CMA实验室的标准、流程、价格与避坑指南——福州闽环测研甲醛检测中心 - 衡境测研
  • 从硬件到软件:深度解析ADS8353/7853 ADC评估板实战应用
  • WarcraftHelper插件:5大功能全面优化你的魔兽争霸III游戏体验
  • UE5程序化内容生成(PCG)实战:五步构建自动化游戏关卡
  • DeepSeek LeetCode 3686. 稳定子序列的数量 Java实现
  • 专业解锁中兴光猫工厂模式:zteOnu工具实战指南
  • 2026北京朗格回收哪家口碑好?尚典萨克森/奥德修斯鉴定实力过硬,这份本地测评榜单给出答案 - 奢品流通笔谈
  • 本地大语言模型调优实战:显存管理与输出质量优化
  • Claude Team计划门槛降至2人:小团队AI协作成本与功能全解析
  • 图神经网络反爬对抗:从GCN检测模型到鲁棒性防御的攻防博弈
  • 广州汽车用品服务企业做GEO服务商怎么选?2026本地靠谱选型指南与深度测评 - 企业新闻快传
  • 不想只做脚本小子,网络安全进阶必须掌握的编程与审计技能
  • 给 AI Agent 的 Skill 装上”自我进化”引擎:一套可落地的优化闭环方案
  • Switch游戏安装终极指南:3分钟学会所有格式兼容方法
  • OpenAI布局AI广告业务:技术优势、挑战与商业化路径分析
  • 宁德甲醛检测怎么选?2026新政后CMA实验室的标准、流程、价格与避坑指南——宁德闽环测研甲醛检测中心 - 衡境测研
  • 低资源语言大模型如何破解文化纠缠同形异义词挑战
  • MCP协议无状态会话设计:原理、实现与分布式部署实践
  • AI训练数据质量危机:高质量书籍如何解决模型崩溃与数据污染