sentinel set 仅支持热更新 down-after-milliseconds、failover-timeout、parallel-syncs、quorum 等运行时可变参数,不支持修改 sentinel monitor、auth-pass、known-replica 等静态拓扑配置,成功执行后立即生效但不持久化,需人工同步修改 sentinel.conf。

SENTINEL SET 命令能改哪些参数?
不是所有哨兵配置都能热更新。SENTINEL SET 仅支持修改少数运行时可变参数,比如 down-after-milliseconds、failover-timeout、parallel-syncs、quorum 等与故障判定和切换行为强相关的项。像 sentinel monitor 监控目标、sentinel auth-pass 密码、sentinel known-replica 这类静态拓扑信息,SENTINEL SET 无法修改,强行调用会返回 ERR Unsupported CONFIG parameter 或静默失败。
常见误操作:把 sentinel.conf 里写的 sentinel down-after-milliseconds mymaster 5000 改成 3000 后,直接执行 SENTINEL SET mymaster down-after-milliseconds 3000 —— 这步是对的;但若想用它加一个新主节点监控,就注定失败。
修改后是否立即生效?需不需要重启哨兵进程?
只要 SENTINEL SET 执行成功(返回 OK),对应参数就立刻参与后续判断逻辑,无需重启哨兵进程。例如将 down-after-milliseconds 从 5000 改为 2000,哨兵会在下一个心跳周期开始按新阈值检测 PING 响应超时。
但要注意:SENTINEL SET 不会自动持久化到磁盘配置文件,只作用于当前运行时内存。这意味着:
- 哨兵进程意外崩溃或被 kill 后重启,会读取原始
sentinel.conf,丢失所有SET修改 - 手动执行
CONFIG REWRITE对哨兵无效(Redis 服务器才支持) - 唯一可靠方式是:先用
SENTINEL SET热更新,再人工编辑sentinel.conf并同步到所有哨兵节点
哪些场景下必须重启哨兵?
以下情况无法绕过重启:
– 修改 sentinel monitor 的监控目标(如换 master 地址或端口)
– 新增或删除 sentinel known-replica / sentinel known-sentinel
– 更改 sentinel auth-user / sentinel auth-pass(认证凭据变更)
– 调整 sentinel resolve-hostnames 开关(影响 DNS 解析行为)
这些操作本质是重建哨兵的内部监控上下文,运行时无法安全替换。强行不重启,会导致哨兵持续尝试连接旧地址、忽略新从节点、或在 failover 时选错目标。
实操建议:怎么避免改错又丢配置?
线上环境动哨兵配置,优先走「先测后推」流程:
– 在单个哨兵上试 SENTINEL SET,用 SENTINEL MASTER mymaster 查看 down-after-milliseconds 字段是否已变
– 修改完立刻检查 SENTINEL SENTINELS mymaster,确认其他哨兵没因配置不一致产生 odown 误判
– 所有哨兵都 SET 完后,统一更新各节点的 sentinel.conf 文件,尤其注意 sentinel monitor 行末的 quorum 数值要一致
– 别依赖 CONFIG GET 查哨兵配置 —— 它对哨兵实例返回空或报错,只能用 SENTINEL MASTER / SENTINEL SENTINELS 这类哨兵专属命令
最常被忽略的一点:哨兵之间通过 gossip 同步的是「客观下线状态」和「failover 投票结果」,不是配置本身。哪怕你只改了一个哨兵的 quorum,它投票时仍用自己本地值,可能造成脑裂或 failover 卡住。










