文章目录
  1. 1. Redis集群删除节点
    1. 1.1. 移除从节点
    2. 1.2. 移除主节点
    3. 1.3. 移除节点后对数据的验证
    4. 1.4. 删除主节点
  2. 2. 总结

Redis集群删除节点

从Redis集群中移除节点的步骤是,先移除从节点,再移除主节点;在移除主节点的时候需要将移除主节点的槽move到其他的主节点上,不然数据就会丢失。

移除从节点

我们这里移动7008这个从节点

  • 还是使用 redis-trib.rb 脚本;使用 del-node 命令,指定删除节点的ip和端口,以及节点的id
    redis集群移除从节点1
    redis集群移除从节点2
  • 这样7008从节点就已经被移除

移除主节点

这里移除的是7007主节点,通过上面的截图我们也看到在7007节点上存储了一个key,我们要保证移除后这个key还存在集群中;移除主节点稍微有点麻烦。

  • 还是使用 redis-trib.rb 脚本的 reshard 命令,将节点重新分片;执行后让你输入需要移动多少个槽,这里我们输入1000
    redis集群移除主节点1
  • 输入完后,需要指定接受槽的节点id,我们这里将这个1000个槽分给7002
  • 下面需要选择分配模式,有alldone 两种,和添加节点一样,我们这里使用done,因为使用all 在这里也没有效果,不可以将这1000个节点平均分给其他节点,只能分给一个节点。这里还需要指定移动槽的源节点id。
    redis集群移除主节点2
  • 后面就是要你判断这个执行计划是不是你想要的,输入yes 即可移除主节点的槽完成
    redis集群移除主节点3

移除节点后对数据的验证

将节点移除后,移除节点的数据不能丢失,这里是将7007节点的数据移动到7002上。

  • 先查看7007节点上数据不是已经移除,并且获取原来7007上的key,是否会跳转到7002获取。
    redis集群移除验证数据是否丢失
  • 查看集群节点信息,7007节点还存在集群中
    redis集群移除查看集群信息

删除主节点

这是最后一步,将该主节点从集群中删除

  • 还是使用 redis-trib.rb 脚本的 del-node 命令
    redis集群移除主节点4
  • 再次查看集群信息,集群将7007节点移除,并停止了7007进程
    redis集群移除后查看集群信息
    redis集群移除后7007节点进程被shutdown

总结

在集群中删除节点的时候,需要注意主节点槽的转移。在3.0版本的redis中,槽的转移还不支持平均分配,只能分配到一个节点上。

文章目录
  1. 1. Redis集群删除节点
    1. 1.1. 移除从节点
    2. 1.2. 移除主节点
    3. 1.3. 移除节点后对数据的验证
    4. 1.4. 删除主节点
  2. 2. 总结