MySQL主从全面详解(架构+原理+步骤)

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

MySQL主从

MySQL主从全面详解(架构+原理+步骤)-mikechen

MySQL主从(Master-Slave)复制是一种常见的数据库同步方案,用于实现数据冗余、读写分离与备份恢复。

主库负责处理写入和更新操作,且将这些变更以二进制日志(binlog)形式记录。

从库则读取并重放主库的二进制日志,从而保持与主库的数据一致性。

 

MySQL主从架构

在生产环境中,根据业务规模和容灾要求,通常有以下几种拓扑结构:

MySQL主从全面详解(架构+原理+步骤)-mikechen

客户端 → 读写分离 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主从原理

复制流程完整链路(以异步模式为例):

MySQL主从全面详解(架构+原理+步骤)-mikechen

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

评论交流
    说说你的看法