本設定は物理的に異なる3台のサーバーにMySQL Group Replication(MGR)環境を構築する手順を示します。マルチインスタンス構成の場合、設定の差異が生じる可能性があるため、環境に応じて調整が必要です。
基本環境情報
| IPアドレス | ホスト名 | DBポート | MGRポート |
| 192.168.10.101 | mgr-node1 | 3306 | 33061 |
| 192.168.10.102 | mgr-node2 | 3306 | 33061 |
| 192.168.10.103 | mgr-node3 | 3306 | 33061 |
1. ホスト名とhostsファイル設定(全サーバー)
# /etc/sysconfig/network 編集
NETWORKING=yes
HOSTNAME=mgr-node1
# /etc/hosts 編集
127.0.0.1 localhost
192.168.10.101 mgr-node1
192.168.10.102 mgr-node2
192.168.10.103 mgr-node3
2. ファイアウォールとSELinux無効化
systemctl stop firewalld
systemctl disable firewalld
# /etc/selinux/config 編集
SELINUX=disabled
3. MySQL設定ファイル作成
ノード1 (192.168.10.101)
# /etc/mysql/mgr.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
port=3306
server_id=101
log-bin=mysql-bin
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_format=ROW
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="a8b3c7d0-5f42-4e91-ba76-9c815f4d2e1a"
loose-group_replication_start_on_boot=OFF
loose-group_replication_local_address="192.168.10.101:33061"
loose-group_replication_group_seeds="192.168.10.101:33061,192.168.10.102:33061,192.168.10.103:33061"
loose-group_replication_bootstrap_group=OFF
loose-group_replication_single_primary_mode=ON
ノード2 (192.168.10.102)
server_id=102
loose-group_replication_local_address="192.168.10.102:33061"
ノード3 (192.168.10.103)
server_id=103
loose-group_replication_local_address="192.168.10.103:33061"
4. MySQLインスタンス初期化
mysqld --defaults-file=/etc/mysql/mgr.cnf --initialize-insecure
5. サービス起動
systemctl start mysql
mysql -uroot -p
6. レプリケーション用ユーザー作成(全ノード)
SET SQL_LOG_BIN=0;
CREATE USER 'sync_user'@'%' IDENTIFIED BY 'SecurePass123!';
GRANT REPLICATION SLAVE ON *.* TO 'sync_user'@'%';
SET SQL_LOG_BIN=1;
7. プライマリノード設定 (192.168.10.101)
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;
SELECT * FROM performance_schema.replication_group_members;
8. セカンダリノード参加 (192.168.10.102/103)
START GROUP_REPLICATION;
9. VIP設定スクリプト(オプション)
# /usr/local/bin/vip_manager.sh
#!/bin/bash
while true; do
# VIP管理ロジック
sleep 30
done