1. MySQL MGR高可用集群概述
MySQL Group Replication(简称MGR)是MySQL官方推出的高可用解决方案,它基于Paxos协议实现多主节点数据同步,提供自动故障转移和节点恢复能力。相比传统的主从复制架构,MGR具有以下核心优势:
- 多主模式支持:所有节点均可读写,避免单点瓶颈
- 自动故障检测:秒级感知节点异常并触发切换
- 数据强一致性:基于GTID的全局事务保证数据一致性
- 节点自动恢复:故障节点重新加入集群后自动同步数据
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 集群规划与环境准备
2.1 硬件配置建议
生产环境建议至少3个节点组成集群,每个节点配置:
- CPU: 4核以上
- 内存: 8GB以上
- 磁盘: SSD存储,建议RAID10
- 网络: 千兆内网互联,延迟<1ms
重要提示:MGR对网络延迟非常敏感,跨机房部署需谨慎评估网络质量
2.2 软件环境要求
- 操作系统: CentOS 7+/Ubuntu 18.04+
- MySQL版本: 5.7.17+或8.0+
- 防火墙配置: 开放3306、33061端口
- SELinux: 建议临时关闭或配置适当策略
3. MySQL安装与基础配置
3.1 MySQL安装步骤
- 添加MySQL官方YUM源
bash复制wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
sudo rpm -ivh mysql80-community-release-el7-3.noarch.rpm
- 安装MySQL Server
bash复制sudo yum install mysql-community-server
- 启动MySQL服务
bash复制systemctl start mysqld
systemctl enable mysqld
3.2 关键参数配置
修改/etc/my.cnf文件,添加以下MGR专用配置:
ini复制[mysqld]
# 通用配置
server_id = 1 # 每个节点唯一
gtid_mode = ON
enforce_gtid_consistency = ON
binlog_checksum = NONE
# MGR专用配置
plugin_load_add = 'group_replication.so'
group_replication_group_name = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
group_replication_start_on_boot = OFF
group_replication_local_address = "node1:33061"
group_replication_group_seeds = "node1:33061,node2:33061,node3:33061"
group_replication_bootstrap_group = OFF
4. MGR集群搭建实操
4.1 初始化集群
在第一个节点执行:
sql复制SET SQL_LOG_BIN=0;
CREATE USER 'repl'@'%' IDENTIFIED BY 'repl_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='repl_password'
FOR CHANNEL 'group_replication_recovery';
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;
4.2 添加其他节点
在其他节点执行:
sql复制SET SQL_LOG_BIN=0;
CREATE USER 'repl'@'%' IDENTIFIED BY 'repl_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='repl_password'
FOR CHANNEL 'group_replication_recovery';
START GROUP_REPLICATION;
5. 集群管理与监控
5.1 常用管理命令
查看集群状态:
sql复制SELECT * FROM performance_schema.replication_group_members;
检查同步延迟:
sql复制SELECT MEMBER_ID, COUNT_TRANSACTIONS_IN_QUEUE
FROM performance_schema.replication_group_member_stats;
5.2 故障转移测试
- 停止主节点MySQL服务
bash复制systemctl stop mysqld
- 观察自动选举过程(约30秒内完成)
sql复制SELECT MEMBER_ID, MEMBER_ROLE
FROM performance_schema.replication_group_members;
6. 生产环境优化建议
6.1 性能调优参数
ini复制group_replication_flow_control_mode = "QUOTA"
group_replication_flow_control_applier_threshold = 25000
group_replication_flow_control_certifier_threshold = 25000
group_replication_transaction_size_limit = 20971520
6.2 备份策略
建议采用Percona XtraBackup进行物理备份:
bash复制xtrabackup --backup --target-dir=/data/backup/$(date +%F) \
--user=backup --password=backup_pass
7. 常见问题排查
7.1 节点无法加入集群
检查步骤:
- 验证网络连通性(telnet节点33061端口)
- 检查group_replication_group_seeds配置
- 查看MySQL错误日志
- 确认各节点server_id唯一
7.2 数据不一致处理
修复方法:
sql复制STOP GROUP_REPLICATION;
SET GLOBAL group_replication_allow_local_disjoint_gtids_join=ON;
START GROUP_REPLICATION;
8. 安全加固措施
- 配置SSL加密传输:
sql复制SET GLOBAL group_replication_ssl_mode = "REQUIRED";
- 启用防火墙规则:
bash复制firewall-cmd --permanent --add-rich-rule='rule family="ipv4" \
source address="192.168.1.0/24" port protocol="tcp" port="33061" accept'
在实际生产部署中,我们发现MGR集群的稳定性与网络质量强相关。建议部署前先进行网络基准测试,确保节点间RTT延迟小于2ms。对于金融级应用,可考虑使用RDMA网络进一步降低延迟。
