MySQL 复制拓扑结构(双主/多从)设计方案

落芳大大_8102

落芳大大_8102

2026-07-10

727人浏览

原创

mysql双主多从架构以高可用、读写分离、故障自动接管为核心目标,通过双主互备(需唯一server-id、log-bin与log-slave-updates启用、自增id避重)、多从分担读负载(read_only=1、多源复制、relay_log_recovery=1)、中间件vip漂移及row格式binlog等机制实现。

mysql 复制拓扑结构(双主/多从)设计方案

MySQL 双主多从架构不是简单叠加,而是围绕高可用、读写分离、故障自动接管三个核心目标设计的。它解决的痛点很明确:单主宕机即停写、从库无法承担写压力、切换需人工干预、数据一致性难保障。

双主互备:避免写服务中断

两台主库(Master1 / Master2)互为对方的从库,形成双向复制链路。关键在于:

  • 每台主库都必须开启 log-bin 和 log-slave-updates=1,确保自身写入能生成 binlog,且作为从库时的写操作也能被记录并传播出去
  • server-id 必须全局唯一,不能重复;建议按角色编号,如 Master1=1、Master2=2、Slave1=3、Slave2=4
  • 主键冲突风险必须规避:推荐配置 auto-increment-offset 和 auto-increment-increment,例如两主分别设为 offset=1, increment=2 和 offset=2, increment=2,保证自增 ID 不重叠
  • 同步账号要分开创建:Master1 创建专供 Master2 同步的用户(如 repl_master2),Master2 同理,权限仅限 REPLICATION SLAVE

多从分担读负载:提升查询吞吐能力

从库(Slave1、Slave2 等)不参与写入,只响应读请求,通过负载均衡(如 HAProxy 或应用层路由)分发流量:

MySQL
MySQL

编写正确的MySQL查询,避免字符集、索引和锁方面的常见陷阱。

下载
  • 每个从库配置 read_only=1(运行时可设,也可写入配置文件),防止误写导致数据不一致
  • 从库需同时连接两个主库——使用 MySQL 5.7+ 的多源复制(CHANGE MASTER TO ... FOR CHANNEL 'master1' 和 FOR CHANNEL 'master2'),实现双主数据统一汇聚
  • 建议在从库启用 relay_log_recovery=1,异常重启后自动修复中继日志,减少人工介入
  • 监控 Seconds_Behind_Master(各 channel 分开查)和 Slave_SQL_Running_State,及时发现延迟或同步中断

故障切换与数据一致性保障

架构健壮性不只靠配置,更依赖配套机制:

  • 引入中间件(如 HAProxy + Keepalived)做写入口 VIP 自动漂移:正常时指向 Master1,Master1 故障后秒级切至 Master2,应用无感
  • 所有写操作应尽量走统一入口(如代理层),避免直连不同主库引发分布式事务或幻读
  • 定期校验主从数据一致性(可用 pt-table-checksum 工具),尤其在大表变更或网络抖动后
  • binlog 格式建议用 ROW,避免语句级复制在函数、临时表、非确定性操作下的不一致问题

适用场景与注意事项

该架构适合中大型业务系统,但并非万能:

  • 不适用于强一致性要求极高的金融类场景(仍需结合分布式事务或最终一致性补偿)
  • 双主写冲突需业务层规避(如分库分表、按业务域路由写入单一主库)
  • 版本统一很重要:四节点 MySQL 均建议使用 5.7.20+ 或 8.0.x,避免因协议/语法差异导致同步失败
  • 从库数量不宜过多(一般 2–4 台为宜),否则主库 I/O 和网络带宽可能成为瓶颈,此时可考虑多级复制替代

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

mysql

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

900

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2792

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

936

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

829

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

434

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2516

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4672

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

747

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 183人学习