redis 集群多了之后,发现现在的有些节点有些多余没用,或者达不到用那么多节点的情况,那么就可以进行 节点的移除, 5.0 版本由于不用 ruby 进行集群操作了,所以方式跟5.0以前有很多不同的地方
我以我机器上的 7008 节点为例
首先登录集群, 使用 cluster nodes 查看信息
获取到 7008 节点的ID(红圈中前面 8f111b3074341e145105d70bc27cf501553f239f
执行下面命令(红色部分是7008节点的ID)
/usr/local/redis-5.0.5/bin/redis-cli --cluster del-node 192.168.58.129:7008 8f111b3074341e145105d70bc27cf501553f239f
出现以上信息代表成功
登录 7007 节点。查看节点信息
可以看到节点信息中已经没有 7008了
接着删除7007, 这个是一个主节点,删除起来比较麻烦一点,因为主节点分配了 slot槽, 所以这里我们必须先把 7007的slot槽放到其他的可用节点中去,然后再进行移除节点操作才行,不然会出现数据丢失问题
步骤一:把数据移动到其它主节点中去(目前只能把数据移到另外一个节点,没办法做到平均分配)
执行重新分片命令
/usr/local/redis-5.0.5/bin/redis-cli --cluster reshard 192.168.58.129:7007
打印以下信息
弹出以下提示:
上面看到7007 哪里 只有 199 个slot 槽,这里就填 199
回车之后 出现 what is the receiving node ID? 意思是你想移动到那个节点上
我想移动到 7003的节点上,那么此处输入 7003节点的ID
回车
出现以下界面
这里需要数据源,其实就是 7007 节点的ID,因为你是吧 7007 节点的数据放到其它地方去, 输入 7007 的ID,回车
出现以下界面,
其实是让你还可以选择源节点,但是我这里只要把 7007 节点分到其它地方就行,如果没有再把其它主节点分摊的需要,此处输入 done即可,否则输入其它节点的ID,最后输入 done
打印一堆信息,最后出现这个询问:
是否按照计划分配,输入yes
执行完成之后,输入 cluster nodes 查看节点信息
可以看到 7007 已经没有槽分配了
接下来,调用删除从节点的方式,删除主节点
/usr/local/redis-5.0.5/bin/redis-cli --cluster del-node 192.168.58.129:7007 861e1fcfd5c1f0b8b407fcda6bee0959d3ad2c10
移除成功,再次查看节点信息
可以看到 7007 也没有了