MySQL是大型架构的核心,下面我重点详解MySQL主从原理@mikechen
MySQL主从
MySQL主从复制(Master-Slave Replication),是一种常见的数据库高可用性、和数据架构方案。
通过将主数据库(Master)的更改,同步到从数据库(Slave),实现数据冗余、负载均衡和故障恢复。
主要特点与作用:
-
实时灾备,方便故障切换;
-
读写分离,减轻主库压力,提高读性能;
-
数据备份,避免对业务的影响。
MySQL主从原理
MySQL 主从复制依赖于 二进制日志(Binary Log,简称 binlog)。
简单来说,主库将所有数据变更记录在 binlog 中,从库读取这些记录,并在自己身上重新执行一遍,从而保持数据同步。
主要,包含3大关键步骤:
① 主库记录 binlog 日志
当主库执行写操作(如 INSERT
、UPDATE
、DELETE
)时:
-
MySQL 在执行事务时,除了更新数据文件,还会将变更操作记录到 binlog(二进制日志);
-
binlog 记录的是“发生了什么操作”,而不是数据文件本身;
-
事务提交后,binlog 刷盘持久化。
📌 这一阶段是复制的起点。
② 从库 I/O 线程拉取日志并写入 relay log
当从库启动复制后:
-
从库通过 I/O 线程 连接主库;
-
主库启动 Binlog Dump 线程,将 binlog 内容发送给从库;
-
从库接收到日志后,写入本地 relay log(中继日志) 文件中。
📌 relay log 是主库 binlog 的本地缓存副本。
③ 从库 SQL 线程重放 relay log
最后:
-
从库的 SQL 线程 读取 relay log;
-
按顺序执行其中的 SQL 语句;
-
从库数据同步到与主库一致的状态。
这一步是真正的数据同步阶段,执行完后,主从数据完全一致。