前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RedisCluster 如何迁移数据

RedisCluster 如何迁移数据

作者头像
小土豆Yuki
发布2022-06-24 14:09:16
8950
发布2022-06-24 14:09:16
举报
文章被收录于专栏:洁癖是一只狗洁癖是一只狗

主要分为两步

  1. 槽迁移计划
  2. 迁移数据

槽迁移计划

迁移数据

我们按照一个槽来举例,主要分为下面几个步骤

对目标节点执行命令,让目标节点准备导入槽的数据

2.对源节点执行命令,让源节点准备迁出槽的数据

代码语言:javascript
复制
cluster setslot <slot> migrating <target_node_id>

3.源节点循环执行命令,获取到count个数据槽的数据

代码语言:javascript
复制
cluster getkeysinslot <slot> <count>

4.在源节点执行命令,把可以迁移过去

代码语言:javascript
复制
migrate <target_Ip> <target_port>  key 0 <timeout>

5.重复执行3,4步骤直到槽下的数据到目标节点

6.向集群中的其他主节点执行命令,通知槽已经分配给了目标节点

代码语言:javascript
复制
cluster setslot <slot> node <target_node_id>

整体流程如下

前面有介绍过手动迁移槽的过程,但是过程繁琐,容易出错,所以我们也可以用redis-cli自动迁移槽

代码语言:javascript
复制
redis-trib.rb reshard host:port --from <arg> --to <arg> --slots <arg> --yes --timeout <arg> --pipeline <arg>
参数说明:
host:port:必传参数,集群内任意节点地址,用来获取整个集群信息。
--from:制定源节点的id,如果有多个源节点,使用逗号分隔,如果是all源节点变为集群内所有主节点,在迁移过程中提示用户输入。
--to:需要迁移的目标节点的id,目标节点只能填写一个,在迁移过程中提示用户输入。
--slots:需要迁移槽的总数量,在迁移过程中提示用户输入。
--yes:当打印出reshard执行计划时,是否需要用户输入yes确认后再执行reshard。
-timeout:控制每次migrate操作的超时时间,默认为60000毫秒。
--pipeline:控制每次批量迁移键的数量,默认为10。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 洁癖是一只狗 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档