首页/数据/数据库速查/复制相关配置(read-only / stale-data / auth)
Redis 运维与场景124 条

复制相关配置(read-only / stale-data / auth)

从库默认只读、可在主从断开时继续服务旧数据;生产还需要 masterauth、replica-priority、min-replicas 系列保证一致与可用性。

数据库速查数据更新于 2026-10-13

复制相关配置是什么

从库的复制配置决定它在链路中的行为:默认是否只读、链路断开时是否继续用旧数据服务、连主库用什么密码、在哨兵选举里的优先级,以及主库侧的写安全阀。这几项共同决定故障来临时,系统是「宁可短暂不可用也不丢数据」,还是「宁可给旧数据也不报错」,需要按业务性质选择。

基本信息

只读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-onlyyes设为 no 后从库写入会造成分叉,切换时数据回滚
replica-serve-stale-datayes设为 no 后链路断开时读请求直接报错
masterauth无主库有密码却不配会导致复制反复失败
replica-priority100设为 0 表示不参与选举,适合只读副本
min-replicas-to-write0设成 1 或 2 可防脑裂,但过严会在抖动时拒绝写
允许从库写入是事故的常见起点:即便临时排障也建议保持只读,需要写入时走正规的提升流程,而不是把只读开关关掉图省事。
写安全阀是把双刃剑:它用可用性换一致性,网络抖动时主库会直接拒绝写。启用前必须与业务确认「短暂不可写」是否优于「可能丢数据」。
replica-priority 是哨兵选举的依据:把性能较差的实例优先级调低,能避免切换后新主立刻成为新瓶颈;设成 0 的实例完全不参选,适合只读副本。

易错点

  • 把 replica-read-only 改成 no 做临时写入:主从数据分叉,切换后数据回滚
  • min-replicas 设置过严:从库一抖动主库就拒绝写,可用性反而下降
  • 主库有密码却漏配 masterauth:复制链路反复重连失败,延迟持续增大
  • 只读副本不设 replica-priority 0:哨兵可能把它提升为新的主库

数据来源与参考

  • Redis 官方文档: 复制配置
  • Redis 官方文档: min-replicas-to-write

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌