在一个集群中有4主4从,假设为M1+S1,M2+S2,M3+S3,M4+S4。每个master节点有4096 slots。现在要将M4从集群中删掉。那么步骤如下:
1)执行如下命令
redis-trib.rb reshard 192.168.2.107:7001
ip和port可以是集群中任何一个实例。输入要移动的slots是1365(平均),然后选好一个目标,比如M1,源肯定是M4,一路执行完成后,发现M1上多了1365个slots;而M4上则少了1365个slots。
2)从M4移出1365个slots到M2中,命令同上。
3)从M4移出1366个slots到M3中,命令同上。
4)执行命令如下
redis-trib.rb del-node
192.168.2.118:7003
c71d99aecf1ba58ecb9640d5509fd7f6de4b96c9
这条命令一执行完,不仅M4从集群中踢出去了,而且M4也已经shutdown了。
注意:
1) redis-trib.rb del-node 命令不仅将M4从集群中踢出去了,而且M4也已经shutdown了。
2)当你清空了一个master的hashslot时,redis cluster就会自动将其slave挂载到其他master上去,这个时候就只要删除掉master就可以了。