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 7Red 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/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

说明:

  • manager_ip 不能与 master_ip 相同
  • manager_ip 应放在从库节点上
  • vipvip_netmasknet_work_interface 需要与实际网络环境一致
  • ens33 只是示例网卡名。执行 VIP 相关剧本前请先用 ip routeip addr 确认真实网卡;dbbot 192.168.161.* 默认测试 inventory 中的样例环境通常是 enp1s0,但传统 MHA 仍必须使用 CentOS 7Red Hat 7 专项环境验证。

4. 执行入口

cd /usr/local/dbbot/mysql_ansible/playbooks
ansible-playbook mha.yml

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 7Red Hat 7 使用前提。
  • 不满足 CentOS 7 / Red Hat 7 与 MySQL 5.7 条件的三节点回归环境会被 mha.yml 前置校验拦截,属于预期行为。
  • 如果你在其他发行版上使用,需要先自行验证 Perl 依赖和 MHA RPM 兼容性。
  • 失败后如需重跑,建议先确认 MHA Manager 配置、VIP 状态和 MySQL 实例状态,再决定是否清理残留文件。