切换节奏的时间基准
切换超时不是单一含义的超时值,而是一组时间基准:它约束一次切换从发起到被判定失败的上限、失败之后再次尝试的等待间隔,以及切换完成后等待其余从库重新指向新主的时间。调小会让切换更快,但失败重试也更密集。
基本信息
| 默认值 | 180000 毫秒,即 3 分钟 |
|---|---|
| 配置位置 | 哨兵配置文件,也可运行时通过命令调整 |
| 查看方式 | 查询某个被监控主库的详情,其中的切换超时字段 |
| 作用范围 | 按被监控主库逐个配置,不同主库可不同 |
什么时候要调
- 从库数据量大、切换后追平耗时较长:需要放大,避免完成前就被判失败
- 快速恢复优先的业务:可适度调小,同时接受更高的重试频率
- 切换反复失败:先确认是不是候选从库太落后,而不是只盯这个参数
- 跨机房部署:重指向与同步都更慢,阈值要按最慢路径来定
查看与调整
查看与调整
redis-cli -p 26379 SENTINEL MASTER mymaster | grep -E 'failover-timeout|down-after'
redis-cli -p 26379 SENTINEL SET mymaster failover-timeout 180000 # 运行时调整
redis-cli -p 26379 SENTINEL CKQUORUM mymaster # 切换前确认票数可达
redis-cli -p 26379 SENTINEL FAILOVER mymaster # 手动切换同样受该时限约束
grep -E 'try-failover|failover-end|failover-state' /var/log/redis/sentinel.log | tail -20
redis-cli -p 26379 SENTINEL FLUSHCONFIG # 把运行时配置写回文件三处时间用途
| 用途 | 时间量 | 含义 |
|---|---|---|
| 切换失败的判定 | 从发起切换到判定失败 | 超时未完成则本次尝试失败 |
| 失败后的重试间隔 | 官方定义为两倍切换超时 | 同一主库不会立刻再次尝试 |
| 切换后的重指向 | 最长等待其余从库跟随新主 | 超时则记录并继续,不阻塞整体 |
| 与下线判定的区分 | 另一个参数管多久判下线 | 两者共同决定整体切换时长 |
| 与票数的区分 | 票数决定能否进入切换 | 票数不足时切换根本不会开始 |
这个参数只影响切换节奏,不影响多久判定主库下线。排查切换太慢时先分清是判定慢还是切换慢,两个问题要看的参数并不相同。
运行时通过命令修改只作用于当前哨兵实例,且不会写回配置文件。正式变更要同步更新所有哨兵的配置文件,并执行写回命令固化,否则换机或重启后配置会回退。
把它调到几秒只是让哨兵更快放弃与重试:切换更容易在从库尚未追平时反复失败,甚至出现切了又切的抖动。生产值应结合从库数据量、网络质量与业务恢复目标一起确定。