Login
网站首页 > 文章中心 > 其它

【Redis 技术探索】「数据迁移实战」手把手教你如何实现在线 + 离线模式进行迁移 Redis 数据实战指南_scan模式迁移)

作者:小编 更新时间:2023-08-11 22:21:24 浏览量:210人看过

在线数据迁移方式

对于大多数场景下的Redis的数据迁移,还是比较推荐大家参考我之前的前两篇文章.

【Redis 技术探索】「数据迁移实战」手把手教你如何实现在线 + 离线模式进行迁移 Redis 数据实战指南(在线同步数据)

【Redis 技术探索】「数据迁移实战」手把手教你如何实现在线 + 离线模式进行迁移 Redis 数据实战指南(离线同步数据)

scan模式在线数据迁移的场景和原因

但是还有一种常见是前两篇文章无法实现的,就是当云厂商出于种种考虑禁用了Redis的 psync 命令时,前述方案不可用. 对于这种情况可以使用redis-shake的scan模式来进行数据迁移.

【Redis 技术探索】「数据迁移实战」手把手教你如何实现在线 + 离线模式进行迁移 Redis 数据实战指南_scan模式迁移)-图1

scan模式的简单原理

原理是调用scan命令来获取 Redis 中的 key,然后使用 dump 命令获取 key 的内容,最终使用 restore 命令恢复 key 至目的端.

scan模式的局限性

【Redis 技术探索】「数据迁移实战」手把手教你如何实现在线 + 离线模式进行迁移 Redis 数据实战指南_scan模式迁移)-图2

如果某个 key 在迁移过程中一直存在,scan 模式能保证他一定被迁移

如果某个 key 在迁移过程中不是一直存在,scan 模式不保证其一定被迁移

如果某个 key 在迁移过程中被修改,scan 模式不保证修改能同步到对端

可见 scan 模式会有许多缺点,所以推荐 sync 模式,其次 restore 模式.

redis-shake 的 scan 模式来迁移数据案例

使用redis-shake的scan在线迁移操作,主要通过scan.toml文件进行配置和执行迁移操作,如下图所示.

【Redis 技术探索】「数据迁移实战」手把手教你如何实现在线 + 离线模式进行迁移 Redis 数据实战指南_scan模式迁移)

实例信息

单机实例1地址:ip1

无密码

修改 scan.toml,改为如下配置:

type = "scan"
[source]
address = "ip1:6379"
password = "123456"

[target]
type = "standalone"
address = "ip2:6379"
password =

./redis-shake scan.toml

type = "scan"
[source]
address = "ip1:6379"
password = "r-aaaaa:xxxxx"
[target]
type = "cluster"
address = "192.16⑧0.1:6379" # 这里写集群中的任意一个节点的地址即可,redis-shake可以根据这个ip地址,拉取集群的其他节点的ip和端口信息.
password = "123456"

./redis-shake scan.toml

脚本cluster_helper.py方便启动多个 redis-shake 从集群迁移数据,效果等同于方法1.

源端有多少个分片,cluster_helper.py 就会起多少个 redis-shake 进程,所以如果源端分片数较多的时候,需要评估当前机器是否可以承担这么多进程.

cluster_helper.py 异常退出的时候,可能没有正常退出 redis-shake 进程,需要 ps aux | grep redis-shake 检查.

每个 redis-shake 进程的执行日志记录在 RedisShake/cluster_helper/data/xxxxx 中,反馈问题请提供相关日志.

cd RedisShake/cluster_helper
pip3 install -r requirements.txt

修改 scan.toml:

type = "scan"
[source]
address = "192.16⑧0.1:6379" # 集群 C 中任意一个节点地址
password = "r-ccccc:xxxxx"

[target]
type = "cluster"
address = "192.16⑧1.1:6380" # 集群 D 中任意一个节点地址
password = "r-ddddd:xxxxx"

cd RedisShake/cluster_helper
python3 cluster_helper.py ../redis-shake ../scan.toml

参数 1 是 redis-shake 可执行程序的路径

【Redis 技术探索】「数据迁移实战」手把手教你如何实现在线 + 离线模式进行迁移 Redis 数据实战指南_scan模式迁移)

B配置文件:

source 的 address 写源端的 master 或 slave 节点地址,推荐 slave 节点.

target 的 address 些目的端的 master 节点地址.

以上就是土嘎嘎小编为大家整理的【Redis 技术探索】「数据迁移实战」手把手教你如何实现在线 + 离线模式进行迁移 Redis 数据实战指南_scan模式迁移)相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章