MySQL是大型架构的核心,下面我重点详解MySQL主从复制@mikechen
MySQL主从
MySQL 主从复制(Master-Slave Replication),也称主从同步。

MySQL主从复制是数据库高可用、读写分离与备份恢复的重要手段。
MySQL主从架构
MySQL主从复制架构,如下:

+-------------------+
| Master |
| server-id = 1 |
| binlog 开启 |
| Binlog Dump Thread|
+-------------------+
|
| (TCP 3306 端口传输 binlog events)
+----------------+-----------------+
| |
v v
+---------------+ +---------------+
| Slave 1 | | Slave 2 |
| server-id = 2 | | server-id = 3 |
| IO Thread | | IO Thread |
| SQL Thread | | SQL Thread |
| relay-log | | relay-log |
+---------------+ +---------------+
| |
v v
Slave 数据文件 Slave 数据文件
主库(Master):负责处理写请求并将变更记录到二进制日志(binlog)。
从库(Slave):接收并应用来自主库的变更,通常负责读请求或备用切换。
IO 线程(Slave_IO):在从库上启动,与主库建立连接并读取主库的 binlog,写入从库本地的中继日志(relay log)。
SQL 线程(Slave_SQL):在从库上读取中继日志并将事件应用到从库数据文件。
复制拓扑可为一主多从、链式复制(主→从A→从B)或环形/多主(需额外冲突解决机制)等。
MySQL主从原理
主从复制,通常基于 MySQL 的 binlog。

首先,主库在执行 DDL 或 DML 时把变更写入 binlog;
然后,从库的 I/O 线程连接主库后拉取 binlog 内容,写入本地 relay log;
随后, SQL 线程读取 relay log 并在从库上顺序执行,从而达到同步效果。
简单来说,主库将所有数据变更记录在 binlog 中。
从库读取这些记录,并在自己身上重新执行一遍,从而保持数据同步。