复制相关配置是什么
从库的复制配置决定它在链路中的行为:默认是否只读、链路断开时是否继续用旧数据服务、连主库用什么密码、在哨兵选举里的优先级,以及主库侧的写安全阀。这几项共同决定故障来临时,系统是「宁可短暂不可用也不丢数据」,还是「宁可给旧数据也不报错」,需要按业务性质选择。
基本信息
| 只读 | replica-read-only,默认 yes,防止误写导致主从分叉 |
|---|---|
| 旧数据服务 | replica-serve-stale-data,默认 yes |
| 复制鉴权 | masterauth,主库有密码时必配 |
| 选举优先级 | replica-priority,0 表示不参与提升 |
| 写安全阀 | min-replicas-to-write 与 min-replicas-max-lag |
典型使用场景
- 新建从库时补齐复制参数,避免带默认值上线
- 从库被误写导致数据分叉后加固参数
- 哨兵环境下调整实例的选举优先级,让新主更合理
- 对丢数据零容忍的业务配置写安全阀,防止脑裂
- 链路抖动时决定读请求是报错还是继续读旧数据
配置片段
配置片段
replica-read-only yes
replica-serve-stale-data yes
masterauth 主库密码
replica-priority 100
# 至少 1 个健康从库、延迟不超过 10 秒才允许写入:
min-replicas-to-write 1
min-replicas-max-lag 10配置项与风险
| 配置项 | 默认值 | 作用与风险 |
|---|---|---|
| replica-read-only | yes | 设为 no 后从库写入会造成分叉,切换时数据回滚 |
| replica-serve-stale-data | yes | 设为 no 后链路断开时读请求直接报错 |
| masterauth | 无 | 主库有密码却不配会导致复制反复失败 |
| replica-priority | 100 | 设为 0 表示不参与选举,适合只读副本 |
| min-replicas-to-write | 0 | 设成 1 或 2 可防脑裂,但过严会在抖动时拒绝写 |
允许从库写入是事故的常见起点:即便临时排障也建议保持只读,需要写入时走正规的提升流程,而不是把只读开关关掉图省事。
写安全阀是把双刃剑:它用可用性换一致性,网络抖动时主库会直接拒绝写。启用前必须与业务确认「短暂不可写」是否优于「可能丢数据」。
replica-priority 是哨兵选举的依据:把性能较差的实例优先级调低,能避免切换后新主立刻成为新瓶颈;设成 0 的实例完全不参选,适合只读副本。