MySQL MHA高可用配置是企业级数据库架构中保障业务连续性的核心方案之一,尤其适用于对数据一致性、故障恢复时间(RTO)和数据零丢失(RPO)有严苛要求的数字中台、实时分析平台和可视化决策系统。MHA(Master High Availability)是由日本开发者Yoshinori Matsunobu开发的开源高可用解决方案,专为MySQL主从复制环境设计,能够在主库发生故障时自动完成故障转移,将从库提升为新的主库,并同步其他从库,实现分钟级甚至秒级的故障恢复。
MHA架构由四个关键组件构成,每个组件承担明确职责,协同完成自动化故障检测与切换:
MHA Manager(管理节点)作为控制中枢,MHA Manager部署在独立的服务器上(建议与数据库节点物理隔离),负责监控所有MySQL节点的健康状态。它通过SSH连接到各MySQL实例,定期执行心跳检测,判断主库是否宕机。一旦检测到主库不可达,Manager将自动触发故障转移流程,包括:
MHA Node(代理节点)安装在每台MySQL服务器上(包括主库和从库),负责执行Manager下发的底层操作,如:
MySQL主从复制集群至少包含1主2从的拓扑结构,推荐使用基于GTID的复制方式,以避免传统position-based复制在切换时出现位置错乱。所有从库必须开启log_slave_updates=ON,确保中继日志被记录,以便在主库崩溃后恢复未同步的事务。
虚拟IP(VIP)或DNS动态解析为实现应用层无缝切换,必须配置一个浮动的虚拟IP地址(如使用Keepalived或HAProxy)或通过DNS TTL快速更新。MHA本身不管理VIP,但可通过master_ip_failover_script脚本在切换时自动绑定或解绑VIP,确保前端应用无需修改连接字符串。
| 角色 | IP地址 | 操作系统 | MySQL版本 | 备注 |
|---|---|---|---|---|
| Master | 192.168.1.10 | CentOS 7.9 | 8.0.33 | 主库,写入节点 |
| Slave1 | 192.168.1.11 | CentOS 7.9 | 8.0.33 | 从库,异步复制 |
| Slave2 | 192.168.1.12 | CentOS 7.9 | 8.0.33 | 从库,异步复制 |
| Manager | 192.168.1.20 | CentOS 7.9 | - | 仅部署MHA Manager |
所有节点必须配置互信SSH(无密码登录),确保Manager能远程执行命令。
-- 在主库执行SET GLOBAL gtid_mode = ON;SET GLOBAL enforce_gtid_consistency = ON;-- 修改my.cnf[mysqld]server-id = 10log-bin = mysql-binbinlog_format = ROWgtid_mode = ONenforce_gtid_consistency = ONlog_slave_updates = ONread_only = 0-- 重启MySQLsystemctl restart mysqld-- 创建复制用户CREATE USER 'repl'@'192.168.1.%' IDENTIFIED BY 'StrongPass123!';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.%';FLUSH PRIVILEGES;在从库上执行:
CHANGE MASTER TO MASTER_HOST='192.168.1.10', MASTER_USER='repl', MASTER_PASSWORD='StrongPass123!', MASTER_AUTO_POSITION = 1;START SLAVE;SHOW SLAVE STATUS\G✅ 确保
Slave_IO_Running和Slave_SQL_Running均为Yes,且Seconds_Behind_Master接近0。
在Manager节点安装:
# 安装EPEL源yum install epel-release -y# 安装MHA Node(所有MySQL节点)rpm -ivh mha4mysql-node-0.58-0.el7.noarch.rpm# 安装MHA Manager(仅Manager节点)rpm -ivh mha4mysql-manager-0.58-0.el7.noarch.rpm创建配置目录:
mkdir -p /etc/mha/app1编辑配置文件 /etc/mha/app1/app1.cnf:
[server default]manager_workdir=/var/log/mha/app1manager_log=/var/log/mha/app1/manager.logremote_workdir=/var/log/mha/app1ssh_user=rootrepl_user=replrepl_password=StrongPass123!ping_interval=3master_ip_failover_script=/usr/local/bin/master_ip_failovershutdown_script=/usr/local/bin/power_manager[server1]hostname=192.168.1.10port=3306candidate_master=1check_repl_delay=0[server2]hostname=192.168.1.11port=3306candidate_master=1check_repl_delay=0[server3]hostname=192.168.1.12port=3306no_master=1
candidate_master=1表示该从库优先被选为新主;check_repl_delay=0忽略复制延迟,加速切换。
创建 /usr/local/bin/master_ip_failover:
#!/usr/bin/perluse strict;use warnings FATAL => 'all';use Getopt::Long;my $vip = '192.168.1.200/24';my $key = '1';my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip";my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down";my $orig_master_host = $ARGV[0];my $new_master_host = $ARGV[1];if ($new_master_host) { system("ssh root@$new_master_host '$ssh_start_vip'");} else { system("ssh root@$orig_master_host '$ssh_stop_vip'");}赋予执行权限:
chmod +x /usr/local/bin/master_ip_failover# 检查SSH连通性masterha_check_ssh --conf=/etc/mha/app1/app1.cnf# 检查复制状态masterha_check_repl --conf=/etc/mha/app1/app1.cnf若输出显示OK,则表示环境准备就绪。
nohup masterha_manager --conf=/etc/mha/app1/app1.cnf --ignore_last_failover &建议将此命令加入systemd服务,实现开机自启。
为验证MHA有效性,可手动关闭主库MySQL服务:
systemctl stop mysqld观察Manager日志:
tail -f /var/log/mha/app1/manager.log您将看到类似日志:
[info] Master is down![info] Dead servers: 192.168.1.10[info] New master: 192.168.1.11[info] Applying differential binary logs...[info] Switching master to 192.168.1.11[info] VIP 192.168.1.200 is now active on 192.168.1.11此时,应用层通过VIP访问数据库,无需重启服务,业务中断时间通常控制在10~30秒内。
在数字孪生、实时BI、IoT数据中台等场景中,数据库的可用性直接决定可视化报表的刷新频率、实时监控的准确性与决策响应速度。一次30分钟的数据库宕机,可能导致:
MHA通过自动化、零代码改造、低延迟切换,为企业提供了一种轻量级、低成本、高可靠的MySQL高可用方案。相比商业方案动辄数万元的授权费,MHA完全开源,且社区支持成熟,是中小规模企业构建稳定数据基础设施的首选。
| 特性 | MHA | MySQL InnoDB Cluster | 商业方案(如Percona XtraDB Cluster) |
|---|---|---|---|
| 成本 | 免费 | 免费 | 高(订阅制) |
| 部署复杂度 | 中等 | 高(需Group Replication) | 高 |
| 故障切换速度 | 10~30秒 | 10~20秒 | 5~15秒 |
| 自动VIP管理 | 需脚本 | 内置 | 内置 |
| 适用场景 | 中小规模、传统架构 | 新架构、云原生 | 大型企业、金融级 |
对于已存在主从架构的企业,MHA是最平滑的升级路径,无需重构复制拓扑。
如果您正在规划数据中台的高可用架构,或希望在不更换数据库的前提下提升系统韧性,MHA是当前最成熟、最可靠的开源选择。
申请试用&https://www.dtstack.com/?src=bbs申请试用&https://www.dtstack.com/?src=bbs申请试用&https://www.dtstack.com/?src=bbs
申请试用&下载资料