周顺的技术博客

  • 1.MGR特点
  • 3. MGR结构需求
  • 3. MGR使用限制
  • 首页
  • 榜上有名
  • 文章归档
  • 读者排行
  • 豆瓣书影
  • 友情链接
  • DevOps (4)
  • Docker (4)
  • k8s (9)
  • linux (11)
  • Mysql (9)
  • Python (2)
  • Redis (1)
  • Shell (6)
  • 主题 (0)
  • 未分类 (0)

MGR组复制

  • xiaoteng
  • 2025-02-12
  • 0

1.MGR特点

① 高一致性,基于原生复制及 paxos协议 组复制技术 ,并以插件的方式提供,提供一致数据安全保证;

② 高容错性,只要不是大多数节点坏掉就可以继续工作,有自动检测机制,当不同节点产生资源争用冲突时,不会出现错误,按照先到者优先原则进行处理,并且内置了自动化脑裂防护机制;

③ 高扩展性,节点的新增和移除都是自动的,新节点加入后,会自动从其他节点上同步状态,直到 新节点和其他节点保持一致,如果某节点被移除了,其他节点自动更新组信息,自动维护新的组信息;

④ 高灵活性,有单主模式和多主模式,单主模式下,会自动选主,所有更新操作都在主上进行;多主模式下,所有 server 都可以同时处理更新操作。

MGR 是 MySQL 数据库未来发展的一个重要方向。

小结:高一致性,高容错性,高扩展性,高灵活性

3. MGR结构需求

1)引擎必须为 innodb,因为需事务支持在 commit 时对各节点进行冲突检查

2)每个表必须有主键,在进行事务冲突检测时需要利用主键值对比

3)必须开启 binlog 且为 row 格式

4)开启 GTID,且主从状态信息存于表中(--master-info-repository=TABLE 、--relay-log-info-repository=TABLE),--log-slave-updates 打开

5)一致性检测设置--transaction-write-set-extraction=XXHASH64

3. MGR使用限制

1)和普通复制 binlog 校验不能共存,需设置--binlog-checksum=none

2)不支持 gap lock(间隙锁),隔离级别需设置为 read_committed

3)不支持对表进行锁操作(lock /unlock table),不会发送到其他节点执行 ,影响需要对表进行加锁操作的情况,列入 mysqldump 全表备份恢复操作

4)不支持 serializable(序列化)隔离级别

5)DDL 语句不支持原子性,不能检测冲突,执行后需自行校验是否一致;不支持外键:多主不支持,单主模式不存在此问题;最多支持 9 个节点:超过 9 台 server 无法加入组

© 2026 周顺的技术博客
Theme by Wing
  • {{ item.name }}
  • {{ item.name }}