MySQL MHA高可用配置是企业级数据库架构中保障业务连续性的关键技术方案。在数据中台、数字孪生与数字可视化系统中,MySQL 作为核心关系型数据库,其稳定性直接决定数据服务的可用性。一旦主库宕机,若无自动故障转移机制,将导致实时报表中断、API服务雪崩、可视化大屏数据停滞,造成重大业务损失。MHA(Master High Availability)正是为解决这一痛点而生的开源高可用解决方案,它能在3~10秒内自动完成主从切换,实现近乎无感知的故障恢复。
MHA由四个核心组件构成,协同工作实现自动化故障检测与切换:
✅ 关键设计原则:MHA不依赖共享存储,不使用VIP漂移,而是通过SSH远程执行命令、解析二进制日志、自动选主、重置复制链路,实现轻量级、跨平台的高可用。
在数字孪生系统中,实时传感器数据写入主库,多个可视化前端从从库读取最新状态。若主库异常,MHA会自动选举出最接近主库的从库(基于relay log位置)作为新主,其余从库自动重连,整个过程无需人工干预。
| 角色 | IP地址 | 操作系统 | MySQL版本 | 备注 |
|---|---|---|---|---|
| Master | 192.168.1.10 | CentOS 7.9 | MySQL 5.7.44 | 主写节点 |
| Slave1 | 192.168.1.11 | CentOS 7.9 | MySQL 5.7.44 | 从库,可读 |
| Slave2 | 192.168.1.12 | CentOS 7.9 | MySQL 5.7.44 | 从库,可读 |
| Manager | 192.168.1.13 | CentOS 7.9 | 无MySQL | 仅部署MHA Manager |
⚠️ 所有节点必须关闭防火墙或开放SSH(22)、MySQL(3306)端口;建议使用NTP时间同步,避免复制延迟误判。
MHA依赖SSH远程执行命令,必须在Manager节点与所有MySQL节点间配置SSH密钥互信:
# 在Manager节点生成密钥ssh-keygen -t rsa -b 2048# 分发公钥到所有MySQL节点ssh-copy-id root@192.168.1.10ssh-copy-id root@192.168.1.11ssh-copy-id root@192.168.1.12验证互信是否成功:
ssh root@192.168.1.10 "hostname"ssh root@192.168.1.11 "hostname"ssh root@192.168.1.12 "hostname"若返回主机名无密码,则配置成功。
编辑 /etc/my.cnf:
[mysqld]server-id = 10log-bin = mysql-binbinlog_format = ROWsync_binlog = 1innodb_flush_log_at_trx_commit = 1gtid_mode = ONenforce_gtid_consistency = ON重启MySQL服务:
systemctl restart mysqld创建复制用户:
CREATE USER 'repl'@'192.168.1.%' IDENTIFIED BY 'ReplPass123!';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.%';FLUSH PRIVILEGES;编辑 /etc/my.cnf:
[mysqld]server-id = 11 # Slave1# server-id = 12 # Slave2log-bin = mysql-binbinlog_format = ROWgtid_mode = ONenforce_gtid_consistency = ONread_only = 1重启MySQL服务。
在Master上查看当前binlog位置:
SHOW MASTER STATUS;在Slave1和Slave2上执行:
CHANGE MASTER TO MASTER_HOST='192.168.1.10', MASTER_USER='repl', MASTER_PASSWORD='ReplPass123!', MASTER_AUTO_POSITION=1;START SLAVE;SHOW SLAVE STATUS\G确认 Slave_IO_Running: Yes 与 Slave_SQL_Running: Yes,表示复制正常。
✅ 重要提示:务必使用
MASTER_AUTO_POSITION=1启用GTID复制,这是MHA实现精准切换的基础。
在Manager节点安装EPEL源与MHA组件:
yum install epel-release -yyum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager -y# 下载MHA Manager与Node(推荐0.58版本)wget https://github.com/yoshinorim/mha4mysql-manager/releases/download/v0.58/mha4mysql-manager-0.58.tar.gzwget https://github.com/yoshinorim/mha4mysql-node/releases/download/v0.58/mha4mysql-node-0.58.tar.gztar -zxvf mha4mysql-manager-0.58.tar.gztar -zxvf mha4mysql-node-0.58.tar.gzcd mha4mysql-node-0.58perl Makefile.PLmake && make installcd ../mha4mysql-manager-0.58perl Makefile.PLmake && make install在所有MySQL节点安装Node组件(同上)。
在Manager节点创建配置目录与文件:
mkdir -p /etc/mha/app1vim /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=ReplPass123!ping_interval=3master_binlog_dir=/var/lib/mysqlmaster_ip_failover_script=/usr/local/bin/master_ip_failovershutdown_script=/usr/local/bin/power_manager[server1]hostname=192.168.1.10candidate_master=1check_repl_delay=0[server2]hostname=192.168.1.11candidate_master=1check_repl_delay=0[server3]hostname=192.168.1.12no_master=1✅
candidate_master=1表示优先选为主库,check_repl_delay=0忽略复制延迟,适用于实时性要求高的场景。
为实现VIP漂移或DNS更新,可编写 master_ip_failover 脚本。若仅需自动切换复制链路,可省略。
masterha_check_ssh --conf=/etc/mha/app1/app1.cnf输出应显示 All SSH connection tests passed。
masterha_check_repl --conf=/etc/mha/app1/app1.cnf输出中 MySQL Replication Health is OK 表示复制正常。
nohup masterha_manager --conf=/etc/mha/app1/app1.cnf --ignore_last_failover &查看日志:
tail -f /var/log/mha/app1/manager.log在Master节点执行:
kill -9 $(pgrep mysqld)观察Manager日志,应在5秒内出现:
Tue Apr 5 10:23:15 2024 - [info] Master is down!Tue Apr 5 10:23:18 2024 - [info] New master is 192.168.1.11Tue Apr 5 10:23:20 2024 - [info] Slaves are reconfigured此时,Slave1自动晋升为主库,Slave2自动重连新主,业务读写服务无缝恢复。
mysqldump 或 xtrabackup。| 特性 | MHA | MySQL Group Replication | Galera Cluster |
|---|---|---|---|
| 部署复杂度 | 中等 | 高 | 高 |
| 自动切换速度 | 3~10秒 | 10~30秒 | 1~5秒 |
| 写入扩展 | 单主 | 多主(需配置) | 多主 |
| 适用场景 | 中小规模、高可用优先 | 大规模、强一致性 | 实时金融、OLTP |
| 是否需共享存储 | 否 | 否 | 否 |
💡 建议:若企业数据量小于10TB、写入并发低于500 QPS,MHA仍是性价比最高的方案。若追求多主写入与更强一致性,可考虑MySQL Group Replication。
/var/log/mha/app1/ 下的旧日志,避免磁盘占满。/etc/mha/app1/app1.cnf 与脚本文件纳入Git版本管理。在数字孪生与实时可视化系统中,每一秒的数据中断都可能影响决策判断。MHA高可用配置,以极低的资源成本,实现了接近商业解决方案的可靠性。它不依赖昂贵硬件,不绑定特定云厂商,是中小企业构建自主可控数据中台的基石。
申请试用&下载资料✅ 立即行动:若您的系统尚未部署高可用方案,现在就是最佳时机。申请试用&https://www.dtstack.com/?src=bbs 获取专业数据库架构评估服务,优化您的MySQL集群韧性。
为保障数据服务不中断,申请试用&https://www.dtstack.com/?src=bbs 获取MHA部署模板与运维手册。
拒绝被动响应,主动构建高可用体系。申请试用&https://www.dtstack.com/?src=bbs,让您的数字可视化系统永不停机。