MySQL虽无原生多主复制,但可通过环形复制、MySQL Group Replication或Galera Cluster实现。1. 环形复制支持多节点写入,配置简单,适用于小规模集群,但存在冲突与脑裂风险;2. MySQL Group Replication为官方方案,基于Paxos协议,支持多主模式,具备自动冲突检测与强一致性;3. Galera Cluster提供同步复制,所有节点可读可写,适合高可用生产环境;4. 多主架构需应对写冲突、网络分区及性能开销,建议结合中间件统一写入入口。选择方案应根据一致性需求、运维复杂度及业务容忍度综合评估。

MySQL中没有原生的多主复制(Multi-Master Replication)支持,但可以通过几种方式实现类似功能。最常见的是使用环形复制(Circular Replication)或借助外部工具如MySQL Group Replication、Galera Cluster等。下面介绍几种可行方案。
1. 环形多主复制(Active-Passive 或 Active-Active)
多个MySQL节点相互配置为彼此的主从,形成一个复制环。例如:A → B → C → A。
适用场景: 小规模集群,对一致性要求不极端,能容忍一定延迟。
实现步骤:
- 每个节点开启二进制日志(binlog)和唯一server-id
- 配置auto-increment-increment和auto-increment-offset,避免自增ID冲突
- 在每个节点上配置CHANGE MASTER TO指向下一个节点
- 启动各节点的START SLAVE
示例配置(3节点环):
[mysqld]log-bin=mysql-bin
server-id=1
auto-increment-increment=3
auto-increment-offset=1
节点B:server-id=2, offset=2;节点C:server-id=3, offset=3。
注意: 写操作可在任意节点执行,但存在脑裂、冲突写入风险,需应用层控制写入逻辑。
2. 使用MySQL Group Replication(推荐)
MySQL官方提供的高可用解决方案,支持多主模式(Multi-Primary Mode),自动处理冲突检测与数据同步。
特点:
- 基于Paxos协议实现组通信
- 支持多节点同时写入(需启用multi-primary)
- 自动冲突检测(基于主键或唯一索引)
- 强一致性保障
启用多主模式关键配置:
小邮包-包月订购包年服务网,该程序由好买卖商城开发,程序采用PHP+MYSQL架设,程序商业模式为目前最为火爆的包月订制包年服务模式,这种包年订购在国外网站已经热火很多年了,并且已经发展到一定规模,像英国的男士用品网站BlackSocks,一年的袜子购买量更是达到了1000万双。功能:1、实现多产品上线,2、不用注册也可以直接下单购买,3、集成目前主流支付接口,4、下单发货均有邮件提醒。
group-replication-group-name="uuid" # 统一组名
group-replication-start-on-boot=false
group-replication-local-address="node1:port"
group-replication-group-seeds="node1:port,node2:port"
group-replication-single-primary-mode=OFF
group-replication-enforce-update-everywhere-checks=ON
初始化后执行START GROUP_REPLICATION即可加入集群。
3. 使用Galera Cluster(如Percona XtraDB Cluster)
第三方多主同步方案,基于wsrep补丁,实现真正的同步复制。
优势:
- 所有节点可读可写
- 同步复制,无延迟
- 自动成员管理与数据重传
部署要点:
- 安装PXC或MariaDB + Galera
- 配置wsrep_cluster_address指向集群地址
- 首次启动使用--wsrep-new-cluster
- 后续节点自动加入并同步
适合需要高可用和强一致性的生产环境。
4. 注意事项与限制
多主复制虽然提高了可用性,但也带来挑战:
- 写冲突:同一行在不同节点同时修改可能导致失败,需应用重试机制
- 网络分区:可能引发脑裂,需配合仲裁机制
- 性能开销:同步成本高于异步复制
- DDL操作需谨慎:某些版本不支持并发DDL
建议统一入口路由或使用中间件(如ProxySQL)管理写请求分布。
基本上就这些。选择哪种方式取决于你的需求:轻量级可用环形复制,追求稳定选Group Replication,强调同步一致性可选Galera。多主不是银弹,设计时要考虑业务容忍度。









