日期:2026-07-11
难度:中等
标签:#面试 #MySQL #读写分离 #场景题
一句话答案
将写请求固定路由到主库、可延迟容忍的读请求路由到健康副本,并通过代理或应用数据源层管理路由、健康检查、权重和主从延迟兜底。
面试口语版
读写分离以主从复制为基础。写、事务内读、强一致读和刚写后的读必须走主库;普通列表、报表等允许短暂旧数据的读可以按权重走副本。实现可以放在应用层多数据源路由,也可用 ProxySQL、MySQL Router、ShardingSphere 等代理或中间件。关键不在“分流”而在一致性:要监控副本延迟,超过阈值摘除;对于 read-after-write 可以固定一段时间读主、按 GTID 等待副本追到指定位点,或由业务接受最终一致。
关键细节
- 不要只按 SQL 的 SELECT/UPDATE 字面判断:锁定读、事务读也应走主。
- 读写分离扩展的是读能力,主库写瓶颈仍需其他手段。
- 连接池、事务边界、故障切换和副本延迟都要纳入路由设计。
面试官追问
- 如何保证“写后立即读到”?
- 副本延迟时如何降级?
- 应用路由和代理路由怎么选?
学习清单
- 列出必须读主的四类请求。