MySQL MGR 部署说明

本文说明如何使用 mgr.yml 部署 MySQL Group Replication。

1. 适用范围

  • 目标架构:3 到 9 节点 MGR
  • 数据库版本:MySQL 8.0.x8.4.x9.7.x
  • 主机组:[dbbot_mysql]
  • 自动验收:默认检查 MySQL 实例、MGR 成员数量、成员状态和 primary 数量

建议在新环境执行。mgr.yml 会先安装 MySQL 实例,然后配置 Group Replication。

MySQL 9.7.x 使用 glibc2.28 包,不支持 CentOS/RHEL 7 系列;这类系统请使用 MySQL 8.4.x

2. inventory

[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

db_type: mysql
mysql_version: "8.4.9"
mysql_port: 3306
fcs_allow_dbbot_default_passwd: true

编辑 mysql_ansible/playbooks/vars/var_mgr.yml

mysql_binlog_format: row
mysql_mgr_port: "{{ (mysql_port | int) * 10 + 1 }}"
sub_nets: "192.0.2.%"
mysql_mgr_hosts:
  - "192.0.2.131"
  - "192.0.2.132"
  - "192.0.2.133"

说明:

  • mysql_mgr_hosts 必须与 [dbbot_mysql] 中的主机一致。
  • mysql_mgr_hosts 支持 3 到 9 个节点。
  • sub_nets 是 MGR 复制账号允许连接的来源网段。
  • mysql_mgr_port 默认按 mysql_port * 10 + 1 计算,例如 3306 对应 33061

4. 执行部署

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

执行过程中按提示输入 confirm。若在脚本中非交互执行,可追加:

python3 /usr/local/dbbot/portable-ansible/ansible-playbook mgr.yml -e dbbot_confirmation_input=confirm

5. 部署后验收

mgr.yml 默认会在 post_tasks 阶段自动执行 MGR 验收。也可以手工查看:

mysql -uadmin -h127.0.0.1 -P3306 -pDbbot_admin@8888 \
  -e "SELECT MEMBER_HOST, MEMBER_STATE, MEMBER_ROLE FROM performance_schema.replication_group_members ORDER BY MEMBER_HOST;"

验收要点:

  • 成员数量与 mysql_mgr_hosts 一致。
  • 所有成员 MEMBER_STATEONLINE
  • 只有一个成员为 PRIMARY

6. 卸载

卸载会读取当前 common_config.yml / advanced_config.yml 的生效端口和目录配置。确认 mysql_port 指向要删除的实例后执行:

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

执行过程中按提示输入 confirm。该入口只删除目标 MySQL 实例的数据、日志和运行目录,不删除 MySQL 软件基目录、Linux 用户或 my.cnf。