【Redis 技术探索】「数据迁移实战」

2023-01-10 00:00:00 集群 模式 节点 迁移 在线

在线数据迁移方式

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

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

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

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

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

scan模式的简单原理

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

scan模式的局限性

  • 如果某个 key 在迁移过程中一直存在,scan 模式能保证他一定被迁移
  • 如果某个 key 在迁移过程中不是一直存在,scan 模式不保证其一定被迁移
  • 如果某个 key 在迁移过程中被修改,scan 模式不保证修改能同步到对端
  • 可见 scan 模式会有许多缺点,所以推荐 sync 模式,其次 restore 模式。

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

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

实例信息

单机实例1

  • 地址:ip1
  • 端口:6379
  • 密码:123456

单机实例2

  • 地址:ip2
  • 端口:6379
  • 无密码

集群实例1

  • 地址:
    • 192.168.0.1:6379
    • 192.168.0.2:6379
    • 192.168.0.3:6379
    • 192.168.0.4:6379
  • 密码:123456

集群实例2

  • 地址:
    • 192.168.1.1:6379
    • 192.168.1.2:6379
    • 192.168.1.3:6379
    • 192.168.1.4:6379
  • 密码:123456

源Redis单机实例(1)到目标Redis单机实例(2)

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

yaml

相关文章