如何从 Amazon ElastiCache 迁移到 Redis Enterprise 或 Redis Cloud?

最后更新时间:2024 年 5 月 22 日

问题

如何从 Amazon ElastiCache 迁移到 Redis Enterprise 或 Redis Cloud?

答案

在从 ElastiCache 迁移到 Redis Enterprise 或 Redis Cloud 之前,您应该评估迁移并考虑最佳选择。我们将描述三种方案。

数据库替换

如果您能够容忍清除所有 Redis 数据,则根本不需要迁移数据。您可以通过配置客户端库将应用程序指向新的 Redis Cloud 数据库,并开始使用一个新的、空的数据库。如果您将 Redis 用作缓存并且可以重新启动而不会丢失数据,这可能是一个有效的选择。但是,**性能下降**可能会影响您的服务,尤其是在 Redis 用作缓存时数据重新水合的时间。

离线数据迁移

如果您将 Redis 用于缓存之外的其他用途,例如会话存储,则您无法承受数据丢失或完全清除数据带来的性能问题。为此,可以提供持久的持久性选项。接下来,考虑您是否可以处理停机时间,这可能只持续几分钟,具体取决于导出和导入 Redis 数据所需的时间。在您的环境中测试这一点以准确估计停机时间,但要注意 ElastiCache 中常见的内存使用问题。如果**停机时间可以接受**,我们建议进行离线数据迁移。这很简单,但会因将数据从 ElastiCache 迁移到 Redis Cloud 的时间而导致停机。

实时数据迁移

实时数据迁移可以在没有停机时间或数据丢失的情况下完成,但它更加复杂,需要仔细考虑。此方法使用名为 RIOT 的外部工具,该工具由 Redis 专家开发。文档提供指导,如果需要,专家支持可用。

优点

  • 将实时 ElastiCache 数据迁移到 Redis Cloud
  • 无停机时间

缺点

  • 更复杂,存在潜在问题
  • 可能需要在测试期间进行调整
  • 可能不适用于大型密钥大小(100MB+)
  • 数据一致性无法保证
  • CPU 使用率高
  • 可能需要更改 ElastiCache
  • RIOT 支持是尽力而为

让我们考虑一个执行实时数据迁移的示例。您将需要一些资源来使用迁移工具

  • Redis Cloud 订阅
  • Amazon ElastiCache(在单主 EC 的情况下为主端点,在集群 EC 的情况下为配置端点:有关更多信息,请参阅 ElastiCache 文档中的“查找连接端点”)
  • 基于 Linux 的 Amazon EC2 实例

使用 SSH 从您的计算机连接到新的 EC2 实例,如下所示

ssh -i “public key” AWS_EC2_INSTANCE

现在安装 redis-cli 工具

$ sudo apt update
$ sudo apt install -y redis-tools

验证与 ElastiCache 数据库的连接

$ redis-cli -h ELASTICACHE_ENDPOINT -p 6379

使用 RIOT 迁移工具。为此,我们建议使用 OpenJDK 11 或更高版本

sudo add-apt-repository ppa:openjdk-r/ppa && sudo apt-get update -q && sudo apt install -y openjdk-11-jdk

最后,完成安装 RIOT 的设置。下载所需的 版本。然后,解压缩包并确保 RIOT 二进制文件就位,如下所示

unzip riot-redis-2.0.8.zip
cd riot-redis-2.0.8/bin/

您可以通过运行以下命令检查 RIOT 的版本

./riot-redis --version
RIOT version "2.0.8"

安装好 Java 和 RIOT 后,我们就可以使用以下命令开始迁移过程,该命令将数据直接从源(ElastiCache)复制到目标(Redis Cloud)。您可以通过运行以下命令将数据从 ElastiCache 复制到 Redis Cloud

sudo ./riot-redis -r redis://ELASTICACHE_ENDPOINT:6379 replicate -r redis://password@REDIS_CLOUD_ENDPOINT:port --live

ElastiCache 可以通过两种方式配置:集群和非集群。在集群 ElastiCache 中,您必须在源 ElastiCache 端点之前包含 –cluster 选项。

确定并执行您的迁移方法。迁移到 Redis Cloud 后,探索触发器、函数和自动分层等新功能来管理大型数据集。

参考

RIOT