MySQL Group Replication (MGR) 2台服务器 + 仲裁节点配置
1. 环境准备
- 服务器:准备两台数据库服务器(Node1 和 Node2)和一台仲裁节点(Witness Node)。
- 网络:确保所有节点之间网络通信正常,并且可以通过主机名或 IP 地址互相访问。
- MySQL 版本:建议使用 MySQL 8.0 或更高版本。
2. 配置 MySQL
2.1 数据库服务器(Node1 和 Node2)
在所有数据库服务器上修改 MySQL 配置文件 my.cnf
,添加以下配置:
[mysqld]
server_id=1 # Node1 的 server_id
# server_id=2 # Node2 的 server_id,根据实际情况修改
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_format=ROW
binlog_checksum=NONE
log_slave_updates=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
transaction_write_set_extraction=XXHASH64
# MGR 配置
loose-group_replication_group_name="your_group_name" # 替换为实际的组名,例如 UUID
loose-group_replication_start_on_boot=OFF
loose-group_replication_local_address="Node1_IP:24901" # Node1 的 IP 和端口
# loose-group_replication_local_address="Node2_IP:24901" # Node2 的 IP 和端口
loose-group_replication_group_seeds="Node1_IP:24901,Node2_IP:24901,Witness_IP:24901" # 包括所有节点的 IP 和端口
loose-group_replication_bootstrap_group=OFF
loose-group_replication_single_primary_mode=ON
loose-group_replication_enforce_update_everywhere_checks=ON
2.2 仲裁节点(Witness Node)
在仲裁节点上修改 MySQL 配置文件 my.cnf,添加以下参数:
[mysqld]
loose-group_replication_arbitrator=true
loose-group_replication_local_address="Witness_IP:24901"
loose-group_replication_group_seeds="Node1_IP:24901,Node2_IP:24901"
仲裁节点不需要存储数据,因此可以不配置 datadir。
3. 初始化和启动 MySQL
在所有节点上执行以下命令,初始化并启动 MySQL 服务:
# 初始化 MySQL(如果尚未初始化)
mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data
# 启动 MySQL 服务
systemctl start mysqld
4. 配置用户权限
在两台数据库服务器上,为复制用户授予必要的权限:
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'repl_password';
FLUSH PRIVILEGES;
5. 启动 Group Replication
在两台数据库服务器上执行以下命令,启动 Group Replication:
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;
在仲裁节点上,仅启动 MySQL 服务即可,无需执行上述命令。
6. 验证配置
在任意一台数据库服务器上执行以下命令,检查 Group Replication 的状态:
SHOW STATUS LIKE 'group_replication%';
确保 group_replication_primary_member 显示当前主节点的 UUID。
7. 测试故障切换
模拟主节点故障(例如通过关闭 MySQL 服务),观察集群是否自动选举新的主节点。
注意事项
网络延迟:仲裁节点应部署在与两台数据库服务器网络延迟较低的位置,以确保投票过程高效。
数据一致性:在单主模式下,MGR 保证数据强一致性。
监控:建议使用监控工具(如 Prometheus 和 Grafana)实时监控集群状态。
评论