| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- #!/bin/bash
- ROOT_PASS="Root_123456"
- MGR_USER="repl"
- MGR_PASS="Repl_123456"
- echo ">>> 正在执行 MySQL 8.0.36 专用初始化流程 (绕过通道锁定)..."
- for i in 1 2 3; do
- echo "正在准备节点 mysql80-$i..."
- docker exec -i mysql80-$i mysql -uroot -p${ROOT_PASS} <<EOF
- STOP GROUP_REPLICATION;
- RESET MASTER;
- SET SQL_LOG_BIN=0;
- CREATE USER IF NOT EXISTS '${MGR_USER}'@'%' IDENTIFIED WITH mysql_native_password BY '${MGR_PASS}';
- GRANT REPLICATION SLAVE ON *.* TO '${MGR_USER}'@'%';
- GRANT BACKUP_ADMIN ON *.* TO '${MGR_USER}'@'%';
- FLUSH PRIVILEGES;
- SET SQL_LOG_BIN=1;
- EOF
- done
- # 2. 引导主节点 (在 START 时直接传入凭证)
- echo ">>> 引导主节点 mysql80-1..."
- docker exec -i mysql80-1 mysql -uroot -p${ROOT_PASS} <<EOF
- SET GLOBAL group_replication_bootstrap_group=ON;
- START GROUP_REPLICATION USER='${MGR_USER}', PASSWORD='${MGR_PASS}';
- SET GLOBAL group_replication_bootstrap_group=OFF;
- EOF
- # 3. 加入从节点 (同样在 START 时传入凭证)
- for i in 2 3; do
- echo ">>> 加入从节点 mysql80-$i..."
- docker exec -i mysql80-$i mysql -uroot -p${ROOT_PASS} -e "
- START GROUP_REPLICATION USER='${MGR_USER}', PASSWORD='${MGR_PASS}';
- "
- done
- echo "----------------------------------------"
- docker exec -i mysql80-1 mysql -uroot -p${ROOT_PASS} -e "
- SELECT MEMBER_HOST, MEMBER_STATE, MEMBER_ROLE FROM performance_schema.replication_group_members;
- "
|