MySQL MHA 部署说明
本文说明 mha.yml 的支持边界和基础使用方式。
1. 支持边界
- 当前仅按
CentOS 7 / Red Hat 7环境维护 - 目标架构:一主多从 + MHA Manager
- 适用版本:MySQL
5.7
mha.yml 属于传统高可用方案。对于新建集群,优先建议使用 MGR 或 InnoDB Cluster。
192.168.161.* 是 dbbot 默认三节点回归网段,不等同于传统 MHA 专项环境。若要验证 mha.yml,请单独准备 CentOS 7 或 Red Hat 7,并使用 MySQL 5.7。
2. inventory 与角色
mha.yml 仍然使用 [dbbot_mysql] 主机组,实际角色通过变量区分:
[dbbot_mysql]
192.0.2.131 ansible_user=root ansible_ssh_pass="'密码'"
192.0.2.132 ansible_user=root ansible_ssh_pass="'密码'"
192.0.2.133 ansible_user=root ansible_ssh_pass="'密码'"
3. 关键变量
编辑 mysql_ansible/playbooks/common_config.yml:
mysql_version: "5.7.44"
mysql_port: 3306
fcs_allow_dbbot_default_passwd: true
说明:
mha.yml只支持 MySQL5.7,不能沿用默认的 MySQL9.7.x配置。fcs_allow_dbbot_default_passwd: true仅适合临时实验环境。如果继续使用 dbbot 公开默认密码,必须显式开启;生产环境应改成自定义密码并保持该开关为false。
编辑 mysql_ansible/playbooks/vars/var_mha.yml:
master_ip: 192.0.2.131
slave_ips:
- 192.0.2.132
- 192.0.2.133
manager_ip: 192.0.2.133
vip: 192.0.2.130
vip_netmask: "32"
net_work_interface: ens33
mha_secondary_check_script: ""
说明:
manager_ip不能与master_ip相同manager_ip应放在从库节点上vip、vip_netmask、net_work_interface需要与实际网络环境一致ens33只是示例网卡名。执行 VIP 相关剧本前请先用ip route get <网关地址>或ip -o -4 addr show确认真实网卡;CentOS 7 KVM 测试环境中常见网卡名也可能是eth0。mha_secondary_check_script默认为空,表示使用传统 MHA 默认行为。生产环境建议按网络拓扑配置多路径探测命令,降低 manager 单路径误判风险。
4. 执行入口
cd /usr/local/dbbot/mysql_ansible/playbooks
ansible-playbook mha.yml
执行过程中按提示输入 confirm 后继续。
非交互执行请显式追加确认变量:
python3 /usr/local/dbbot/portable-ansible/ansible-playbook mha.yml -e dbbot_confirmation_input=confirm
如果命令行同时临时覆盖布尔变量,请使用 JSON extra-vars,避免 key=true 被解析为字符串:
python3 /usr/local/dbbot/portable-ansible/ansible-playbook mha.yml \
-e dbbot_confirmation_input=confirm \
-e '{"fcs_allow_dbbot_default_passwd": true}'
5. 卸载
mha_unsafe_uninstall.yml 会先停止传统 MHA manager、删除配置的 VIP 和 MHA 运行文件,再按当前 mysql_port 清理 MySQL 实例数据、日志和运行目录:
cd /usr/local/dbbot/mysql_ansible/playbooks
ansible-playbook mha_unsafe_uninstall.yml
执行过程中按提示输入 confirm。如需在非交互场景执行,请追加 -e dbbot_confirmation_input=confirm。
默认不会删除 MHA RPM 包。如确需删除 mha4mysql-manager / mha4mysql-node RPM,可追加 -e '{"mha_uninstall_remove_packages": true}'。
6. 注意事项
mha.yml当前文档只覆盖CentOS 7和Red Hat 7使用前提。- 不满足
CentOS 7/Red Hat 7与 MySQL5.7条件的三节点回归环境会被mha.yml前置校验拦截,属于预期行为。 - 如果你在其他发行版上使用,需要先自行验证 Perl 依赖和 MHA RPM 兼容性。
- 默认不配置
secondary_check_script。生产环境应结合网络拓扑补充 MHA 二次探测配置。 - 失败后如需重跑,建议先确认 MHA Manager 配置、VIP 状态和 MySQL 实例状态,再决定是否清理残留文件。