本文通过示例介绍了 RIOT 如何轻松地将数据从 AWS ElastiCache 迁移到云原生内存数据库(如 Tair 和云数据库 Redis 版)。

1. 准备资源迁移

1.1. 源代码

AWS ElastiCache cache.r6g.xlarge。它有三个数据分片,与 Redis 6.2 兼容。

AWS EC2 t2.medium CentOS 7(它与 AWS ElastiCache位于同一 VPC 中,因为 ElastiCache 不支持公网连接。)

1.2. 目标

阿里云 Tairtair.rdb.with.proxy.24g。它有三个数据分片,与 Redis 6.0 兼容。(开启公网地址,白名单设置为EC2公网IP地址。)

2. 配置源数据库环境

2.1 将源实例的 AWS ElastiCache 参数和 notify-keyspace-events 的值更改为 KEA。

打开 AWS ElastiCache 控制台左侧的参数组,然后根据当前版本创建一个新模板,例如 Redis 6.x。

2.2 将 notify-keyspace-events 的值更改为 KEA,将 cluster-enabled 的值更改为 yes。

2.3 在 Elasticache 实例上应用新的参数模板

3. 在 EC2 实例上部署 RIOT 工具

sudo yum install java-1.8.0-openjdk -ywget https://github.com/redis-developer/riot/releases/download/v3.1.5/riot-3.1.5.zipunzip riot-3.1.5.zip

4. 在 EC2 实例上安装 Redis 客户端

在 EC2 实例上部署 Redis 客户端并连接到 ElastiCache 实例以创建测试数据。

注意:如果已存在包含数据的 ElastiCache 实例,则无需重新创建测试数据。您可以在 EC2 实例上安装 Redis 客户端。

sudo yum install gcc jemalloc-devel openssl-devel tcltcl-devel -ysudo wget http://download.redis.io/redis-stable.tar.gzsudo tar xvzf redis-stable.tar.gzcd redis-stablesudo make BUILD_TLS=yessrc/redis-cli -c -h clustercfg.test-20230904.vsntkk.apne1.cache.amazonaws.com --tls -a xxxxxxxxxxxx -p 6379

5. 开始迁移

5.1. 在 EC2 实例上启动 RIOT 工具

登录 EC2 主机,使用 source 和 target 参数,启动 RIOT 程序同步全量数据和增量数据。

cd /home/centos/riot-3.1.5/bin./riot -h clustercfg.test-20230904.vsntkk.apne1.cache.amazonaws.com --tls -a xxxxxxxxxxx -c -p 6379 replicate -h r-gs5u6x8xuwywt0q8qnpd.redis.singapore.rds.aliyuncs.com -p 6379 --user=poc --pass=xxxxxxxx -c --mode live --progress log

5.2. 登录目标实例 Tair 验证数据

访问 Tair 控制台,通过 DMS 登录数据库,查询数据,检查全量数据是否迁移正常:

5.3. 写入增量数据并校验

在源实例 Elasticache 中插入增量数据,并在目标实例 Tair 中验证增量数据:

6. 总结

使用 RIOT,您可以轻松地将数据从 AWS ElastiCache 快速迁移到云原生内存数据库,例如 Tair 和云数据库 Redis 版。与其他方法(如redis-shake)相比,该工具支持全量迁移和增强复制,迁移过程中无需停机,是提高效率的非常好的工具。