将 Redis 和 Valkey 工作负载迁移到 Memorystore for Valkey

Memorystore 支持将自管理的 Redis 和 Valkey 工作负载自动迁移到 Memorystore for Valkey。使用此功能可让您顺畅地摆脱管理自有基础架构的运营负担。通过迁移到 Memorystore for Valkey 中的全代管式环境,您无需手动修补操作系统、设置复制和编写自定义备份脚本,同时还能获得自动故障切换和 VPC 原生安全功能,并能够将节点扩容到数百个,且停机时间接近于零。

通过将自管理的工作负载迁移到 Memorystore for Valkey,您可以获得以下优势,从而消除运营负担并实现数据库基础设施的现代化:

  • 消除运维开销:将手动且耗时的任务(例如操作系统修补、基础架构监控、备份脚本和复制管理)分流给 Google Cloud。因此,您可以专注于应用开发,而无需操心数据库维护。
  • 实现企业级高可用性:获享全代管式 99.99% SLA。Memorystore for Valkey 提供自动故障切换以及内置的备份和恢复功能。这样可以保护您的应用免遭意外节点故障的影响,并确保快速进行灾难恢复。
  • 以接近于零的停机时间进行扩缩:动态扩缩实例,以应对难以预测的流量高峰。您可以无缝扩展到数百个节点(最多 250 个分片),而无需使应用离线。
  • 增强安全性:使用安全的内置 VPC 连接和精细的基于 Identity and Access Management (IAM) 的访问权限控制,取代复杂的手动配置的网络规则。这可确保Google Cloud的严格安全边界保护您的数据。
  • 整合并升级实例:轻松将分散的孤立式自管实例合并到 Memorystore for Valkey 中的单个高性能部署中。在此迁移过程中,您还可以自动将过时的 Redis 或 Valkey 版本升级到最新支持的版本。
  • 解锁高级实时分析和生成式 AI:迁移到经过优化的环境,该环境可提供微秒级延迟,用于缓存和会话管理。为了支持生成式 AI (GenAI) 应用,您可以立即获得对向量搜索等高级功能的受管理访问权限。

版本支持

本部分中的表格列出了以下信息:源 Redis 和 Valkey 自行管理的实例,以及 Memorystore for Valkey 中的目标实例:

  • 迁移支持的源实例类型和版本
  • 您可以将工作负载迁移到的目标 Memorystore for Valkey 实例的版本
源实例类型 源实例版本 目标实例版本
Redis 3.2.x - 7.2.x Valkey 7.2、8.0 和 9.0
Valkey 7.x、8.x 和 9.x Valkey 7.2、8.0 和 9.0

准备工作

在开始迁移工作负载之前,请先完成本部分中的前提条件。

使用 Google Cloud 控制台、Google Cloud CLI 和 API

如需使用 Google Cloud 控制台、gcloud CLI 和 API,请执行以下操作:

  1. 在 Google Cloud 控制台的项目选择器页面上,选择或创建 Google Cloud 项目

    转到项目选择器

  2. 确保您的项目已启用结算功能。 了解如何检查项目是否已启用结算功能
  3. 安装初始化 Google Cloud CLI。

    注意:如果您之前安装了 gcloud CLI,请运行 gcloud components update 以确保您拥有最新版本。您需要至少使用 gcloud CLI 版本 489.0.0 才能访问 Memorystore for Valkey gcloud CLI 命令。

  4. 启用 Memorystore for Valkey API。
    Memorystore for Valkey API
  5. 启用 Network Connectivity API。
    Network Connectivity API
  6. 启用 Service Consumer Management API。
    Service Consumer Management API
  7. 启用 Compute Engine API。
    Compute Engine API

分配角色和权限

如需执行所有操作,将自管理的 Redis 和 Valkey 实例的工作负载迁移到 Memorystore for Valkey,请让您的管理员为您授予Google Cloud 项目的 Memorystore Admin (roles/memorystore.admin) IAM 角色。

如需创建和查看网络连接,请让管理员为您授予项目的 Compute Network Admin (roles/compute.networkAdmin) IAM 角色。

迁移工作负载的工作流程

如需将自行管理的 Redis 和 Valkey 实例的工作负载迁移到 Memorystore for Valkey,请执行以下操作:

  1. 准备源实例:将自管理的 Redis 或 Valkey 实例配置为允许安全连接和出站复制到 Memorystore for Valkey。
  2. 准备目标实例:确定所需的实例规格,例如分片数和节点类型。
  3. 创建目标实例:预配接收迁移数据的 Memorystore for Valkey 实例。
  4. 配置网络连接:设置网络连接。通过此连接,提供方 VPC 网络中的目标实例可以发起与使用方 VPC 网络中运行的源实例的连接。这样,复制就建立起来了。
  5. 开始迁移:启动同步流程。目标实例会自动连接到源实例,并开始以只读副本的形式持续复制数据。
  6. 监控迁移:验证迁移是否顺利进行,以及迁移状态是否为 HEALTHY
  7. 完成迁移:将应用流量切换到目标实例。

准备源实例

您必须准备好自行管理的 Redis 或 Valkey 实例,以便将工作负载迁移到目标 Memorystore for Valkey 实例。

如需允许从目标实例的节点连接到源实例的节点,请执行以下操作:

  • 如果源节点上启用了受保护模式,请将其停用。
  • 如果您使用显式 bind 指令配置了源节点,请更新节点以允许来自目标节点的传入连接。目标节点从网络连接的子网中的 IP 地址发起连接。
  • 更新可能会阻止来自目标节点的传入连接的所有防火墙规则。
  • 如果源节点上启用了身份验证和传输层安全协议 (TLS),请停用它们。

如需启用从目标实例的节点到源实例的节点的复制,请执行以下操作:

  • 请勿重命名迁移或数据修改所需的任何 Valkey 或 Redis 命令(例如 PINGPSYNCHSET)。
  • 确保源实例拥有足够的内存和 CPU 容量来管理来自目标实例节点的额外复制负载。

准备目标实例

为确保复制过程顺畅,您必须根据目标 Memorystore for Valkey 实例的规模,使其能够处理来自源实例的传入工作负载。为此,您必须确定目标实例的确切规格。这些规范包括与源实例的兼容性、集群模式类型、数据库数量、分片数、版本和目标实例的节点类型。

如需准备目标实例,请遵循以下准则:

  • 与来源实例的兼容性:来源实例和目标实例必须位于同一项目和区域中。
  • 集群模式:目标实例的集群模式必须与源实例的集群模式一致。如果源实例已停用集群模式,则目标实例也必须已停用集群模式。否则,目标实例必须启用集群模式。
  • 数据库数量:如果目标实例处于“集群模式已停用”状态,则该实例上的逻辑数据库数量必须等于或大于源实例上的数据库数量。
  • 分片数:如果目标实例启用了集群模式,则目标实例上的分片数必须与源实例上的分片数相同。不过,源实例和目标实例上的副本数量可以不同。
  • 实例版本:目标实例的版本必须与源实例的版本兼容。如需了解详情,请参阅版本支持
  • 维护版本:目标实例的维护版本必须为 MEMORYSTORE_20260313_01_00 或更高版本。如需了解详情,请参阅维护简介
  • 节点类型:目标实例上的节点类型必须足够大,才能处理从源实例的节点接收的数据。如需详细了解可为目标实例选择的节点类型以及每种节点类型对应的键空间容量,请参阅节点类型规范

创建目标实例

如果您没有符合接收从源实例迁移的数据的要求的目标实例,则必须创建该实例。

您可以使用 Google Cloud 控制台或 gcloud CLI 创建此实例。

控制台

如需创建目标实例,请参阅创建实例

gcloud

如需创建目标实例,请参阅创建实例

配置网络连接

如需将源实例的工作负载迁移到目标实例,目标实例的节点必须与源实例的节点建立连接。这样一来,源实例中的数据就可以复制到目标实例中。

如需建立此连接并进行复制,您必须使用网络连接。来自目标节点的连接尝试源自与网络附件相关联的源实例的 VPC 网络中的子网。

您可以使用满足以下要求的网络附加设备:

  • 它必须与目标实例位于同一项目和区域中。
  • 其子网必须位于与源实例相同的 VPC 网络中。
  • 源实例中的子网必须具有足够的 IP CIDR 范围,至少支持 N+1 个可用 IP 地址(其中 N 是目标实例中的节点数)。例如,如果目标实例有 3 个分片和 1 个副本,则它有 6 个节点:3 个节点用于主实例,3 个节点用于副本。因此,您至少需要七个 IP 地址。
  • 子网范围不得与 10.0.0.0/23 重叠,因为此范围已预留给 Memorystore for Valkey。

如果您的网络连接不符合这些要求,或者您没有网络连接,则必须创建一个。

开始迁移

开始迁移后,目标实例会与源实例建立复制关系。写入源实例的任何数据都会自动复制到目标实例中。目标实例成为源实例的读取副本。

您可以使用 Google Cloud 控制台或 gcloud CLI 启动迁移。

控制台

  1. 在 Google Cloud 控制台中,前往 Memorystore for Valkey 页面。

    Memorystore for Valkey

  2. 点击目标实例的 ID。

  3. 实例概览页面上,点击开始迁移

  4. 迁移自行管理的 Redis 和 Valkey 实例窗口中,执行以下操作:

  5. 准备标签页中,阅读有关源实例的前提条件网络连接准则的信息。然后,点击继续

  6. 连接标签页中,执行以下操作:

    1. 输入源实例的 IP 地址端口。您在准备源实例中记录了此信息。
    2. 选择要用于迁移数据的网络附加存储设备。
    3. 点击继续
  7. 审核标签页中,查看与迁移流程相关的信息。此信息包括目标实例的 ID、源实例的 IP 地址和端口,以及网络附加的名称。查看此信息后,点击开始迁移

  8. 实例概览页面上,验证是否显示正在迁移状态。

如果目标实例的节点无法连接到源实例的节点,或者源实例中的数据无法复制到目标实例中,则迁移会失败。

发生这种情况时,Memorystore for Valkey 会将目标实例回滚到您开始迁移过程之前的状态。目标实例的状态恢复为 Ready,并且该实例再次具有读写功能。

解决迁移失败问题后,您可以重新开始迁移。

gcloud

如需开始迁移,请使用 gcloud beta memorystore instances start-migration 命令。

gcloud beta memorystore instances start-migration INSTANCE_ID \
--project=PROJECT_ID \
--location=REGION \
--source-ip=SOURCE_IP_ADDRESS \
--source-port=SOURCE_PORT \
--network-attachment=projects/NETWORK_ATTACHMENT_PROJECT_ID/locations/NETWORK_ATTACHMENT_REGION/networkAttachments/NETWORK_ATTACHMENT_ID

进行以下替换:

  • INSTANCE_ID:目标实例的 ID。
  • PROJECT_ID:包含目标实例的 Google Cloud 项目的 ID 或项目编号
  • REGION:目标实例所在的区域。
  • SOURCE_IP_ADDRESS:源实例的 IP 地址。您在准备源实例中记下了此 IP 地址。
  • SOURCE_PORT:源实例的端口号。您在准备源实例中记下了此端口。
  • NETWORK_ATTACHMENT_PROJECT_ID:Google Cloud 项目的 ID 或项目编号,该项目包含您要用于迁移数据的网络连接。
  • NETWORK_ATTACHMENT_REGION:网络连接所在的区域。
  • NETWORK_ATTACHMENT_ID:网络连接的 ID。

如需确认迁移已成功开始,请使用 gcloud memorystore instances describe 命令。

gcloud memorystore instances describe INSTANCE_ID \
--project=PROJECT_ID \
--location=REGION_ID

验证 state 参数旁边是否显示 MIGRATING 状态。

如果目标实例的节点无法连接到源实例的节点,或者源实例中的数据无法复制到目标实例中,则迁移会失败。

发生这种情况时,Memorystore for Valkey 会将目标实例回滚到您开始迁移过程之前的状态。目标实例的状态恢复为 ACTIVE,并且该实例再次具有读写功能。

解决迁移失败问题后,您可以重新开始迁移。

监控迁移

为确保迁移顺利进行,您可以在源实例和目标实例上监控迁移。

监控源实例

在源实例上,验证源节点上的客户端输出缓冲区使用率是否保持在较低水平。持续低使用率表示延迟极小,并且已成功将源实例中的数据同步到目标实例。

监控目标实例

对于目标实例上的每个主节点,验证节点迁移状态指标的状态是否为正常。此状态表示源实例和目标实例的分片之间的复制链接运行正常且处于有效状态。

您可以使用Google Cloud 控制台监控目标实例的迁移。如需验证目标实例的每个主节点的节点迁移状态指标的值,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 Metrics Explorer 页面。

    Metrics Explorer

  2. 指标菜单中,选择节点迁移状态指标。为此,请依次选择 Memorystore 实例节点 > 实例 > 节点迁移状态,然后点击应用

  3. 过滤条件字段中,添加以下过滤条件:

    • instance_id = (equals) INSTANCE_ID
    • role = (equals) primary
    • status != (does not equal) HEALTHY

    INSTANCE_ID 替换为目标实例的 ID。

    添加这些过滤条件后,您可以监控目标实例的主节点,以查看是否有任何节点处于不健康状态。如果未显示任何节点,则表示所有节点都处于健康状态,您可以完成迁移。

完成迁移

准备好将应用流量切换到目标实例时,请完成迁移。这样做后,目标实例的节点将不再与源实例的节点进行复制。目标实例允许所有读取和写入操作。

您可以使用 Google Cloud 控制台或 gcloud CLI 完成迁移。

控制台

  1. 在 Google Cloud 控制台中,前往 Memorystore for Valkey 页面。

    Memorystore for Valkey

  2. 点击目标实例的 ID。

  3. 实例概览页面上,点击完成迁移

  4. 完成迁移对话框中,执行以下操作:

    1. 如果您想确保源实例上的所有数据都复制到目标实例上,请选择标准

    2. 实例 ID 文本字段中,输入目标实例的 ID。

    3. 点击完成迁移

  5. 实例概览页面上,验证是否显示已迁移状态。

gcloud

如需完成迁移,请使用 gcloud beta memorystore instances finish-migration 命令。

gcloud beta memorystore instances finish-migration INSTANCE_ID \
--project=PROJECT_ID \
--location=REGION

进行以下替换:

  • INSTANCE_ID:目标实例的 ID
  • PROJECT_ID:包含目标实例的 Google Cloud 项目的 ID 或项目编号
  • REGION:目标实例所在的区域

如需确认迁移已成功完成,请使用 gcloud memorystore instances describe 命令。

gcloud memorystore instances describe INSTANCE_ID \
--project=PROJECT_ID \
--location=REGION_ID

验证 state 参数旁边是否显示 MIGRATED 状态。