请说明 MySQL 主从复制的基本原理,并描述其实现流程包含哪些关键环节。
考察说明
考查对 MySQL 主从复制核心机制与实现路径的掌握程度。
回答思路
- 【回答框架 1】主从同步即主库将变更记录到二进制日志,从库通过 I/O 线程拉取并写入中继日志,再由 SQL 线程重放,实现数据复制。
- 【回答框架 2】核心环节包括:主库开启 binlog 并记录所有写操作;从库启动后先基于备份或快照做初始同步,再持续复制增量日志。
- 【回答框架 3】复制采用异步或半同步模式,异步下从库可能短暂滞后,半同步要求至少一个从库确认收到日志后才提交主事务,以降低数据丢失风险。
- 【回答框架 4】实现细节涉及 binlog 格式(statement、row、mixed),row 格式更安全但日志量大,statement 体积小但存在不确定函数问题。
- 【回答框架 5】常见问题包括复制延迟、主从数据不一致,需监控从库落后时间,并考虑并行复制或优化主库写入来缓解延迟。
- 【关键点 1】主从复制依赖 binlog 与 relay log 两阶段日志流转。
- 【关键点 2】I/O 线程负责拉取日志,SQL 线程负责重放日志。
- 【关键点 3】默认异步复制可能带来数据延迟,半同步可增强可靠性但影响性能。
- 【关键点 4】row 格式更精确但增加日志量,statement 格式体积小但可能无法正确复制某些语句。
- 【易错点 1】误以为半同步可以完全避免数据丢失,实际上仍需网络和从库故障的保障机制。
- 【易错点 2】忽略复制延迟可能导致读写分离下读到过期数据,应结合业务场景设计一致性策略。
- 【易错点 3】误认为 binlog 格式越优越好,实际需平衡日志量、复制准确性和性能开销。