文档首页> 分布式缓存服务 DCS> 数据迁移指南> 自建Redis迁移至DCS> 使用Redis-cli迁移自建Redis(RDB文件)
更新时间:2023-07-03 GMT+08:00
分享

使用Redis-cli迁移自建Redis(RDB文件)

迁移介绍

Redis-cli是Redis自带的一个命令行工具,安装Redis后即可直接使用Redis-cli工具。

Redis-cli提供了RDB文件导出功能,如果Redis服务不支持获取AOF文件,可以尝试通过Redis-cli获取RDB文件。然后再通过其他工具(如Redis-Shake)导入到DCS的缓存实例中。

本文主要介绍在Linux系统中进行操作。

下载Redis,请使用以下命令获取,安装编译后即可使用Redis-cli。

wget http://download.redis.io/releases/redis-5.0.8.tar.gz

源Redis实例必须支持“SYNC”命令,因为使用Redis-cli导出RDB文件依赖SYNC命令。

DCS的Redis 4.0/5.0/6.0版本实例,不支持SYNC,不能使用此命令导出为RDB文件,主备实例如需本地备份,请从控制台的备份恢复功能模块中下载RDB文件。

步骤1:导出前准备

对于主备或集群实例,数据写入RDB文件有一定的时延,时延策略配置在redis.conf文件中。因此,建议先了解待迁移redis实例的RDB策略配置,然后暂停业务系统并往Redis实例写入满足数量条件的测试key,确保RDB文件为最新生成。

对于云厂商提供的Redis服务,可以咨询云服务技术支持,了解rdb文件的数据写入策略配置。

例如,redis.conf中对RDB的默认策略配置如下:

save 900 1 //900秒内有数据变更则写入RDB文件
save 300 10  //300秒内有10条以上数据变更则写入RDB文件
save 60 10000 //60秒内有10000条以上数据变更则写入RDB文件

因此,可以参考以上数据写入RDB策略,在停止业务系统向Redis实例写入数据后,主动写入测试数据若干,触发策略并写入RDB文件,确保业务数据均已同步导RDB文件中。

测试数据可以在导入后删除。

如果有某个数据库没有被业务系统使用,可以将测试数据写入该数据库,待导入DCS后,使用flushdb命令清空该库。

步骤2:导出RDB文件

  1. 建议选择业务量较少的时间段进行迁移。
  2. 导出Redis源生集群的数据时,需要针对集群的每个节点分别导出数据,然后逐一导入。

使用如下命令导出RDB文件:

redis-cli -h {source_redis_address} -p 6379 -a {password} --rdb {output.rdb}

执行命令后回显"Transfer finished with success.",表示文件导出成功。

步骤3:上传RDB文件至华为云ECS

  1. 为节省传输时间,请先压缩RDB文件再传输。
  2. 将压缩文件(如以SFTP方式)上传到华为云ECS。

ECS需保证有足够的磁盘空间,供数据文件解压缩,同时要与缓存实例网络互通,通常要求相同VPC和相同子网,且安全组规则不限制访问端口。安全组设置请参考如何选择和配置安全组

步骤4:导入数据

可借助Redis-Shake工具完成数据导入。

步骤5:迁移后验证

数据导入成功后,请连接DCS缓存实例,通过info命令,确认数据是否已按要求成功导入。

如果导入不成功,需要分析原因,修正导入语句,然后使用flushall或者flushdb命令清理实例中的缓存数据,并重新导入。

导出和导入效率

单机实例如果不做持久化配置,则RDB文件需要临时生成,导出耗时较主备实例相比稍多一些。

VPC内进行导入,平均100w数据(每条数据20字节),大概4~10秒完成。

分享:

    相关文档

    相关产品