跳到主要内容

集群方案

问题

MySQL 有哪些集群方案?Group Replication 和 Galera Cluster 有什么区别?各数据库的集群方案如何选择?

答案

MySQL 集群方案

方案类型一致性复杂度适用场景
主从复制异步/半同步最终一致通用
MGRPaxos 协议强一致金融级高可用
PXC/Galera同步多主强一致多主写入
InnoDB ClusterMGR + Router + Shell强一致MySQL 官方推荐

MGR(MySQL Group Replication)

MySQL 5.7.17 引入的基于 Paxos 协议 的高可用方案:

两种模式

模式说明适用场景
单主模式只有 Primary 可写,自动选主推荐,简单可靠
多主模式所有节点可写,冲突检测需要多点写入

MGR 写入流程(单主模式):

InnoDB Cluster

MySQL 官方推荐的完整高可用方案 = MGR + MySQL Router + MySQL Shell:

组件作用
MGR数据复制和一致性
MySQL Router代理层,自动路由读写
MySQL Shell管理工具,集群配置/监控

PXC/Galera Cluster

Percona XtraDB Cluster 基于 Galera 库实现同步多主复制:

  • 所有节点都可以读写
  • 写入时同步到所有节点(同步复制)
  • 使用认证机制解决冲突
对比MGRPXC/Galera
协议PaxosGalera 认证
复制多数派确认全部节点确认
冲突处理先提交胜出写集认证
延迟较低较高(全同步)
官方支持Oracle 官方Percona/MariaDB

其他数据库的集群方案

Redis 集群

详见 Redis 集群方案

  • 主从 + 哨兵:自动故障转移
  • Redis Cluster:16384 哈希槽分片

MongoDB 集群

详见 MongoDB 分片与复制

  • Replica Set:自动选主
  • Sharded Cluster:分片 + 路由

PostgreSQL 集群

方案说明
流复制内置主从复制
Patroni基于 etcd/ZK 的自动故障转移
Citus分布式扩展,水平分片
pgpool-II连接池 + 读写分离

方案选型建议

场景推荐方案
一般业务主从复制 + 半同步 + MHA
强一致场景(金融)MGR/InnoDB Cluster
多主写入PXC/Galera
超大规模分库分表 + 主从
PostgreSQLPatroni + 流复制

常见面试问题

Q1: MGR 和传统主从复制的区别?

答案

对比主从复制MGR
协议binlog 异步/半同步Paxos 共识
一致性最终一致强一致(多数派确认)
故障转移手动或 MHA自动选主
数据安全可能丢数据不丢(多数派)
节点数1 主 N 从建议 3/5/7 奇数个

Q2: MySQL 集群最少需要几个节点?

答案

  • 主从复制:至少 2 个(1 主 1 从),推荐 1 主 2 从
  • MGR:至少 3 个(Paxos 多数派需要 N/2+1),推荐 3 或 5 个
  • PXC/Galera:至少 3 个,避免脑裂

奇数个节点可以在网络分区时明确多数派。

Q3: MGR 的限制有哪些?

答案

  1. 必须使用 InnoDB 引擎
  2. 每个表必须有主键
  3. 不支持 XA 事务(分布式事务)
  4. 不支持外键级联操作
  5. 单主模式下只有一个节点可写
  6. 建议节点数不超过 9 个
  7. 大事务可能导致同步延迟

相关链接