MySQL多主复制需借助GTID双主、MGR或多分片中间件实现,原生不支持真多主;GTID双主须约定写规则并避AUTO_INCREMENT冲突;MGR多主模式需关单主模式、用ROW格式及显式主键,写冲突会回滚;中间件方案通过分片路由实现逻辑多主,但限制SQL兼容性;部署须规避时间戳冲突、DDL同步风险与环形复制。
MySQL 多主复制(Multi-Master Replication)指多个 MySQL 实例均可接受写入,并将各自变更同步到其他节点,实现读写扩展与高可用。但原生 MySQL 不直接支持“真多主”(如三个节点任意写互不冲突),需借助特定方案规避冲突、保证数据一致性。
这是最常用、相对稳定的“类多主”方案,适用于两个节点互为备份、读写分离场景:
AUTO_INCREMENT 冲突:在 A 设置 auto_increment_offset=1、auto_increment_increment=2;B 设置为 offset=2、increment=2
log_slave_updates,确保中继日志能继续向下游转发MGR 是 MySQL 官方提供的插件式高可用方案,支持单主(default)和多主(multi-primary)模式,后者允许多节点同时写入:
group_replication_single_primary_mode=OFF
ER_GROUP_REPLICATION_CONSISTENCY_ERROR 并重试这类方案不在数据库层做复制协调,而是由中间件解析 SQL、路由写请求到不同分片,再通过单向复制或异步同步补全数据:

无论采用哪种方式,“多主”本质是在可用性、一致性、复杂度之间权衡,以下几点极易出问题:
NOW() 或 SYSDATE() 作为唯一业务字段;推荐用 REPLACE INTO 或 INSERT ... ON DUPLICATE KEY UPDATE 替代单纯 INSERTseconds_behind_master、group_replication_members 状态、show slave status\G 中的 Retrieved_Gtid_Set 与 Executed_Gtid_Set 是否一致不复杂但容易忽略。选型时优先考虑 MGR(5.7.17+ / 8.0+)或多分片中间件方案,慎用手工搭建的多环主复制。