如何配置MySQL组复制_MGR集群架构与Paxos协议原理解析

来源:站长源码作者:缅甸程序员头衔:程序员
导读:本期聚焦于小伙伴创作的《如何配置MySQL组复制_MGR集群架构与Paxos协议原理解析》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何配置MySQL组复制_MGR集群架构与Paxos协议原理解析》有用,将其分享出去将是对创作者最好的鼓励。

MySQL组复制(MGR)是MySQL官方提供的原生高可用分布式集群解决方案,通过Paxos协议保证集群内所有节点的数据一致性,支持自动故障检测与节点动态加入退出,可满足大多数分布式场景的数据库高可用需求。

MGR集群核心架构

MGR集群由多个MySQL实例节点组成,所有节点分为两种角色:

  • 主节点:单主模式下唯一处理写请求的节点,多主模式下所有节点都可处理写请求
  • 从节点:同步主节点的数据变更,仅提供读服务

集群的通信层基于Paxos协议实现,每个节点的变更操作都需要经过多数派节点确认后才会提交,保证数据在不同节点间的一致性。

Paxos协议在MGR中的工作原理

Paxos协议是解决分布式系统一致性的经典算法,MGR中采用的是类Multi-Paxos实现,核心流程分为三个阶段:

1. 提议阶段

发起写操作的节点作为提议者,生成一个全局唯一的提议编号,向集群内所有节点发送提议请求。

2. 接受阶段

接收节点收到提议后,对比本地已接受的最大提议编号,若当前提议编号更大,则返回接受响应,否则拒绝。

3. 学习阶段

当提议者收到超过半数节点的接受响应后,向所有节点发送提交请求,所有节点执行该变更操作并持久化到本地。

这种机制保证了只要集群中存活节点数超过总节点数的半数,就可以正常提供服务,同时避免脑裂问题。

MGR集群配置前置条件

配置MGR集群前需要满足以下基础要求:

  • MySQL版本不低于5.7.17,推荐使用8.0及以上版本
  • 所有节点开启GTID模式,保证事务全局唯一标识
  • 所有节点使用相同的字符集与排序规则
  • 节点间网络互通,建议关闭防火墙或开放对应端口

单主模式MGR集群配置步骤

1. 基础参数配置

所有节点修改MySQL配置文件my.cnf,添加以下配置:

-- 开启GTID
gtid_mode = ON
enforce_gtid_consistency = ON

-- MGR基础配置
plugin_load_add = 'group_replication.so'
group_replication_group_name = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"  -- 集群唯一UUID,所有节点一致
group_replication_start_on_boot = OFF
group_replication_local_address = "192.168.0.1:33061"  -- 当前节点的组内通信地址,每个节点不同
group_replication_group_seeds = "192.168.0.1:33061,192.168.0.2:33061,192.168.0.3:33061"  -- 集群所有节点的通信地址
group_replication_single_primary_mode = ON  -- 开启单主模式
group_replication_enforce_update_everywhere_checks = OFF

2. 初始化节点

启动所有节点的MySQL服务,登录第一个节点执行以下操作:

-- 创建MGR专用复制用户
CREATE USER 'repl'@'%' IDENTIFIED BY 'Repl@123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;

-- 配置复制通道
CHANGE REPLICATION SOURCE TO SOURCE_USER='repl', SOURCE_PASSWORD='Repl@123456' FOR CHANNEL 'group_replication_recovery';

-- 启动MGR组复制
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;

3. 加入其他节点

登录第二个、第三个节点,执行以下操作加入集群:

-- 创建复制用户(和第一个节点一致)
CREATE USER 'repl'@'%' IDENTIFIED BY 'Repl@123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;

-- 配置复制通道
CHANGE REPLICATION SOURCE TO SOURCE_USER='repl', SOURCE_PASSWORD='Repl@123456' FOR CHANNEL 'group_replication_recovery';

-- 启动组复制加入集群
START GROUP_REPLICATION;

4. 验证集群状态

在任意节点执行以下SQL查看集群状态:

SELECT * FROM performance_schema.replication_group_members;

若所有节点的MEMBER_STATE字段为ONLINE,且只有一个节点的MEMBER_ROLE为PRIMARY,说明单主MGR集群配置成功。

常见问题排查

  • 节点无法加入集群:检查通信端口是否互通,group_replication_group_name是否所有节点一致
  • 数据不一致:检查所有节点的GTID是否开启,是否有未同步的历史数据
  • 主节点故障:单主模式下集群会自动选举新的主节点,无需人工干预

MySQL组复制MGR集群Paxos协议数据库集群配置修改时间:2026-06-25 17:34:02

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。