使用MGR配置Mysql集群故障切换

2025-04-26 / 0 评论 / 4 阅读 / 正在检测是否收录...

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)实时监控集群状态。
0

评论

博主关闭了当前页面的评论