学习

Memorystore 到 Redis Cloud

在迁移到 Redis Cloud 之前,您应该评估迁移并考虑最佳选项。阅读此指南以确定哪种迁移策略适合您

离线数据迁移#

创建具有适当权限的 Google Cloud Storage 存储桶#

  1. 1.打开 Google Cloud Storage 存储桶
  2. 2.创建新存储桶以存储 Memorystore 备份。
  3. 3.选择如何控制对象访问下,取消选中在此存储桶上强制执行公共访问阻止
  4. 4.在 Google Cloud Storage 存储桶中,在权限标签页下,点击授予访问权限
  5. 5.在“授予访问权限”菜单中的添加主体下,输入:[email protected]
  6. 6.分配角色下,选择Cloud Storage ⇒ Storage Object User
  7. 7.点击保存

将 RDB 文件从 Google Cloud Storage 导入 Redis Cloud#

  1. 1. Redis Cloud 控制台中,从数据库列表中选择目标数据库。
  2. 2.点击导入
  3. 3.输入 RDB 文件的详细信息:
  4. 4.源类型 - 选择Google Cloud Storage
  5. 5.源路径 - 输入 RDB 文件的 URL:gs://bucketname/[path/]filename.rdb
  6. 6.对于具有多个 RDB 文件的分片数据库,选择添加源以添加另一个 RDB 文件。
  7. 7.选择导入
  8. 8.验证您的迁移并将应用程序流量重定向到新的 Redis Cloud 端点。

在线数据迁移#

您的 Memorystore 实例必须从具有适当权限的 Compute Engine 实例访问。本指南假设您的 Memorystore 实例可以通过 Compute Engine 实例从互联网访问。

在 Memorystore 中启用 notify-keyspace-events#

  1. 1.在 Google Cloud 控制台中转到Memorystore for Redis页面。
  2. 2.点击您的迁移源实例 ID。
  3. 3.点击编辑
  4. 4.现在可以看到配置部分。点击添加配置以添加新配置。
  5. 5.在配置下拉列表中,选择notify-keyspace-events
  6. 6.对于,输入 KEA
  7. 7.点击保存

创建 Compute Engine 实例#

  1. 1.转到Google Cloud Compute Engine 控制台
  2. 2.点击创建实例
  3. 3.对于操作系统,首选 Ubuntu。
  4. 4.确保 Compute Engine 实例与您的 Memorystore 实例在同一区域创建
  5. 5.确保 Compute Engine 实例使用相同的授权网络
  6. 6.点击创建

安装 redis-tools、Java 和 RIOT#

  1. 1.Google Cloud Compute Engine 控制台中,点击SSH连接到您的实例。
  2. 2.安装 redis-cli 工具:
sudo apt update && sudo apt install -y redis-tools

3. 验证与 Memorystore 实例的连接,将 MEMORYSTORE_ENDPOINT 替换为您的 Memorystore 端点。

redis-cli -h MEMORYSTORE_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-120.04.1)
------------------------------------------------------------

将 Memorystore 复制到 Redis Cloud#

安装完 Java 和 RIOT 后,您就可以开始迁移过程了,该过程直接将数据从源(Memory)复制到目标(Redis Cloud)。

  1. 1.登录到 Redis Cloud 控制台
  2. 2.点击您的迁移目标并记下公共端点、用户名和密码
  3. 3.您可以通过运行以下命令将数据从 Memorystore 复制到 Redis Cloud:sudo ./riot replicate redis://MEMORYSTORE_ENDPOINT:port redis://username:password@REDIS_CLOUD_ENDPOINT:port --mode live
  4. 4.如果您正在从 Memorystore 集群迁移,则必须包含 --source-cluster 选项
  5. 5.如果您正在迁移到 Redis Cloud 集群,则必须包含 --target-cluster 选项。
  6. 6.验证您的迁移并将应用程序流量重定向到新的 Redis Cloud 端点。

注意

在线复制机制不保证数据一致性。Redis 通过 pub/sub 发送 keyspace 通知,这种方式不提供可靠送达保证。例如,在网络故障时,RIOT 可能会丢失一些通知。

此外,根据源数据结构的类型、大小和变更速率,RIOT 可能无法跟上变更流。例如,如果一个大型集合被反复更新,RIOT 需要在每次更新时读取整个集合并将其传输到目标数据库。对于足够大的集合,RIOT 可能会落后,并且内部队列可能会填满,导致更新被丢弃。

对于那些潜在的问题迁移,建议结合使用 Redis 统计信息和 bigkeys/memkeys 以及 --mem-limit 进行一些初步的规模调整。如果您需要帮助,请联系您的 Redis 客户团队。

更多信息,请参阅