记录一次redis-shake跨云迁移阿里云redis混合型到腾讯云tendis
1. redis-shake它支持解析、恢复、备份、同步四个功能
- 恢复restore:将RDB文件恢复到目的redis数据库。
- 备份dump:将源redis的全量数据通过RDB文件备份起来。
- 解析decode:对RDB文件进行读取,并以json格式解析存储。
- 同步sync:支持源redis和目的redis的数据同步,支持全量和增量数据的迁移,支持从云下到阿里云云上的同步,也支持云下到云下不同环境的同步,支持单节点、主从版、集群版之间的互相同步。需要注意的是,如果源端是集群版,可以启动一个RedisShake,从不同的db结点进行拉取,同时源端不能开启move slot功能;对于目的端,如果是集群版,写入可以是1个或者多个db结点。
- 同步rump:支持源redis和目的redis的数据同步,仅支持全量的迁移。采用scan和restore命令进行迁移,支持不同云厂商不同redis版本的迁移。
2. redis-shake.conf参数优化
- ncpu = 4 #根据申请的CVM的情况,可以设置为CPU核心数
- parallel = 64 #同步rdb文件并发数设置为64
- scan.key_number = 1000000 #每次scan key的个数,这个参数很重要,决定了迁移的整体时长
3. 迁移方案(云工具DTS均不支持,redis-shake只支持全量,增量暂时没有工具支持)
方案一:
1. 阿里云混合型redis
2.腾讯云内存型redis
备注:当时scan设置的500,300GB数据测试10个小时;设置成10000可能会快很多
方案二:
1. 阿里云 混合型redis --> 内存型redis
2. 控制台备份
3. 内网地址下载rdb文件
4. scp RDB文件的到腾讯云的CVM
5. 导入RDB到内存型tendis
备注: scan设置成5000,总共时长5.5小时
参考链接:
https://developer.aliyun.com/article/691794
https://github.com/alibaba/RedisShake?spm=a2c4g.11186623.2.8.7a9f5663a6E7Oq