选主权重怎么起作用
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 是常见配置事故,哨兵找不到可提升的候选,故障转移直接失败,主库倒下后无人接管。