428 字
2 分钟
MySQL 主从复制的基本流程是什么
经典 MySQL 异步复制链路是:主库提交事务并写 Binlog;副本的 I/O 接收线程连接主库拉取事件,写入本地 Relay Log;SQL applier 读取 Relay Log 并应用变更。现代版本也支持并行应用和不同复制通道等能力,但核心仍是日志事件传输及重放。副本需要配置唯一 server_id、复制账户、主库日志和复制源信息,并监控接收与应用状态。
异步复制下主库不等待副本确认,主库提交与副本可读之间存在时间差,故障切换可能丢失尚未传到副本的事务。半同步复制让主库等待至少一个副本确认接收并记录事件(具体语义依插件和配置),但确认接收不等于副本已执行,也不构成多副本强一致提交。GTID 可用事务标识简化复制位置管理和故障切换,但需理解拓扑与版本兼容。
排查可查看 SHOW REPLICA STATUS(旧版语法 SHOW SLAVE STATUS 已逐步替换),检查接收/应用线程、GTID/日志位置和错误。复制过滤、DDL 差异、非确定性语句和版本兼容都可能造成副本数据不一致。
追问
- Relay Log 是什么? 副本本地暂存从源端接收的 Binlog 事件,供 applier 后续应用。
- 半同步是否意味着副本已经执行事务? 不一定,通常确认的是至少一个副本接收并记录事件,具体以配置为准。
- GTID 的作用是什么? 给事务分配全局标识,便于副本定位已执行事务和拓扑切换。
MySQL 主从复制的基本流程是什么
https://blog.xqcherry.top/posts/interview/mysql/replication-basics/ 目录