1. MySQL主从复制概述
MySQL主从复制(Master-Slave Replication)是数据库领域最基础也最重要的高可用方案之一。作为一名数据库管理员,我在过去五年里部署和维护过数十套主从架构,可以说这是每个DBA必须掌握的看家本领。
简单来说,主从复制就像是一个"数据复印机":主库(Master)负责处理所有写操作,而从库(Slave)则实时"复印"主库的数据变更。这种架构带来的直接好处是:
- 读写分离:应用可以将写操作发给主库,读操作分散到多个从库
- 数据备份:从库相当于实时备份,主库故障时可快速切换
- 负载均衡:多个从库分担读取压力
- 高可用基础:为主备切换、故障恢复提供底层支持
实际生产中最常见的误区是把主从复制等同于高可用方案。事实上它只是高可用的基础组件,真正的故障自动切换还需要配合MHA、Orchestrator等工具。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 主从复制核心原理详解
2.1 三线程协作机制
主从复制的核心是三个组件的协同工作:
- 主库的Binlog Dump线程:负责将二进制日志推送给从库
- 从库的I/O线程:接收主库日志并写入中继日志
- 从库的SQL线程:重放中继日志中的SQL语句
sql复制-- 查看复制线程状态(从库执行)
SHOW PROCESSLIST;
你会看到类似如下的输出:
code复制+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
| 4 | system user | | NULL | Connect | 123 | Waiting for master to send event | NULL |
| 5 | system user | | NULL | Connect | 456 | Slave has read all relay log; waiting for more updates | NULL |
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
2.2 二进制日志格式解析
二进制日志(Binlog)是复制的基石,MySQL提供了三种记录格式:
| 格式类型 | 记录内容 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| STATEMENT | 原始SQL语句 | 日志量小 |
