将 Azure Cache for Redis 实例移动到不同区

本文将介绍如何将 Azure Cache for Redis 实例移动到不同 Azure 区域。 你可能出于多种原因需要将资源移到另一区域:

  • 利用新的 Azure 区域。
  • 部署仅在特定区域可用的功能和服务。
  • 满足内部策略和治理要求。
  • 响应容量计划要求。

如果要从本地、基于云的 VM 或其他托管服务迁移到 Azure Cache for Redis,建议参阅迁移到 Azure Cache for Redis

你使用的 Azure Cache for Redis 层确定了最适合你的选项。

缓存层 选项
高级 异地复制、创建新缓存、对两个缓存执行双重写入操作、通过 RDB 文件导出和导入数据或以编程方式迁移
基本或标准 创建新缓存、对两个缓存执行双重写入操作或以编程方式迁移
Enterprise 或 Enterprise Flash 创建新缓存或使用 RDB 文件导出和导入数据,或以编程方式迁移

被动异地复制(高级)

先决条件

若要在两个缓存之间配置异地复制,必须满足以下先决条件:

  • 这两个缓存是高级层缓存。
  • 这两个缓存在同一 Azure 订阅中。
  • 辅助链接缓存的大小等于或大于主链接缓存的大小。
  • 两个缓存都已经存在并且正在运行。

准备

若要将缓存实例移到另一个区域,需要在所需的区域中创建第二个高级缓存实例。 两个缓存都运行后,可以在两个缓存实例之间设置异地复制。

注意

Azure 区域之间的数据传输按标准带宽费率收费。

异地复制不支持某些功能:

  • 异地复制不支持区域冗余。
  • 异地复制不支持持久性。

异地复制支持的条件:

完成异地复制配置后,链接缓存对会有以下限制:

  • 辅助链接缓存为只读。 可以从其中读取数据,但不能向其中写入任何数据。
    • 如果选择在异地主实例和异地辅助实例之间进行完全数据同步时从异地辅助实例读取数据,例如当异地主实例或异地辅助实例更新时,以及在某些重新启动的情况下,异地辅助实例会在针对它的任何 Redis 操作中引发错误,直到异地主实例和异地辅助实例之间的完全数据同步完成。
    • 应生成从异地辅助数据库读取的应用程序,以便在异地辅助数据库引发此类错误时回退到异地主数据库。
  • 添加链接前辅助链接缓存中的任何数据都会被删除。 但如果以后删除了异地复制,复制的数据则会保留在辅助链接缓存中。
  • 链接缓存时无法缩放任一缓存。
  • 如果缓存已启用群集功能,则无法更改分片数目。
  • 无法在任一缓存上启用暂存。
  • 可以从任一缓存导出
  • 无法导入到辅助链接缓存。
  • 只有在取消链接缓存之后,才可以删除任一链接缓存或包含它们的资源组。 有关详细信息,请参阅尝试删除链接缓存时为何操作会失败?
  • 如果缓存位于不同的区域,网络传出费用将适用于在区域之间移动的数据。 有关详细信息,请参阅跨 Azure 区域复制数据的费用是多少?
  • 故障转移不是自动发生的。 必须启动从主链接缓存到辅助链接缓存的故障转移。 有关如何故障转移客户端应用程序的详细信息,请参阅启动从异地主实例到异地辅助实例的故障转移

移动

  1. 若要将两个缓存链接到一起进行异地复制,请先在要用作主要链接缓存的缓存的“资源”菜单中选择“异地复制”。 接下来,在左侧的“异地复制”中选择“添加缓存复制链接”。

    显示缓存的“异地复制”菜单的屏幕截图。

  2. 在“兼容的缓存”列表中,选择所需辅助缓存的名称。 如果列表中未显示辅助缓存,请确认是否符合辅助缓存的异地复制先决条件。 若要按区域筛选缓存,请在地图中选择相应的区域,以便仅显示“兼容的缓存”列表中的缓存。

    显示用于与异地复制链接的兼容缓存的屏幕截图。

    还可以使用上下文菜单启动链接过程或查看辅助缓存的详细信息。

    显示“异地复制”上下文菜单的屏幕截图。

  3. 选择“链接”将两个缓存链接在一起并开始复制过程。

    显示如何链接缓存以进行异地复制的屏幕截图。

验证

  1. 可以使用左侧的“异地复制”查看复制过程的进度。

    显示当前“链接”状态的屏幕截图。

    还可以使用“概述”查看左侧的主缓存和辅助缓存的链接状态。

    此屏幕截图重点演示了如何查看主缓存和辅助缓存的链接状态。

    复制过程完成后,“链接状态”改为“成功”。

    显示缓存链接状态为“成功”的屏幕截图。

    在链接过程中,主链接缓存仍然可用。 在链接过程完成之前,辅助链接缓存将不可用。

清理源资源

在目标区域中的新缓存填充了所有必要的数据后,请删除两个缓存之间的链接,并删除原始实例。

  1. 若要删除两个缓存之间的链接并停止异地复制,请从左侧的“异地复制”中选择“取消链接缓存”。

    显示如何取消链接缓存的屏幕截图。

    取消链接过程完成后,辅助缓存可用于读取和写入。

注意

在删除异地复制链接后,从主链接缓存复制的数据保留在辅助缓存中。

  1. 删除原始实例。

创建新的缓存(所有层)

先决条件

准备

如果在移动期间不需要维护数据,则移动区域的最简单方法是在目标区域中创建新的缓存实例,并将应用程序连接到该实例。 例如,如果将 Redis 用作数据库记录的后备缓存,则可以轻松地从头开始重新生成缓存。

移动

  1. Azure 门户中,搜索并选择 Azure Redis 缓存

  2. Azure Redis 缓存 页上,选择“ 创建>Azure Redis 缓存”。

    显示“创建”的 Azure Cache for Redis 选项的屏幕截图。

  3. “新建 Redis 缓存”页的“基本信息”选项卡上,配置以下设置:

    • 订阅:选择要使用的订阅。
    • 资源组:选择资源组,或选择 “新建 ”并输入新的资源组名称。 将所有应用资源放在同一资源组中即可轻松管理或删除它们。
    • 名称:输入区域中唯一的缓存名称。 名称必须:
      • 字符串长度应为1到63个字符。
      • 仅包含数字、字母和连字符。
      • 以数字或字母开头和结尾。
      • 不包含连续的连字符。
    • 区域:选择使用缓存的其他服务附近的 Azure 区域
    • 缓存 SKU:选择 SKU 来确定缓存的可用大小、性能和功能。
    • 缓存大小:选择缓存大小。 有关详细信息,请参阅 Azure Cache for Redis 概述

    显示“新建 Redis 缓存”页的“基本信息”选项卡的屏幕截图。

  4. 选择“ 网络 ”选项卡,或选择“ 下一步:网络”。

  5. 在“网络”选项卡上,选择用于缓存的连接方法。 建议使用专用终结点实现安全性。 如果选择 “专用终结点”,请选择“ 添加专用终结点 ”并创建专用终结点。

  6. 选择“ 高级 ”选项卡,或选择“ 下一步:高级”。

  7. “高级 ”窗格中,配置以下选项:

    • 选择 Microsoft Entra 身份验证访问密钥认证。 默认情况下,Microsoft Entra Authentication 处于启用状态。
    • 选择是否 启用 非 TLS 端口。
    • 对于高级缓存,可以配置或禁用 可用性区域。 创建缓存后,无法禁用可用性区域。 对于标准缓存,会自动分配可用性区域。 可用性区域不适用于基本 SKU。
    • 对于高级缓存,请配置 副本计数群集分片计数系统分配的托管标识和数据 持久性的设置。

    下图显示了标准 SKU 的 “高级 ”选项卡。

    显示标准 SKU 缓存的高级窗格的屏幕截图。

    重要

    将 Microsoft Entra ID 与托管标识一起使用,以授权针对缓存的请求(如果可能)。 使用 Microsoft Entra ID 和托管标识的授权可提供更好的安全性,并且比共享访问密钥授权更容易使用。 若要详细了解如何将托管标识与缓存配合使用,请参阅使用 Microsoft Entra ID 进行缓存身份验证

  8. (可选)选择“ 标记 ”选项卡或选择“ 下一步:标记”,然后输入标记名称和值以对缓存资源进行分类。

  9. 选择 “查看 + 创建”,验证通过后,选择“ 创建”。

新的缓存部署需要几分钟时间。 可以在门户 Azure Redis 缓存页上监视部署进度。 当缓存 状态 显示 “正在运行”时,缓存可供使用。

最后,将应用程序更新为使用新实例。

清理源资源

目标区域中的新缓存正在运行后,请删除原始实例。

使用 RDB 文件导出和导入数据(高级、Enterprise、Enterprise Flash)

开源 Redis 定义了一种标准机制,用于获取缓存的内存中数据集的快照并将其保存到文件中。 此文件名为 RDB,可由另一个 Redis 缓存读取。 Azure Cache for Redis 高级层和 Enterprise 层支持使用 RDB 文件将数据导入到缓存实例中。 可以使用 RDB 文件将数据从现有缓存传输到 Azure Cache for Redis。

重要

RDB 文件格式在 Redis 版本之间可能会更改,并且可能不会保留向后兼容性。 要从中进行导出的缓存的 Redis 版本不应高于新缓存实例的版本。

先决条件

  • 两个缓存都是高级层或 Enterprise 层缓存。
  • 第二个缓存的缓存大小要么和原始缓存一样,要么比原始缓存大。
  • 要从中进行导出的缓存的 Redis 版本不应高于新缓存实例的版本。

准备

若要将缓存实例移动到另一个区域,您需要在所需区域创建第二个高级缓存实例

移动

  1. 有关如何在 Azure Cache for Redis 中导入和导出数据的详细信息, 请参阅在 Azure Cache for Redis 中导入和导出数据

  2. 更新应用程序以使用新缓存实例。

验证

可以通过关注 Azure 门户中的通知或通过查看审核日志中的事件,来监视导入操作的进度。

清理源资源

目标区域中的新缓存正在运行后,请删除原始实例。

双重写入两个缓存(基本、标准和高级)

可以使用应用程序将数据写入到现有缓存和所设置的新缓存,而不是直接在缓存之间移动数据。 最初,应用程序首先从现有的缓存中读取数据。 当新缓存拥有必要的数据后,就可以将应用程序切换到该缓存,然后停用旧缓存。 举例来说,假设使用 Redis 作为会话存储,且应用程序会话的有效期为 7 天。 写入两个缓存一周后,即可确定新缓存包含所有未过期会话信息。 此后,可放心地依靠它,而不必担心数据丢失。

先决条件

  • 第二个缓存的缓存大小要么和原始缓存一样,要么比原始缓存大。

准备

若要将缓存实例移到另一个区域,将需要在所需的区域中创建第二个缓存实例

移动

实现此选项的一般步骤如下:

  1. 修改应用程序代码以写入新实例和原始实例。

  2. 继续从原始实例读取数据,直到新实例填充足够的数据为止。

  3. 更新应用程序代码以仅从新实例读取和写入。

清理源资源

目标区域中的新缓存正在运行后,请删除原始实例。

以编程方式迁移(所有层)

可以通过编程方式从现有缓存中读取数据并将其写入 Azure Cache for Redis,从而创建自定义迁移过程。 此开放源代码工具可用于将数据从一个 Azure Cache for Redis 实例复制到不同 Azure 缓存区域中的另一个实例。 还提供编译版本。 你可能还会发现,源代码可为编写自己的迁移工具提供有用指导。

注意

Microsoft 尚未正式支持此工具。

先决条件

  • 第二个缓存的缓存大小要么和原始缓存一样,要么比原始缓存大。

准备

  • 在现有缓存​​所在区域中创建 VM。 如果数据集很大,请选择功能相对强大的 VM 以减少复制时间。
  • 若要将缓存实例移到另一个区域,将需要在所需的区域中创建第二个缓存实例

移动

在现有缓存所在的区域创建 VM 并在所需区域创建新缓存后,实现该选项的一般步骤是:

  1. 刷新新缓存中的数据以确保其为空。 由于复制工具本身不会覆盖目标缓存中的任何现有密钥,因此需要执行此步骤。

    重要

    确保不要从源缓存中刷新。

  2. 使用应用程序(例如上述开源工具)自动将数据从源缓存复制到目标缓存。 请记住,复制过程可能需要一段时间才能完成,具体取决于数据集的大小。

清理源资源

目标区域中的新缓存正在运行后,请删除原始实例。

后续步骤

了解有关 Azure Cache for Redis 功能的详细信息。