由于亚马逊云没有现成的数据支持直接将数据迁移到ElastiCache Redis,Redis-shake是开源的 redis 数据传输工具,支持对 redis 数据进行解析 (decode),恢复 (restore),备份 (dump) 和同步 (rump/sync),部署简单高效。同步模式支持全量同步以及增量同步,能够满足多种场景需求
注意事项:
目前支持的redis版本为2.8.3.0.3.2.4.0以及5.0版本
暂时只支持亚马逊云ElastiCache的主从版,即非集群版;
跨版本同步或恢复需进行兼容性验证;
target 库的 maxmemory-policy 如果配置为 noeviction 以外的值,可能导致数据差异;
source 库的 key 设置了过期时间,key 可能已过期而未被删除,target 看到的 key 可能会比 source 少。
Redis-Shake安装
前置条件:需要确认亚马逊云EC2服务与自建Redis或其他云Redis服务互通且与ElastiCache Redis互通;
安装,由于Redis-Shake使用go语言开发,所以需要提前安装golang $ sudo yum install golang
下载Redis-Shake
wget https://ecvcorp-my.sharepoint.com/:f:/g/personal/emily_you_ecloudvalley_com/EnxiHi6yeFhEsgXcuIYfUNIBmoCwxP_uNyIiBq_bTGtz-A?e=e37LLB
解压安装包:
tar -zxvf release-v2.1.2-20220329 .tar.gz
$ cd release-v2.1.2-20220329 && vim redis-shake.conf
修改redis-shake.conf文件主要修改参数为source.address,source,password_raw,还有traget.address,假若需要 redis auth 访问,那么必须走 传输加密/ssl, 对于 redis-cli 或者迁移工具 就需要搭配 stunnel 这个加密隧道工具。业务代码来访问,也必须支持 ssl 连接才行,不能单纯使用 redis auth,假若这点您不确认可行,建议亚马逊云redis 主从 版 还是不要开启 传输加密 和 auth。
由于ElastiCache Redis只支持psync模式,工具暂时在3.0版本只支持对psync作为源目标,还不能实时写入
执行迁移
sync 模式
$ ./redis-shake.linux -type=sync -conf=redis-shake.conf &
rump模式
迁移到ElastiCache选择Rump模式
$ ./redis-shake.linux -type=rump -conf=redis-shake.conf