MySQL集群与主从复制可互补构建混合架构:集群(如MGR)负责单写强一致与自动故障转移,主从负责读扩展与分析类查询;须严格单向复制、分层监控与切换协同。
MySQL集群和主从复制可以互补结合,形成兼顾高可用、读写分离与数据强一致性的混合架构。核心思路是:用主从复制解决读扩展和基础容灾,用MySQL集群(如InnoDB Cluster、MGR或Percona XtraDB Cluster)解决多节点写入一致性与自动故障转移问题——二者不互斥,关键在分层定位。
明确角色分工:集群管写,主从管读
典型混合架构中,将InnoDB Cluster(基于MGR)作为核心写入层,三节点组成单写多读的高可用集群;再从集群的Primary节点引出1~2个异步从库,专用于报表、BI、历史查询等重读轻写场景。这样既保障了事务写入的强一致性(通过MGR的Paxos协议),又避免了集群内所有节点都承担读压力导致性能下降。
- 集群内节点间使用Group Replication,保证数据变更实时同步且自动选主
- 主从链路采用传统异步复制(ROW格式+GTID),降低对集群性能影响
- 读请求按业务类型路由:在线交易读走集群Secondary节点,分析类读走下游从库
避免环路与冲突:复制拓扑必须单向隔离
混合架构最易出错的是复制方向混乱。严禁让集群Secondary节点同时作为主从结构的Master,也禁止下游从库反向写回集群——这会引发主键冲突、GTID不连续、甚至集群分裂。正确做法是只允许“集群Primary → 独立从库”这一条单向通道,并在从库上设置read_only=ON和super_read_only=ON。