MySQL是大型架构的核心,下面我重点详解MySQL主从@mikechen
MySQL主从
MySQL主从技术是数据库系统中最常见、最重要的高可用与读写分离方案之一。
MySQL主从复制是指:主库(Master)负责写操作,从库(Slave/Replica)负责同步主库数据。

当主库发生数据变更时:
INSERT UPDATE DELETE
MySQL会将这些操作记录到Binlog(二进制日志)中,从库持续读取Binlog并重放执行,从而保持数据一致。
MySQL主从架构
典型架构通常是一主多从:主库负责写,从库负责读,前面配合应用层读写分离或中间件做流量切分。
如下图所示:

应用系统
│
┌──────────────┼──────────────┐
│ │
写请求 读请求
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ Master │ │ Slave1 │
│ 主库 │─────▶│ 从库 │
└─────────────────┘ └─────────────────┘
│
│
▼
┌─────────────────┐
│ Slave2 │
│ 从库 │
└─────────────────┘
典型的MySQL主从架构由以下几个角色构成:
主库(Master):负责接收写请求,并生成binlog;
从库(Slave/Replica):负责复制主库数据,可承担查询请求;
复制通道:用于主从之间传递binlog;
应用层:可根据业务需要将读写请求分离到不同数据库节点。
MySQL主从原理
MySQL主从复制的核心思想是:主库负责写入,从库负责接收并重放主库的变更日志。
主库在执行数据变更操作时,会将这些操作记录到二进制日志(Binary Log,简称binlog)中。
从库则通过复制线程读取主库的binlog,并在本地按顺序重放,从而保持数据一致。
整体流程,如下:

- 主库执行 INSERT/UPDATE/DELETE,把变更记录到 binlog。
- 从库 I/O 线程连接主库,请求并接收 binlog 事件。
- 主库的 binlog dump 线程把事件发送给从库。
- 从库把事件写入 relay log。
- SQL/applier 线程读取 relay log,并在从库执行同样的变更。