缩容就是下线一组主从,例如我们这里下线7006 和7007。
现在7006是有槽位,就先不能直接删除,需要迁移槽位
下线迁移槽:
redis-cli --cluster reshard 192.168.0.6:7000 --cluster-from 06950ff53eaf7984aa08bc0008ca87153f51ba0f --cluster-to 87cdf3fb6cb3bc4761b4790694f9161a09348d3e --cluster-slots 4096
上面ip和port可以是集群中任意一个,代表集群, --cluster- from
后面是7006(要迁移,要删除的节点id) --cluster-to
后面是迁移到7000的id。 --cluster-slots
4096 是迁移的槽位数。
中间需要一个yes
然后看cluster nodes 7006上已经没有槽位了,并且7000的槽位是最多的。
把槽位转移好后,现在开始删除节点,通过help可以看到del node 命令。
/usr/local/bin/redis-cli --cluster del-node 192.168.0.6:7000 cc72eaacbc88045413daa26d2a333ce151f553e7
中间的ip和port都可以,然后先删7007,再删7006。
>>> Removing node cc72eaacbc88045413daa26d2a333ce151f553e7 from cluster 192.168.0.6:7000
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
输入和输出如下。
/usr/local/bin/redis-cli --cluster del-node 192.168.0.6:7000 06950ff53eaf7984aa08bc0008ca87153f51ba0f
>>> Removing node 06950ff53eaf7984aa08bc0008ca87153f51ba0f from cluster 192.168.0.6:7000
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
检查一下就删完了
192.168.0.6:7000> cluster nodes
39cbfd050648917993dbb91ffccff397bd6042c6 192.168.0.6:7004@17004 slave 492f681a67d9e05a215aae501c69b35da5af1655 0 1584603101000 5 connected
87cdf3fb6cb3bc4761b4790694f9161a09348d3e 192.168.0.6:7000@17000 myself,master - 0 1584603102000 8 connected 0-6826 10923-12287
c935c339cc1df119998ca1324e1571fe23c05e91 192.168.0.6:7005@17005 slave bfdb137dd3549040321b2fadb29140ec9ec9dac6 0 1584603102242 6 connected
bfdb137dd3549040321b2fadb29140ec9ec9dac6 192.168.0.6:7002@17002 master - 0 1584603103244 3 connected 12288-16383
492f681a67d9e05a215aae501c69b35da5af1655 192.168.0.6:7001@17001 master - 0 1584603101239 2 connected 6827-10922
120bca4da8437635fdd006fe788768c65d4d46f8 192.168.0.6:7003@17003 slave 87cdf3fb6cb3bc4761b4790694f9161a09348d3e 0 1584603103000 8 connected