redis集群删除节点
总阅读次
Redis集群删除节点
从Redis集群中移除节点的步骤是,先移除从节点,再移除主节点;在移除主节点的时候需要将移除主节点的槽move到其他的主节点上,不然数据就会丢失。
移除从节点
我们这里移动7008这个从节点
- 还是使用
redis-trib.rb
脚本;使用del-node
命令,指定删除节点的ip和端口,以及节点的id - 这样7008从节点就已经被移除
移除主节点
这里移除的是7007主节点,通过上面的截图我们也看到在7007节点上存储了一个key,我们要保证移除后这个key还存在集群中;移除主节点稍微有点麻烦。
- 还是使用
redis-trib.rb
脚本的reshard
命令,将节点重新分片;执行后让你输入需要移动多少个槽,这里我们输入1000 - 输入完后,需要指定接受槽的节点id,我们这里将这个1000个槽分给7002
- 下面需要选择分配模式,有
all
和done
两种,和添加节点一样,我们这里使用done
,因为使用all
在这里也没有效果,不可以将这1000个节点平均分给其他节点,只能分给一个节点。这里还需要指定移动槽的源节点id。 - 后面就是要你判断这个执行计划是不是你想要的,输入
yes
即可移除主节点的槽完成
移除节点后对数据的验证
将节点移除后,移除节点的数据不能丢失,这里是将7007节点的数据移动到7002上。
- 先查看7007节点上数据不是已经移除,并且获取原来7007上的key,是否会跳转到7002获取。
- 查看集群节点信息,7007节点还存在集群中
删除主节点
这是最后一步,将该主节点从集群中删除
- 还是使用
redis-trib.rb
脚本的del-node
命令 - 再次查看集群信息,集群将7007节点移除,并停止了7007进程
总结
在集群中删除节点的时候,需要注意主节点槽的转移。在3.0版本的redis中,槽的转移还不支持平均分配,只能分配到一个节点上。