MySQL MGR Deployment Guide
This article explains how to use mgr.yml to deploy MySQL Group Replication.
1. Scope
- Target architecture: 3 to 9 MGR nodes
- Database version: MySQL
8.0.x,8.4.x, or9.7.x - Host group:
[dbbot_mysql] - Automatic validation: MySQL instance checks plus MGR member count, member state, and primary count
Use a fresh environment whenever possible.
mgr.ymlinstalls MySQL instances first and then configures Group Replication.MySQL
9.7.xusesglibc2.28packages and is not supported on the CentOS/RHEL 7 family; use MySQL8.4.xon those systems.
2. Inventory
[dbbot_mysql]
192.0.2.131 ansible_user=root ansible_ssh_pass="'<your_password>'"
192.0.2.132 ansible_user=root ansible_ssh_pass="'<your_password>'"
192.0.2.133 ansible_user=root ansible_ssh_pass="'<your_password>'"
3. Key variables
Edit mysql_ansible/playbooks/common_config.yml:
db_type: mysql
mysql_version: "8.4.9"
mysql_port: 3306
fcs_allow_dbbot_default_passwd: true
Edit 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"
Notes:
mysql_mgr_hostsmust match the hosts in[dbbot_mysql].mysql_mgr_hostssupports 3 to 9 nodes.sub_netsis the source subnet allowed for the MGR replication account.mysql_mgr_portis calculated asmysql_port * 10 + 1by default, for example33061whenmysql_portis3306.
4. Execute deployment
cd /usr/local/dbbot/mysql_ansible/playbooks
ansible-playbook mgr.yml
During execution, enter confirm as prompted. For non-interactive execution, append:
python3 /usr/local/dbbot/portable-ansible/ansible-playbook mgr.yml -e dbbot_confirmation_input=confirm
5. Post-deployment validation
mgr.yml runs MGR validation automatically in post_tasks by default. You can also inspect it manually:
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;"
Validation points:
- Member count matches
mysql_mgr_hosts. - Every member has
MEMBER_STATE = ONLINE. - Exactly one member is
PRIMARY.
6. Uninstall
Uninstall reads the effective port and directory settings from the current common_config.yml / advanced_config.yml. After confirming mysql_port points to the instance you want to remove, run:
cd /usr/local/dbbot/mysql_ansible/playbooks
ansible-playbook unsafe_uninstall.yml
During execution, enter confirm as prompted. This entry removes the target MySQL instance data, log, and runtime directories. It does not remove the MySQL software base directory, Linux user, or my.cnf.