关系型数据库Replication
主从复制 是什么?
主库写 binlog,从库重放,实现备份、读写分离和高可用
类比:账本誊抄,正本写完抄一份副本
三步流程
复制是异步的,理解这三步就能理解延迟从哪来。
- 主库把变更写入 binlog(row 格式最常用)
- 从库 IO 线程拉取 binlog 写入 relay log
- 从库 SQL 线程重放 relay log,应用变更
延迟的成因与应对
大事务、无主键表的批量更新、从库硬件差、单线程重放(老版本)都会造成延迟。
- 开启并行复制(MTS,按组提交并行)
- 拆分大事务,批量更新分批执行
- 强一致读走主库,或使用半同步复制
- 监控 Seconds_Behind_Master,别等业务报错才发现
高可用切换
主库挂掉需要选一个延迟最小的从库提升为主。常见方案:MHA、Orchestrator、云厂商托管版。切换后要处理旧主的数据补偿和客户端重连。