迁移介绍
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
- 为节省传输时间,请先压缩RDB文件再传输。
- 将压缩文件(如以SFTP方式)上传到ECS。
说明ECS需保证有足够的磁盘空间,供数据文件解压缩,同时要与缓存实例网络互通,通常要求相同VPC和相同子网,且安全组规则不限制访问端口。
步骤4:导入数据
可借助Redis-Shake工具完成数据导入。
步骤5:迁移后验证
数据导入成功后,请连接DCS缓存实例,通过info命令,确认数据是否已按要求成功导入。
如果导入不成功,需要分析原因,修正导入语句,然后使用flushall或者flushdb命令清理实例中的缓存数据,并重新导入。
导出和导入效率
单机实例如果不做持久化配置,则RDB文件需要临时生成,导出耗时较主备实例相比稍多一些。
VPC内进行导入,平均100w数据(每条数据20字节),大概4~10秒完成。