首页/数据/数据库速查/扩容:加节点与接槽
Redis 运维与场景124 条

扩容:加节点与接槽

加节点两步:--cluster add-node 加入集群,再 reshard 把槽迁过去;加从节点则 --cluster add-node --cluster-slave --cluster-master-id。

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

扩容分两步:加入与接槽

在集群中新增一个节点只完成了一半工作:add-node 把节点加入集群的拓扑视图,此时它没有任何槽,也就没有任何数据。第二步是用 reshard 把一部分槽连数据一起迁移过去,新节点才开始承担流量。新增从节点则需要在加入时指定跟随的主节点,否则会被随机分配。

基本信息

适用平台Redis 3.0+ 的 Cluster 模式,redis-cli 带集群子命令
加主节点redis-cli --cluster add-node 新节点 现有节点
接槽redis-cli --cluster reshard 现有节点 --cluster-from --cluster-to --cluster-slots
加从节点add-node 时追加 --cluster-slave 与 --cluster-master-id
收尾校验redis-cli --cluster check

典型使用场景

  • 容量不足需要横向扩容主节点
  • 为某个主节点补充从节点,提高可用性
  • 替换故障节点:先加入新节点再迁移槽
  • 缩容前的逆操作准备:明确槽的迁入迁出流程
  • 演练扩容流程,验证数据迁移对业务的影响

加入主节点并接槽

加入主节点并接槽
# 第一步:把新节点加入集群(默认作为主节点,持有 0 个槽)
redis-cli --cluster add-node 10.0.0.7:6379 10.0.0.1:6379
# 第二步:把槽与数据从旧节点迁到新节点
redis-cli --cluster reshard 10.0.0.1:6379 \
  --cluster-from <源节点ID> --cluster-to <新节点ID> \
  --cluster-slots 2000 --cluster-yes
# 第三步:校验集群一致性
redis-cli --cluster check 10.0.0.1:6379

加入从节点

加入从节点
# 以从节点身份加入,并指定要跟随的主节点
redis-cli --cluster add-node 10.0.0.8:6379 10.0.0.1:6379 \
  --cluster-slave --cluster-master-id <目标主节点ID>
# 确认拓扑:应能看到该主节点下有 1 个从节点
redis-cli -h 10.0.0.1 CLUSTER NODES | grep -E 'master|slave'
redis-cli --cluster check 10.0.0.1:6379

参数与收尾

参数作用注意
add-node把节点加入集群默认成为未持槽的主节点
--cluster-slave以从节点身份加入必须配合主节点 ID
--cluster-master-id指定跟随的主节点缺失时会被随机分配
reshard --cluster-slots指定迁移的槽数量数量按容量规划确定
--cluster-yes跳过交互确认脚本化中使用,先确认参数正确
--cluster check一致性体检扩容后必做
新节点加入后不会自动获得数据:客户端的槽映射更新到全集群需要一点时间,迁移完成后用 CLUSTER SLOTS 或 --cluster check 确认拓扑已经同步。
扩容应选择合适的时段进行:reshard 过程中会逐键迁移并产生重定向,期间客户端可能收到 ASK 或 MOVED 响应,对延迟敏感的请求会受影响。

易错点

  • 加了主节点不接槽:集群容量没有任何变化,白扩容一场
  • 加从节点忘记指定 --cluster-master-id:从节点被随机挂到某个主节点下,保护目标错位
  • 迁移期间不做监控:重定向响应增加被误判为故障,运维在错误的方向上排查
  • 用 add-node 替代 reshard 完成扩容:数据不会迁移,槽归属与实际数据不一致

数据来源与参考

  • Redis 官方文档: 添加节点
  • Redis 官方文档: redis-cli --cluster add-node

相关工具

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