MySQL是大型架构的核心,下面我重点详解MySQL主从@mikechen
MySQL主从

MySQL主从(Master-Slave)复制是一种常见的数据库同步方案,用于实现数据冗余、读写分离与备份恢复。
主库负责处理写入和更新操作,且将这些变更以二进制日志(binlog)形式记录。
从库则读取并重放主库的二进制日志,从而保持与主库的数据一致性。
MySQL主从架构
在生产环境中,根据业务规模和容灾要求,通常有以下几种拓扑结构:

客户端 → 读写分离 Proxy (ProxySQL / MySQL Router)
├─ 写请求 → 主库 (Master)
└─ 读请求 → 从库1 / 从库2 / 从库3 ... (Replica)
主库 binlog → Dump Thread → 网络 → 从库 IO Thread → Relay Log → SQL Thread → 从库数据
一主一从 / 一主多从,最经典的模式。
主库处理事务,多个从库分担查询压力。
通过引入 Proxy 映射层(如 ShardingSphere 或 MyCat)实现业务透明的读写分离。
双主架构 (Master-Master)
两台机器互为主从:通常只开启其中一台的写入,另一台做热备,通过 Keepalived 实现 VIP 漂移。
级联同步 (Master-Slave-Slave)
当从库数量过多(如超过 5-10 个)时,主库由于同步带来的网络 IO 开销会急剧上升。
此时通过级联方式,让主库只带 2 个从库,其余从库从这 2 个从库同步数据,减轻主库压力。
MySQL主从原理
复制流程完整链路(以异步模式为例):

- 主库执行一个事务(INSERT/UPDATE/DELETE)。
- InnoDB 提交 → 写入 redo log → 刷盘(持久化);
- 同时写入 binlog(commit 后才算成功)。
- 从库 IO Thread 拉取 binlog 事件 → 写入 relay log。
- 从库 SQL Thread 读取 relay log → 解析 → 在本地执行。
- 执行成功 → 更新从库数据文件。