外观
一句话答案
主库写 binlog→从库 IO 线程拉取写 relay log→SQL 线程重放,支持异步/半同步/组复制。
核心要点
三个线程:
- 主库 Binlog Dump Thread:发送 binlog
- 从库 IO Thread:接收写入 relay log
- 从库 SQL Thread:重放 relay log
同步方式: 异步(默认) / 半同步(至少一个从库确认) / 组复制(Paxos)
追问与易错
追问方向:
- 主从延迟怎么监控和减少?
- binlog 格式选 ROW 还是 STATEMENT?
- 主库崩溃切从库可能丢数据吗?
易错点:
- ❌ 从库数据和主库完全一致——有延迟
- ❌ 主从复制是同步的——默认异步
💡 记忆锚点
主从复制像抄笔记:老师(主库)在黑板上写板书(binlog),课代表(IO 线程)把板书抄到笔记本(relay log),学生(SQL 线程)照着笔记本做作业(重放)。默认异步抄写所以有延迟,半同步要求至少一个学生举手确认抄到了才继续讲课。