首页/数据/Redis 进阶速查/SENTINEL FLUSHCONFIG:固化配置
主从与哨兵51 条

SENTINEL FLUSHCONFIG:固化配置

SENTINEL FLUSHCONFIG 把运行期变更(如 failover 后的主库地址)写回 sentinel 配置文件;否则重启后可能回到旧配置。

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

把运行态写回配置文件

哨兵在内存里维护着一份运行状态:被监视的主库地址、已知副本列表、当前认定的主库、故障转移记录等。这份状态会在拓扑变化时自动重写到 sentinel 配置文件,Sentinel 也提供 SENTINEL FLUSHCONFIG 手工触发一次固化,把内存中的状态立即落盘。手工改过拓扑、用脚本调过参数、或者怀疑文件与运行态不一致时,用它对齐。命令生效的前提是配置文件的属主对哨兵进程可写,容器里挂成只读就必然失败。

基本信息

命令SENTINEL FLUSHCONFIG
默认端口26379
作用对象哨兵配置文件(sentinel.conf)
前置条件配置文件对哨兵进程可写
配套命令SENTINEL MASTERS / SENTINEL REPLICAS
生效范围仅当前这一个哨兵节点
实测方式对比文件修改时间与内容

典型使用场景

  • 手工执行过 SENTINEL MONITOR 之类的运行期变更后,确认状态已经落盘
  • 运维脚本批量改过哨兵参数,需要一次性固化避免遗漏
  • 重启哨兵之前先固化,防止重启后拓扑回退到旧地址
  • 容器或配置管理工具接管过 sentinel.conf,校验运行态与文件是否一致
  • 巡检例程中定期固化并留档,作为拓扑变更基线
  • 演练故障转移之后,把新拓扑固化并核对文件内容

固化与核对

固化与核对
redis-cli -p 26379 SENTINEL FLUSHCONFIG         # 把当前状态写回配置文件
redis-cli -p 26379 SENTINEL MASTERS            # 查看被监视主库列表
redis-cli -p 26379 SENTINEL REPLICAS mymaster  # 查看该主库的副本
redis-cli -p 26379 SENTINEL GET-MASTER-ADDR-BY-NAME mymaster
redis-cli -p 26379 INFO sentinel              # 概览哨兵自身状态
ls -l /etc/redis/sentinel.conf                 # 确认可写与修改时间

不一致的后果与处理

场景表现处理
故障转移后未落盘重启哨兵回到旧主库地址固化后核对文件内容
容器只读挂载固化失败或重启即回退改为可写挂载或由外部渲染
配置管理覆盖文件工具渲染把哨兵写入覆盖把哨兵写入纳入回读逻辑
只固化单节点各哨兵文件内容不一致逐节点固化并比对
哨兵在拓扑变化时通常会自动重写配置,FLUSHCONFIG 的价值在于「立刻」和「可核对」,不是唯一的落盘途径。
容器化部署时,配置文件由 ConfigMap 之类只读资源挂载,哨兵无法写回;这种情况要让配置来源能反映真实拓扑,否则重启即回退。
固化只影响执行命令的那个哨兵节点,多节点部署要逐台执行并比对文件差异。

易错点

  • 运行态与文件长期不一致,重启后拓扑回退并可能引发一次多余的切换
  • 固化后没核对文件内容,把错误的运行态持久化下来
  • 容器里只读挂载导致固化失败,且失败信息埋在日志里不易察觉
  • 只固化其中一台哨兵,各节点认知不一致,故障判定出现分歧
  • 把固化当成备份手段,文件被覆盖或误删后无法恢复拓扑认知

数据来源与参考

  • Redis 官方文档:Sentinel 管理命令
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌