将备份数据迁移至首云Redis
# 操作场景
通过使用数据传输工具Redis-shake的restore模式,可以将RDB备份文件中的数据恢复至云数据库Redis,从何实现数据迁移。
注意:
- 如果目标库的数据逐出策略(maxmemory-policy)配置为noeviction以外的值,可能导致目标库的数据与源库不一致。关于数据逐出策略详情,请参见缓存策略。
- 如果源库中的某些Key使用了过期(expire)机制,由于可能存在Key已过期但未被及时删除的情形,所以在目标库中查看(如通过info命令)到的Key数量会比源库的Key数量少。如果源和目标库中,未设置过期机制或未过期的Key数量是一致的。
# 前置条件
- 准备源Redis实例的RDB备份文件。
- 购买Redis实例作为目标实例,详情参见创建实例。
- 已配置云服务器与目标实例的网络连接规则,并设置白名单来限制访问Redis实例的IP。如果您允许同一私网网段的所有云服务器皆可访问Redis实例,可以跳过此步骤。
# 操作步骤
# 步骤1:准备环境
登陆到Linux云服务器。
安装Redis-shake:
1)执行下述命令下载Redis-shake文件:
wget https://github.com/alibaba/RedisShake/releases/download/release-v2.0.3-20200724/redis-shake-v2.0.3.tar.gz1说明:
本文以2.0.3版本为例演示操作流程,您也可以安装其他版本。具体操作,参见Redis-shake版本列表 (opens new window)。
2)执行下述命令解压Redis源码文件:
tar xzf redis-shake-v2.0.3.tar.gz1
# 步骤2:执行数据迁移
将源实例的RDB备份文件复制到云服务器中。
执行下述命令进入解压后的目录并修改配置文件:
cd redis-shake-v2.0.3/ && vim redis-shake.conf1主要参数说明如下:
| 参数 | 是否必填 | 说明 | 示例 |
|---|---|---|---|
| source.rdb.input | 是 | 备份文件(RDB文件)的相对路径或绝对路径。多个";" 分隔 | /data/dump.rdb |
| source.type | 是 | 源Redis实例的类型。支持standalone,sentinel,cluster和proxy四种模式,注意:目前proxy只用于rump模式。 | standalone |
| target.address | 是 | 目标Redis实例的内网连接地址与端口号,连接地址和端口号之间使用英文冒号(:)分隔。 连接地址:Redis实例的连接服务IP,您可在实例基本信息页面的服务信息栏获取。 端口号:Redis实例的连接服务端口,您可在实例基本信息页面的服务信息栏获取。 | 127.XX.XX.1:6379 |
| target.type | 是 | 目标Redis实例的类型。支持standalone,sentinel,cluster和proxy四种模式,注意:目前proxy只用于rump模式。 | standalone |
| target.password_raw | 是 | 目标Redis实例的账号(需具备读写权限)及其密码,账号和密码之间使用英文冒号(:)分隔。创建账号,请参见创建与管理账号。 | default123!@ |
| key_exists | 否 | 当源库中的Key与目标库中的Key相同时,采取的数据写入策略,取值: rewrite:覆盖写入至目标库。 none:默认值,停止运行Redis-shake程序并提示冲突的Key。 ignore:直接跳过当前迁移的Key,保留目标库的数据,继续执行数据迁移。 | rewrite |
| parallel | 否 | Redis-shake执行迁移的并发线程数,适当调大该值可提高同步性能。默认值为32。 | 32 |
说明:
其他参数如无特殊需求无需配置,如需了解更多,请查看redis-shake.conf文件中各参数的注释。
按下Esc键退出编辑模式,输入:wq并按回车键保存配置并退出编辑界面。
执行下述命令启动Redis-shake,开始执行数据迁移:
./redis-shake.linux -type=restore -conf=redis-shake.conf1Redis-shake将在屏幕上打印运行的日志信息。
等待数据迁移完成并结束任务。