首页/数据/Redis 进阶速查/redis-cli --cluster del-node 缩容

redis-cli --cluster del-node 缩容

del-node 移除节点:删主节点前必须先把它负责的槽迁走(reshard 到其他节点),删从节点可直接执行。

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

del-node 的作用

redis-cli --cluster del-node 把指定节点从集群拓扑中移除,它向集群内其他节点广播遗忘指令,让该节点不再参与投票与槽分配。删除从节点可以直接执行;删除主节点前必须先把该节点负责的全部槽迁走,否则会留下无主槽,集群状态会变成 fail,客户端写入立刻报 CLUSTERDOWN。这是缩容收尾的标准动作,顺序与扩容正好相反。

基本信息

命令格式redis-cli --cluster del-node <集群任一节点> <node-id>
节点标识40 位十六进制 CLUSTER NODES 中每行的首个字段
主节点前置先用 reshard 把槽全部迁走并 check 确认
执行结果CLUSTER NODES 中该节点消失,槽仍完整

典型使用场景

  • 机器到期退租,把节点从集群摘除后再下架服务器
  • 替换一台故障且确定不再恢复的主节点
  • 清理早期搭建集群时留下的测试节点与空主节点
  • 缩容过程中先把槽匀出再删节点,最后回收实例与端口
  • 误用 cluster meet 拉进了不该加入的节点时把它移出

缩容完整步骤

缩容完整步骤
redis-cli -p 7000 CLUSTER NODES | grep master         # 找出待删主节点的 node-id
redis-cli --cluster reshard 10.0.0.11:7000 --cluster-from <待删id> --cluster-to <目标id> --cluster-slots 5461 --cluster-yes
redis-cli --cluster check 10.0.0.11:7000                # 确认已无槽指向待删节点
redis-cli --cluster del-node 10.0.0.11:7000 <待删id>   # 执行移除
redis-cli --cluster check 10.0.0.11:7000                # 复核拓扑仍完整
redis-cli -p 7000 CLUSTER NODES | wc -l                # 节点数是否如预期减少

安全顺序与核对

步骤动作失败后果
1迁走待删主节点的全部槽残留无主槽,集群进入 fail
2check 确认槽覆盖完整漏检就删会带病下线
3执行 del-node 移除拓扑记录其他节点仍认为它在线并继续投票
4停止进程并清理数据目录仅为回收资源,不影响集群状态
del-node 只改拓扑,不会删任何数据文件、也不会停进程,实例与端口仍需按规范单独回收。
待删节点与其他节点之间必须网络可达,否则遗忘消息传播不完整,个别节点可能长期保留旧节点信息。

易错点

  • 主节点还带着槽就执行 del-node,被拒绝或留下无主槽,客户端立即报集群不可用
  • 先停掉进程再删节点:其他节点仍把它当作在线成员并参与投票,可能反复触发故障转移判断
  • 缩容后忘记回收实例,端口与数据目录长期残留,后续部署时端口冲突
  • 删除从节点前没有确认主库副本数,删完只剩单副本,抗故障能力下降

数据来源与参考

  • Redis 官方文档:cluster del-node 工具说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌