云数据库 Redis 使用redis-shake迁移RDB文件内的数据

By | 2021年4月22日

使用redis-shake的restore模式,您可以将自建Redis的备份文件内的数据迁移到一个云数据库Redis版实例中,实现自建Redis上云。

前提条件

  • 已创建作为迁移目的端的云数据库Redis版实例。
  • 已创建用于运行redis-shake的ECS实例。
  • ECS实例可以访问目的Redis实例。
  • ECS实例的系统为Linux。
  • 已将备份文件保存到ECS中。

背景信息

redis-shake是阿里云自研的开源工具,支持对Redis数据进行解析(decode)、恢复(restore)、备份(dump)、同步(sync/rump)。在restore模式下,redis-shake可以将RDB文件中保存的数据恢复到Redis实例中,实现数据恢复或者迁移,本文以将RDB文件中的数据恢复到云数据库Redis版实例中从而实现Redis上云迁移为例。

说明 如需了解更多redis-shake相关信息,请参见
redis-shake Github主页
FAQ

操作步骤

  1. 登录可以连接云数据库Redis版实例(目的端Redis)的ECS。
  2. 在ECS中下载redis-shake
    说明 建议您下载最新发布的版本。

  3. 解压redis-shake.tar.gz
    tar -xvf redis-shake.tar.gz
    说明 解压获得的
    redis-shake为64位Linux系统所需的二进制文件,
    redis-shake.conf为redis-shake的配置文件,您将在下个步骤对其进行修改。

  4. 修改配置文件redis-shake.conf,restore模式涉及的主要参数说明如下。
    表 1.
    redis-shake restore模式参数说明
    参数 说明 示例
    rdb.input 备份文件(RDB文件)的路径,可使用相对路径或绝对路径。 /root/tools/RedisShake/demo.rdb
    target.address 目的Redis的连接地址与端口号。 r-bp1xxxxxxxxxxxxx.redis.rds.aliyuncs.com:6379
    target.password_raw 目的Redis的连接密码。 TargetPass233

    说明 如使用非默认账号连接云数据库Redis版实例,密码格式为
    account:password

    target.db 是否将源Redis数据库中所有库的数据都迁移至目标Redis实例的指定库中,取值:

    • -1(默认值):不启用该功能。
    • 0~255:启用该功能并将取值作为目标Redis实例的指定库。例如取值为0,表示将源Redis实例中所有库的数据汇总迁移至目标Redis实例的数据库0中。
    说明 如果源Redis数据库为主从架构,目标Redis实例为
    集群架构,此场景仅会同步数据库0,其他数据库的数据不会被迁移。此时,将该参数设置为0,可将源实例的所有数据库全部迁移至目标实例的数据库0中。

    -1
    rewrite 如果目的Redis有与RDB文件中相同的key,是否覆盖,可选值:

    • true(覆盖)
    • false(不覆盖)
    说明 默认为true,建议对目的Redis中的有效数据进行完善的备份再执行恢复。如设置为false且存在数据冲突则会出现异常提示。

    true
    parallel RDB文件同步中使用的并发线程数,用于提高同步性能。

    说明

    • 最小值为1。
    • 最大值取决于服务器性能。
    • 推荐值为64。

    64
    说明 其它参数如无特殊情况保持默认即可。

  5. 使用如下命令进行迁移。
    ./redis-shake.linux -type=restore -conf=redis-shake.conf
    说明 此命令需在二进制文件
    redis-shake和配置文件
    redis-shake.conf所在的目录中执行,否则请在命令中指定正确的文件路径。

    图 1. 执行示例

    说明 日志中出现
    restore: rdb done表示数据恢复完成,此时按Ctrl+C退出执行即可。

请关注公众号获取更多资料

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注