redis-shake 是一款开源的 Redis 数据迁移工具,可以通过 Redis 数据库中的 RDB 文件实现离线数据恢复或迁移。本文介绍如何使用 redis-shake 工具进行 Redis 库间的数据迁移。
某些情况下,源 Redis 数据库并未开放 sync
或 psync
复制权限,因此无法通过火山引擎数据库传输服务 DTS 进行数据迁移。此时,您可以通过 redis-shake 工具使用 RDB 文件,将源 Redis 数据库的全量数据离线迁移至目标 Redis 数据库中。
使用 RDB 文件来迁移数据,可以在不依赖 sync
和 psync
权限的前提下,将自建 Redis 或第三方云 Redis 数据库的数据迁移至火山引擎缓存数据库 Redis 版。关于 redis-shake 的更多信息,请参见 redis-shake。
使用 redis-shake 进行数据迁移之前,您需要对目标库和源库完成如下准备工作。
准备工作 | 数据库类型 | 说明 |
---|---|---|
创建 Redis 数据库 | 目标库 | 创建一个缓存数据库 Redis 版实例作为数据迁移的目标数据库。实例创建方法,请参见创建实例。 |
设置 Redis 数据库白名单 |
| 为 Redis 实例设置白名单分组,并将客户端设备 IP 地址加入到实例的白名单中。详细操作步骤,请参见设置白名单。 说明 若您的客户端设备和 Redis 实例不在同一个 VPC 内,您还要为 Redis 实例开启公网访问。开启公网访问的方法,请参见开启公网访问。 |
获取数据库连接信息 |
| 您可以参考如下步骤获取缓存数据库 Redis 版连接地址和端口号信息:
|
获取 RDB 备份文件 | 源库 | 获取 RDB 备份文件并保存至本地服务器或 ECS 实例上。 说明
|
安装 redis-shake 迁移工具。具体步骤如下。
登录待安装 Redis-cli 的设备,例如 ECS 实例或本地设备。
说明
本文操作步骤以在 ECS 服务器中安装 redis-shake 迁移工具为例。
执行如下命令下载 redis-shake 迁移工具。
说明
本文示例中使用的 redis-shake 迁移工具版本为 v2.0.3。
wget https://github.com/alibaba/RedisShake/releases/download/release-v2.0.3-20200724/redis-shake-v2.0.3.tar.gz
执行如下命令解压 Redis 源码文件。
tar xzf redis-shake-v2.0.3.tar.gz
执行 cd redis-shake-v2.0.3
命令进入解压后的目录。
执行 vim redis-shake.conf
命令修改配置文件。需要修改的参数及说明如下。
参数 | 是否必填 | 说明 | 示例 |
---|---|---|---|
| 是 | 目标 Redis 数据库的连接地址与端口号。 说明 您可以参考准备工作中的操作步骤获取目标Redis 数据库的连接地址与端口号。 |
|
| 是 | 目标 Redis 数据库中用于数据迁移的账号密码。 支持如下几种密码填写格式:
说明 如果忘记密码,您可以重置密码。具体操作,请参见修改或重置密码。 |
|
sourcec.rdb.input | 是 | 备份文件(RDB 文件)的路径,可使用相对路径或绝对路径。 | /root/redis_shake/redissource.rdb |
| 否 | 指定需要将数据恢复到的 DB,默认值为
|
|
| 否 | 当目标 Redis 数据库中存在与 RDB 文件中相同的 Key 时,是否用RDB 文件中的 Key 覆盖目标 Redis 数据库的 Key。取值范围如下:
说明 建议对目标 Redis 数据库中的有效数据进行完善的备份后再执行恢复。如该参数设置为 |
|
| 否 | 迁移 RDB 文件时所使用的并发线程数,可用于提高数据迁移速度。 |
|
执行如下命令进行数据迁移。
说明
您需要在二进制文件 ./redis-shake.linux
和配置文件 redis-shake.conf
所在的目录中执行下述命令。
./redis-shake.linux -type=restore -conf=redis-shake.conf
当返回结果中出现如下restore: rdb done
和 restore from '[备份文件(RDB 文件)的路径]'
to '[目标 Redis 数据库的连接地址:端口号]'
信息时,表示数据恢复完成,此时按住 Ctrl+C
键退出迁移任务即可。