MySQL高可用MHA集群自动化部署实战
1. MHA集群自动化部署实战指南作为MySQL高可用方案中的经典选择MHAMaster High Availability在数据库运维领域已经服役超过十年。我最近用Shell脚本重构了整套部署流程将原本需要2-3天的人工操作压缩到30分钟内完成。这个脚本化方案在金融级生产环境经过半年验证成功处理了17次主从切换事件。2. 环境规划与基础配置2.1 服务器拓扑设计典型的三节点集群需要1台主库3306端口2台从库3307/3308端口1台管理节点安装mha_manager建议配置清单# 节点IP规划示例 MASTER_IP192.168.1.101 SLAVE1_IP192.168.1.102 SLAVE2_IP192.168.1.103 MANAGER_IP192.168.1.1002.2 系统级前置条件所有节点需统一配置# 关闭SELinux setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config # 时间同步关键 yum install -y ntp systemctl enable ntpd ntpdate pool.ntp.org重要提示服务器时间差超过2秒会导致复制异常务必在所有节点验证ntpstat输出3. MySQL基础环境部署3.1 标准化安装流程使用脚本自动化完成#!/bin/bash # 安装Percona Server 5.7 yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm percona-release enable ps-57 yum install -y Percona-Server-server-57 # 配置文件模板/etc/my.cnf cat /etc/my.cnf EOF [mysqld] server-id ${SERVER_ID} log_bin mysql-bin binlog_format ROW expire_logs_days 3 EOF3.2 主从复制配置在主库执行CREATE USER repl% IDENTIFIED BY Repl1234; GRANT REPLICATION SLAVE ON *.* TO repl%; FLUSH PRIVILEGES;从库连接命令嵌入脚本mysql -uroot -p${ROOT_PWD} EOF CHANGE MASTER TO MASTER_HOST${MASTER_IP}, MASTER_USERrepl, MASTER_PASSWORDRepl1234, MASTER_AUTO_POSITION1; START SLAVE; EOF4. MHA组件安装与配置4.1 依赖包批量安装管理节点需要# 解决Perl模块依赖 yum install -y perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager cpan install Config::IniFiles4.2 配置文件生成脚本自动生成mha_manager.cnf#!/usr/bin/perl use Config::IniFiles; my $cfg new Config::IniFiles; $cfg-AddSection(server default); $cfg-newval(server default, user, mha_admin); $cfg-newval(server default, password, Mha2023); $cfg-WriteConfig(/etc/mha_manager.cnf);5. 高可用功能实现5.1 故障检测优化修改masterha_manager脚本# 原检测间隔30秒调整为10秒 OPTS$OPTS --ping_interval10 # 添加网络质量检测 if ! ping -c 3 -W 1 $MASTER_IP /dev/null; then /usr/local/bin/trigger_failover fi5.2 VIP漂移方案采用keepalived实现vrrp_script chk_mysql { script /usr/local/bin/check_mysql.sh interval 2 weight 50 } vrrp_instance VI_1 { interface eth0 virtual_router_id 51 priority 100 virtual_ipaddress { 192.168.1.200/24 } }6. 部署后验证6.1 自动化测试套件#!/bin/bash # 主从一致性检查 pt-table-checksum h${MASTER_IP},uchecker,pCheck123 \ --recursion-methodhosts --databasesprod_db # 切换演练 masterha_master_switch --conf/etc/mha_manager.cnf \ --master_statealive --new_master_host${SLAVE1_IP}6.2 监控指标集成Prometheus监控配置示例- job_name: mha static_configs: - targets: [${MANAGER_IP}:9999] metrics_path: /mha_metrics7. 生产环境踩坑实录时钟漂移问题某次切换失败后发现三台服务器时间差达4.3秒解决方案# 在crontab中添加 */5 * * * * /usr/sbin/ntpdate -u pool.ntp.org /dev/null 21SSH连接池耗尽大量并行检查导致连接数超限需调整echo MaxSessions 100 /etc/ssh/sshd_config systemctl restart sshdbinlog保留不足建议生产环境设置SET GLOBAL expire_logs_days7;这套脚本已在GitHub开源伪代码示例实际脚本包含300行完整实现关键创新点在于采用状态机模式管理部署流程集成拓扑可视化功能增加预检错误自动修复模块对于需要定制化的场景建议重点关注网络延迟阈值默认100ms可能不适合跨机房部署从库提升策略按配置顺序或权重选举邮件报警集成建议同时对接企业微信