redis cluster槽迁移

1.准备一个脚本

shell脚本:
(1)前两个槽表示槽的范围:起始的槽,结束的槽
(2)第三个表示端口号(本次实验在同一机器的不同端口启动多个redis来模拟redis cluster集群)

start=$1
end=$2
port=$3
for slot in `seq ${start} ${end}`
do
  echo "slot:${slot}"
  redis-cli -p ${port} cluster setslot ${slot} node 3ef8a64275ba5864beaa289d3f69ca3a22005bbb
done

2. 分为三步

(1)cluster setslot <slot> migrating <node_id> :将本节点的槽 slot 迁移到 node_id 指定的节点中。
(2)cluster setslot <slot> importing <node_id> :从 node_id 指定的节点中导入槽 slot 到本节点。
(3)cluster setslot < slot > node <node_id> :将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给
可能涉及的其他命令:
(4)cluster setslot <slot> stable :取消对槽 slot 的导入( import)或者迁移( migrate)

3. 具体步骤

我们要将:8001端口的5462-10922槽转移到8002上
查看node的id:redis-cli -p 8000 cluster nodes
在这里插入图片描述

3.1 对8001端口的redis执行迁出槽命令

将脚本中的redis命令行修改为:

redis-cli -p ${port} cluster setslot ${slot} migrating 3ef8a64275ba5864beaa289d3f69ca3a22005bbb

执行脚本:sh addslots.sh 5462 10922 8001

3.2 对8002端口的redis执行迁入槽命令

将脚本中的redis命令行修改为:

redis-cli -p ${port} cluster setslot ${slot} importing b27caf1a99d4f4e4ee76010a68588ac491a1b3ef

执行脚本:sh addslots.sh 5462 10922 8002

3.3 此时还没有通知8001端口和8002端口开始执行迁移,可以取消

cluster setslot <slot> stable :取消对槽 slot 的导入( import)或者迁移( migrate)

3.4 开始迁移

将脚本中的redis命令修改

redis-cli -p ${port} cluster setslot ${slot} node 3ef8a64275ba5864beaa289d3f69ca3a22005bbb

执行脚本:

sh addslots.sh 5462 10922 8001
sh addslots.sh 5462 10922 8002

3.5 迁移完成

(下面redis主从关系可能还未定义完成)
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值