概念定义
读副本通过应用同一有序变更流——通常是主库的预写式日志——维护一份主库数据的拷贝。客户端连接它以执行只读查询,从而为主库卸载读负载。由于常见配置下复制是异步的,副本是数据的稍旧视图。同步复制能减少延迟,却把写延迟与副本健康耦合起来。
为什么重要
大多数应用读远多于写,因此即便写量不大,主库也会成为读瓶颈。副本横向增加读能力,让繁重的报表或搜索查询远离事务流量。它们还提供用于故障切换的热备,以及按用途对工作负载做天然划分,代价是读路径上的最终一致性。
工程实践
把只读且能容忍陈旧的查询路由到副本,把读己之写留在主库,或用一个会钉住主库直到该写确已复制的会话。监控复制延迟,并在其增长时显式降级。对写密集工作负载限制副本数量,因为每个副本都会给主库增加复制开销。测试故障切换,包括会丢失多少尚未应用的日志,并把被提升的副本视为恢复点而非保证。