首页/数据/数据库速查/集群故障排查(CLUSTERDOWN 等)
Redis 运维与场景124 条

集群故障排查(CLUSTERDOWN 等)

集群故障先看 CLUSTER INFO 的 cluster_state 与槽覆盖,再看 CLUSTER NODES 的节点状态与握手;CLUSTERDOWN 多为槽缺口或多数主节点失联,修复前先明确根因。

数据库速查数据更新于 2026-10-13

集群故障排查(CLUSTERDOWN)是什么

Redis Cluster 报 CLUSTERDOWN 通常有两种原因:槽没有全部被覆盖,或者多数主节点不可达导致集群失去法定票数。排查顺序是固定的——先看 CLUSTER INFO 的 cluster_state 与槽分配统计,再看 CLUSTER NODES 的节点角色与 fail 标记,最后确认是网络分区、节点宕机还是槽迁移没做完。集群操作不可回退,动手前先保存现场信息。

基本信息

适用版本Redis 3.0+ Cluster;命令名在 5.0 前后一致
核心命令CLUSTER INFO、CLUSTER NODES、CLUSTER SLOTS、redis-cli --cluster check
状态字段cluster_state(ok/fail)、cluster_slots_assigned、cluster_known_nodes
默认行为cluster-require-full-coverage yes 时有槽缺口则整体停止服务
客户端要求集群模式客户端需支持 MOVED/ASK 重定向(redis-cli 加 -c)
高危命令CLUSTER RESET 会清除节点身份与数据

典型使用场景

  • 业务报 CLUSTERDOWN:判断是槽缺口还是多数主节点失联
  • 扩容或缩容后槽迁移残留:找出未分配或仍处于迁移状态的槽
  • 节点故障恢复:确认故障节点归位后集群状态是否自动恢复
  • 客户端连接异常:确认是否因为没有开启集群模式而误判为实例故障
  • 变更前体检:用 --cluster check 做迁移与升级前的健康核对

诊断命令

诊断命令
# 集群整体状态:cluster_state / 槽覆盖 / 已知节点
redis-cli -c CLUSTER INFO

# 节点清单:角色、负责的槽、fail 与 handshake 状态
redis-cli -c CLUSTER NODES

# 体检(推荐,输出更易读)
redis-cli --cluster check 10.0.0.1:6379

# 查看槽分配明细
redis-cli -c CLUSTER SLOTS | head

# 客户端连接必须带 -c,否则会因 MOVED 误判为故障

常见修复动作(确认根因后执行)

常见修复动作(确认根因后执行)
# 1) 新节点未入集群:手动握手
# CLUSTER MEET <ip> <port>

# 2) 迁移卡住收尾:把槽置为 STABLE
# CLUSTER SETSLOT <slot> STABLE

# 3) 未分配的槽重新指派(在目标节点执行)
# CLUSTER ADDSLOTS <slot...>

# 4) 自动修复(谨慎,先备份现场)
redis-cli --cluster fix 10.0.0.1:6379

关键字段读法

字段含义异常判断
cluster_state集群可用状态fail 常见于槽未全覆盖或多数主节点不可达
cluster_slots_assigned已分配槽数量小于 16384 说明有槽缺口
cluster_known_nodes已知节点数量少于预期说明节点未加入或已失联
cluster_size提供槽的主节点数与预期不符说明角色错乱
require-full-coverage槽缺口是否全局停止服务yes 时一个分片故障会影响整个集群
排查前先保存现场:把 CLUSTER NODES 输出与各节点配置文件复制一份留档,集群操作几乎没有回退路径,改错一步可能需要几小时重建;这也是变更评审要求「先证据后动作」的原因。
CLUSTER RESET 会清除节点身份与数据,生产环境禁止随手执行;另外忽略了 cluster-require-full-coverage=yes 的语义,容易误以为「坏一个分片只影响部分数据」,实际该配置下全集群都会拒绝服务。

易错点

  • 用不带 -c 的 redis-cli 连接集群:MOVED 报错被误判为实例故障
  • 误判 require-full-coverage 语义:以为只影响部分数据,实际整个集群拒服务
  • 现场未留档就动手修:集群操作不可回退,出问题只能重建
  • 把 maxmemory 设得过低导致节点被淘汰/触发保护:节点写入失败引发集群状态变化,排查要从节点自检日志入手
  • 网络分区期间多方各自执行故障转移:出现多主冲突,需要人工仲裁与修复

数据来源与参考

  • Redis 官方文档: Cluster 管理
  • Redis 官方文档: CLUSTER INFO

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌