初始状态–cluster nodes
6000到6005一共6个节点,6001<–6004,6002<–6005,6000<–6003
现在要将6001和6004主从互换,并且要确保键不会丢,先在各master节点上设置几个键
删除节点6004–./redis-trib.rb del-node 127.0.0.1:6004 node-id(ip:port 是集群中任一节点,node-id是要删除的节点)
查看集群状态,还有5个节点–cluster nodes
启动6004,并清空数据(flushdb)和分配的槽–cluster delslots xxx xxx xxx
增加一个主节点–./redis-trib.rb add-node 127.0.0.1:6004 127.0.0.1:6001
重新分配槽–./redis-trib.rb reshard 127.0.0.1:6000
注,此处登录的端口最好不要是reshard的source node。中间会出错,下面的截图是source node登录的,中间有错并给出了解决方法。也有说出错是因为版本问题,参考连接https://www.jianshu.com/p/ba09ff851a6b
如果中间出错,重新执行时会提示
手动修复
登录非source node重新执行后,6001上没有分配槽
登录6001,清空数据(flushdb)后重新指定master–cluster replicate maser_node_id,之后查看集群状态并确认初始数据没有丢失
至此,更换主从节点角色完成。
参考资源
https://blog.csdn.net/shudaqi2010/article/details/60868718