首页/数据/Redis 进阶速查/replica-priority:哨兵选主权重
主从与哨兵51 条

replica-priority:哨兵选主权重

replica-priority 影响哨兵故障切换时的候选顺序:数值越小优先级越高,0 表示永不被提升(适合只读副本或跨机房备份节点)。

Redis 进阶速查数据更新于 2026-10-13

选主权重怎么起作用

replica-priority 决定哨兵故障转移时的候选顺序,默认 100,数值越小越优先被提升为新主库,设为 0 表示这个副本永不参与选主。它只影响同一轮候选的排序:复制偏移落后过多、或与主库断连时间过长的副本会先被排除,优先级再小也轮不到。典型用法是给同机房、配置更好的副本更小数值,给跨机房备份节点设 0。

基本信息

默认值replica-priority 100
语义数值越小越优先被提升
特殊值0 表示不参与选主
查看方式INFO replication 的 slave_priority 字段
历史命名4.0 前叫 slave-priority,旧配置文件需留意

典型使用场景

  • 同城双机房部署,希望切换后主库留在本机房降低跨机房延迟
  • 跨机房备份节点只承担容灾职责,明确禁止它被提升
  • 机器规格差异明显,让配置更高的副本优先接管写入
  • 演练中验证切换落点是否符合预期,再调整权重
  • 容量规划阶段按机房、规格统一梳理各副本的权重

查看与设置

查看与设置
redis-cli CONFIG SET replica-priority 10        # 本机房副本更优先
redis-cli CONFIG SET replica-priority 0         # 跨机房备份节点不参与选主
redis-cli INFO replication | grep -E 'slave_priority|master_link_status'
redis-cli -p 26379 SENTINEL masters | grep -E 'priority'   # 哨兵视角确认

取值对照

取值含义建议场景
10优先提升同机房、规格高的副本
100默认同级普通从库,由偏移量与断连时长决定
200靠后提升异地只读副本,尽量避免异地接管
0永不参与纯备份节点或只读分析节点

一次切换的候选顺序

  • 哨兵先把断连的副本排除,主库客观下线后进入候选筛选阶段
  • 剔除复制偏移落后过多或长时间未与主库保持连接的副本
  • 在剩余候选里按优先级数值从小到大排序,数值相同再看偏移量
  • 优先级为 0 的副本直接出局,无论它的数据有多新
  • 排序靠前的副本被提升,其余副本改为复制新主库
优先级只负责排序,不能弥补数据落后:一个偏移量差距很大的副本即使权重最优,也会因为数据太旧被排除在候选之外。
把所有副本都设为 0 是常见配置事故,哨兵找不到可提升的候选,故障转移直接失败,主库倒下后无人接管。

易错点

  • 全部副本权重设为 0,主库故障时哨兵无法完成切换,集群长期处于不可写状态
  • 以为权重能强制指定新主库:它只是排序依据,候选资格还受数据新鲜度约束
  • 跨机房备份节点没设 0,切换后主库漂到远端机房,业务延迟整体恶化
  • 旧配置文件沿用 slave-priority 命名,在新版本上未生效,切换落点与预期不符

数据来源与参考

  • Redis 官方文档:replica-priority 与哨兵选主说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌