迁移到 Redis Cloud 之前,您应评估迁移并考虑最佳选项。请阅读本指南,以确定哪种迁移策略适合您。
540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353
6. 对于对象,选择 List 和 Write。
7. 对于存储桶 ACL,选择 Read 和 Write。
8. 点击 Save changes。
9. 将以下 JSON 添加到存储桶策略中。将 UNIQUE-BUCKET-NAME 替换为您的存储桶名称
{
"Version": "2012-10-17",
"Id": "MyBucketPolicy",
"Statement": [
{
"Sid": "RedisCloudBackupsAccess",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::168085023892:root"
},
"Action": [
"s3:PutObject",
"s3:getObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::UNIQUE-BUCKET-NAME/*"
}
]
}
10. 在账户级别和存储桶级别禁用“阻止所有公共访问”。
11. 仍在 Permissions 选项卡中,编辑 Block public access (bucket settings)。
12. 取消勾选 Block all public access。
13. 在账户级别禁用“阻止所有公共访问”。
14. 在 S3 导航窗格中,点击 此账户的阻止公共访问设置。
15. 取消勾选 Block all public access。
AWS 不允许直接访问 ElastiCache 实例。必须从具有适当权限的 EC2 实例访问您的 ElastiCache 实例。以下指南假定可以通过 EC2 实例从互联网访问您的 ElastiCache 实例。
注意:ElastiCache serverless 不支持实时数据迁移。
默认情况下,ElastiCache 禁用键空间通知。RIOT 实时模式需要此功能。您需要创建一个自定义参数组来修改 ElastiCache 的配置值。如果您的 ElastiCache 已有自定义参数组,您可以跳到第 5 步编辑 notify-keyspace-events 参数。
10. 在左侧导航窗格中,点击 Redis OSS caches 并选择您的 ElastiCache 实例。
11. 点击 Modify,在 Parameter groups 下选择您的新参数组。
12. 点击 Preview changes,然后点击 Modify 确认更改。
1. 使用 Instance Connect 或 SSH 连接到新的 EC2 实例
ssh -i “public key” AWS_EC2_INSTANCE
2. 安装 redis-cli 工具
sudo apt update && sudo apt install -y redis-tools
3. 验证与 ElastiCache 实例的连接,将 ELASTICACHE_ENDPOINT 替换为您的 ElastiCache 端点。如果未启用 TLS,移除 --tls 选项。
redis-cli --tls -h ELASTICACHE_ENDPOINT -p 6379
4. 安装 Java,建议使用 OpenJDK 21 或更高版本
sudo apt install -y openjdk-21-jdk
5. 安装 RIOT。下载所需的版本。然后,解压包,确保 RIOT 二进制文件已到位,如下所示
wget https://github.com/redis/riot/releases/download/v4.2.3/riot-4.2.3.tar && tar -xvf riot-4.2.3.tar && cd riot-4.2.3/bin/
6. 您可以通过运行以下命令检查 RIOT 的版本
./riot --version
------------------------------------------------------------
riot 4.2.3
------------------------------------------------------------
Build time: 2025-02-16 18:35:57Z
Revision: d7a319522e4e72a2b5277e5a15bd715d557dedb6
JVM: 21.0.6 (Ubuntu 21.0.6+7-Ubuntu-124.04.1)
------------------------------------------------------------
安装 Java 和 RIOT 后,您就可以开始迁移过程了,该过程直接将数据从源(ElastiCache)复制到目标(Redis Cloud)。
sudo ./riot replicate rediss://ELASTICACHE_ENDPOINT:port redis://username:password@REDIS_CLOUD_ENDPOINT:port --mode live
4. 如果您从 ElastiCache 集群迁移,必须包含 --source-cluster 选项
5. 如果您迁移到 Redis Cloud 集群,必须包含 --target-cluster 选项。
6. 如果您的 ElastiCache 集群未启用 TLS,将 rediss:// 替换为 redis://。
7. 验证您的迁移,并将应用程序的流量重定向到新的 Redis Cloud 端点。
注意
实时复制机制不能保证数据一致性。Redis 通过 pub/sub 发送键空间通知,这不提供保证交付。例如,在网络故障时,RIOT 可能会遗漏一些通知。
此外,根据源上数据结构的类型、大小和变化速率,RIOT 可能无法跟上变化流。例如,如果一个大型集合重复更新,RIOT 需要在每次更新时读取整个集合并将其传输到目标数据库。对于足够大的集合,RIOT 可能会落后,内部队列可能会满,导致更新丢失。
对于那些潜在有问题的迁移,建议结合 Redis 统计信息和 bigkeys/memkeys 以及 --mem-limit 进行一些初步大小调整。如果您需要帮助,请联系您的 Redis 客户团队。
更多信息,请参阅