Mysql-MHA 高可用集群部署与切换
1. 配置 MHA-Manager 管理器# 解压 MHA 安装包 [rootmha ~]# unzip MHA-7.zip [rootmha ~]# cd MHA-7/ # 安装依赖环境 [rootmha MHA-7]# dnf install perl perl-DBD-MySQL perl-CPAN -y [rootmha MHA-7]# cpan # 在 cpan 交互界面中依次执行以下命令 cpan[1] install Config::Tiny cpan[2] install Log::Dispatch cpan[3] install Mail::Sender # 指定 Mail::Sender 默认值 Specify defaults for Mail::Sender? (y/N) y Default encoding of message bodies (N)one, (Q)uoted-printable, (B)ase64: n cpan[4] install Parallel::ForkManager cpan[5] exit [rootmha MHA-7]# rpm -ivh mha4mysql-manager-0.58-0.el7.centos.noarch.rpm mha4mysql-node-0.58-0.el7.centos.noarch.rpm --nodeps2. 在 Slave 节点安装 MHA-Node 软件# 循环分发 RPM 包到所有数据库节点 (10, 20, 30) 并安装 [rootmha MHA-7]# for i in 10 20 30 do scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm root172.25.254.$i:/mnt ssh -l root 172.25.254.$i rpm -ivh /mnt/mha4mysql-node-0.58-0.el7.centos.noarch.rpm --nodeps done3. 修改 MHA-Manager 中的检测代码[rootmha MHA-7]# vim /usr/share/perl5/vendor_perl/MHA/NodeUtil.pm 199 #sub parse_mysql_major_version($) { 200 # my $str shift; 201 # my $result sprintf( %03d%03d, $str ~ m/(\d)/g ); 202 # return $result; 203 #} sub parse_mysql_major_version($) { my $str shift; my nums $str ~ m/(\d)/g; my $result sprintf( %03d%03d, $nums[0]//0, $nums[1]//0); return $result; }4. 为 MHA 建立远程登录用户# 在 Master 主机中创建用于复制和管理的用户 mysql create user root% identified with mysql_native_password by lee; mysql GRANT ALL ON *.* TO root% ;5. 生成并修改 MHA-Manager 配置文件# 创建配置目录 [rootmha MHA-7]# mkdir /etc/masterha/ -p [rootmha MHA-7]# tar zxf mha4mysql-manager-0.58.tar.gz [rootmha MHA-7]# cd mha4mysql-manager-0.58 # 合并默认配置模板生成 app1.cnf [rootmha mha4mysql-manager-0.58]# cat samples/conf/masterha_default.cnf samples/conf/app1.cnf /etc/masterha/app1.cnf # 编辑配置文件定义服务器角色和网络信息 [rootmha mha4mysql-manager-0.58]# vim /etc/masterha/app1.cnf # 关键配置项示例 # [server default] # userroot # passwordlee # ssh_userroot # repl_userlee # repl_passwordlee # master_binlog_dir /data/mysql # [server1] hostname172.25.254.10 candidate_master1 # [server2] hostname172.25.254.20 candidate_master1 # [server3] hostname172.25.254.30 no_master16. 检测环境健康状态# 检测 SSH 互信是否正常 [rootmha mha4mysql-manager-0.58]# masterha_check_ssh --conf/etc/masterha/app1.cnf # 检测 MySQL 复制状态是否正常 [rootmha mha4mysql-manager-0.58]# masterha_check_repl --conf/etc/masterha/app1.cnf7. 在 Slave 中安装 MHA-Node 软件依赖# 在所有数据库主机中安装 Perl 依赖 [rootmysql-node1~3 ~]# dnf install perl perl-DBD-MySQL perl-CPAN -y # 安装 CPAN 模块 (Config::Tiny, Log::Dispatch, Mail::Sender, Parallel::ForkManager) [rootmysql-node1~3 ~]# cpan # ... (交互安装过程同上) ... # 验证模块是否安装成功 [rootmysql-node1~3 ~]# perl -MConfig::Tiny -e print OK\n [rootmysql-node1~3 ~]# perl -MLog::Dispatch -e print OK\n [rootmysql-node1~3 ~]# perl -MMail::Sender -e print OK\n [rootmysql-node1~3 ~]# perl -MParallel::ForkManager -e print OK\n 8. 集群切换操作手动切换# 场景一Master 无故障切换在线切换 # 执行切换命令将 Master 切换到 172.25.254.20 [rootmha ~]# masterha_master_switch \ --conf/etc/masterha/app1.cnf \ --master_statealive \ --new_master_host172.25.254.20 \ --new_master_port3306 \ --orig_master_is_new_slave \ --running_updates_limit10000 # 根据提示输入 yes 确认执行 # 场景二Master 故障后切换 # 模拟 Master 宕机后的手动故障转移 [rootmha ~]# masterha_master_switch \ --master_statedead \ --conf/etc/masterha/app1.cnf \ --dead_master_host172.25.254.10 \ --dead_master_port3306 \ --new_master_host172.25.254.20 \ --new_master_port3306 \ --ignore_last_failover # 根据提示输入 yes 确认执行9. 故障恢复与自动切换# 故障恢复删除切换锁文件并重新配置原 Master 为 Slave [rootmha ~]# rm -fr /etc/masterha/app1.failover.complete [rootmysql-node2 ~]# mysql -uroot -plee -e reset slave; [rootmysql-node1 ~]# /etc/init.d/mysqld start [rootmysql-node1 ~]# mysql -uroot -plee -e CHANGE MASTER TO MASTER_HOST172.25.254.20, MASTER_USERlee, MASTER_PASSWORDlee, MASTER_AUTO_POSITION1; [rootmysql-node1 ~]# mysql -uroot -plee -e start slave; # 开启自动切换功能 [rootmha ~]# /etc/masterha/*.log # 后台启动 MHA Manager 监控进程 [rootmha ~]# masterha_manager --conf/etc/masterha/app1.cnf 切换前切换后10. VIP 功能及启动切换脚本配置# 复制 VIP 切换脚本到配置目录 [rootmha ~]# mkdir /etc/masterha/scripts [rootmha ~]# cp MHA-7/master_ip_* /etc/masterha/scripts # 修改配置文件启用脚本 [rootmha ~]# vim /etc/masterha/app1.cnf # 添加以下行 # master_ip_failover_script /etc/masterha/scripts/master_ip_failover # master_ip_online_change_script /etc/masterha/scripts/master_ip_online_change # 修改脚本中的 VIP 地址 [rootmha ~]# vim /etc/masterha/scripts/master_ip_failover # 设置 my $vip 172.25.254.100/24; [rootmha ~]# vim /etc/masterha/scripts/master_ip_online_change # 设置 my $vip 172.25.254.100/24; # 手动绑定 VIP 测试 [rootmysql-node1 ~]# ip a a 172.25.254.100/24 dev eth0

相关新闻

灵机一物AI智能电商小程序:产品化架构与全场景功能解析

灵机一物AI智能电商小程序:产品化架构与全场景功能解析

本文基于灵机一物AI智能电商小程序真实项目整理,聚焦产品层面的架构逻辑、功能体系与用户价值,全程避开晦涩底层技术,用通俗的产品语言拆解这款多智能体协同智能电商平台,适合产品经理、开发者、电商从业者快速吃透核心架构与落地…

2026/7/5 1:39:11 阅读更多 →
编程题:实现汽车租赁公司汽车出租方案

编程题:实现汽车租赁公司汽车出租方案

首先 创建类叫做 Automobile 然后类下面有属性和方法 属性:brand和plateNumber 方法:计算租金 租金多少不确定因为不确定车型 可以先return0 在方法后面我们可以写子类卡车和巴士 卡车和巴士继承父类 属性由于被private修饰过了 所以要提供getter和setter方法 在属性后面加入 两…

2026/5/17 6:02:02 阅读更多 →
三医联动”数据破局:清医华保如何用AI打通医、保、药数据孤岛?

三医联动”数据破局:清医华保如何用AI打通医、保、药数据孤岛?

引言:政策东风下的数据觉醒随着国家卫健委联合多部门印发《“三医”协同发展和治理协作会商工作规则》,以及海南、北京等地加速推进“三医联动一张网”建设,医疗、医保、医药数据的互联互通已成为深化医改的核心命题。然而,长期以…

2026/7/4 6:34:29 阅读更多 →

最新新闻

Minecraft服务器包创建终极指南:5分钟自动化部署解决方案

Minecraft服务器包创建终极指南:5分钟自动化部署解决方案

Minecraft服务器包创建终极指南:5分钟自动化部署解决方案 【免费下载链接】ServerPackCreator Create a server pack from a Minecraft Forge, NeoForge, Fabric, LegacyFabric or Quilt modpack! 项目地址: https://gitcode.com/gh_mirrors/se/ServerPackCreator…

2026/7/5 1:38:20 阅读更多 →
Python异步代理池实战:从requests阻塞到httpx.AsyncClient,爬虫效率翻倍的踩坑记录

Python异步代理池实战:从requests阻塞到httpx.AsyncClient,爬虫效率翻倍的踩坑记录

一、起因:代理验证拖垮了整个采集系统先交代一下背景。我在一家电商公司做数据采集,核心系统是竞品价格监控——每天爬天猫、京东、拼多多的商品价格,日采集量在几十万到百万级。刚开始做的时候,代理管理这块是比较粗糙的——抓了…

2026/7/5 1:36:20 阅读更多 →
因为刷短视频导致流量费用每个月暴涨5块钱

因为刷短视频导致流量费用每个月暴涨5块钱

上个月有一天流量使用了10G,这几乎不太可能,但是也不是完全不可能。如果120K/s 9个小时不停下载--------------目前就是这个状态。然后就会有4G/天 流量花费一个月下来就是120G,本身流量只有20G,虽然剩下流量不限量,但…

2026/7/5 1:34:19 阅读更多 →
【无人机】基于玻尔兹曼引导的 Q 学习用于在受洪水影响的无线网络中优化 3D 无人机部署附matlab代码

【无人机】基于玻尔兹曼引导的 Q 学习用于在受洪水影响的无线网络中优化 3D 无人机部署附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、算法改进、程序设计科研仿真。🍎完整代码获取 定制创新 论文复现私信🍊个人信条:做科研,博学之、审问之、慎思之、明辨之、…

2026/7/5 1:34:19 阅读更多 →
【无人机动态避障】基于金豺优化算法GJO融合动态窗口法DWA的无人机三维动态避障方法研究MATLAB代码

【无人机动态避障】基于金豺优化算法GJO融合动态窗口法DWA的无人机三维动态避障方法研究MATLAB代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、算法改进、程序设计科研仿真。 🍎完整代码获取 定制创新 论文复现私信 🍊个人信条:做科研,博学之、审问之、慎思之、明辨…

2026/7/5 1:30:17 阅读更多 →
Anthropic Fable 5 Cyber Jailbreak Severity:AI越狱统一评级体系深度解析

Anthropic Fable 5 Cyber Jailbreak Severity:AI越狱统一评级体系深度解析

引言:AI安全的"CVSS时刻" 2026年7月3日,Anthropic正式发布了**Cyber Jailbreak Severity(CJS)**评级体系——这是全球首个针对AI模型"越狱"行为严重程度的标准化评估框架。同一天,Fable 5在经历18天出口管制后重新上线,搭载了一套全新的多层级安全防…

2026/7/5 1:30:17 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻