在故障转移场景中与 Oracle 数据库一起使用时如何处理 亚马逊云科技 DMS 复制

亚马逊云科技 数据库迁移服务 (亚马逊云科技 DMS) 用于将数据库迁移到 亚马逊云科技,但您也可以使用它以低延迟将数据从任何支持的 复制 到任何支持的 目标。

使用 Oracle 数据库时,在主数据库的故障转移期间,当备用数据库过渡到主数据库时,亚马逊云科技 DMS 会停止复制由于重置日志而导致的数据更改。

在这篇文章中,我们描述了解决此问题的必要步骤顺序,并演示了如何在数据库故障转移期间处理 亚马逊云科技 DMS 源终端节点。我们还演示了如何添加额外的连接属性以支持数据库故障转移场景,以及在将 亚马逊云科技 DMS 重新指向备用数据库之前需要采取的步骤。

解决方案概述

下图说明了我们的故障转移架构。

为了让 亚马逊云科技 DMS 继续将数据从 Oracle 备用数据库复制到 Oracle 主数据库,在数据库故障转移之后,我们在 亚马逊云科技 DMS 源端点设置中添加 su pportResetLog=TRUE 参数作为额外的连接属性。通过添加此参数,亚马逊云科技 DMS 能够读取数据库故障转移后生成的一组新的存档日志序列号。

如果我们在未设置 s upportResetLog=TRUE 的情况下使用带有备用数据库的 AWS DMS 时发生故障转移 ,我们会在 AWS DMS 任务日志中看到以下错误

Errorlog

亚马逊云科技 DMS 与 Oracle 数据保护设置一起使用时,可以利用 Oracle 备用数据库来卸载主数据库的工作负载。但是,如果发生故障转移,连接到 Oracle 备用数据库的 DMS 复制任务将由于重置日志事件而停止复制更改,备用数据库不支持这种情况。在 Oracle Data Guard 环境中,备用数据库通过接收和应用来自主数据库的重做数据来与主数据库同步。如果主数据库不可用,则可以使用 Oracle Data Guard 将备用数据库切换或故障转移到主角色。

为了解决这个问题,我们需要在 亚马逊云科技 DMS 源端点设置中添加额外的连接属性 s upportResetLog=TRUE 将 亚马逊云科技 DMS 源重定向到主数据库,并通过指定自定义 CDC 起始点或日志序列号或指定恢复检查点来恢复 DMS 任务。有关更多信息,请参阅 使用 亚马逊云科技 DM S 为持续复制 创建任务

注意: 如果您 的 AWS DMS 版本为 3.4.7 及以下,则需要设置 supportResetLog=TRUE,因为在未来的版本中,此参数默认设置为 TRUE。

在以下部分中,我们将介绍向 亚马逊云科技 DMS 源终端节点添加额外连接属性 (su pportResetLog=TRUE ) 的过程。然后,在 亚马逊云科技 DMS 任务的变更数据捕获 (CDC) 绕过数据库故障转移后生成的存档日志的序列号后,我们将 亚马逊云科技 DMS 重新连接到备用数据库。

先决条件

在本演练中,必须满足以下先决条件:

  • 一个 亚马逊云科技 账户
  • Oracle 数据库处于主和备用设置以及实时同步状态。有关说明,请参阅 创建物理备用数据库
  • 亚马逊云科技 DMS 中的复制实例应该能够访问主机和备用主机。有关说明,请参阅 为复制实例 设置网络
  • 源和目标终端节点。有关说明,请参阅 创建源和目标端点
  • 一个 亚马逊云科技 DMS 迁移任务。有关说明,请参阅 创建任务

创建源端点和目标端点

基于 Oracle Data Guard 设置,我们将源端点配置为连接到备用数据库,将目标端点配置为连接到任何支持的目标。

在这篇文章中,我们使用甲骨文备用数据库作为源,使用 亚马逊简单存储服务 (Amazon S3)作为目标。

配置源端点以连接到新的主数据库主机并添加额外的连接属性

数据库故障转移后,我们希望 亚马逊云科技 DMS 源端点连接到新的主数据库主机,并将 su pportResetLog=True 参数添加到源端点的额外连接属性中。完成以下步骤:

  1. 在 亚马逊云科技 DMS 控制台上, 在导航窗格中选择 终端节点
  2. 选择要修改的源端点。
  3. 服务器名称中 ,输入主数据库主机的名称。
    pciture3
  4. 选择 使用端点连接属性
  5. 在 “额外连接属性” 中添加 su pportResetLog=TRUE 参数。

在故障转移或切换场景中,新的主存档可能使用与原始主存档不同的存档 DEST_ID 值。在这种情况下,亚马逊云科技 DMS 需要有关从哪个目的地获取存档重做日志以读取更改的信息。

Oracle 使用范围从 0 到 6 的随机 DEST_ID。因此,最佳做法是添加 ext raArchivedLogdestids= [1,2,3,4,5,6] 以涵盖从 1 到 6 的 DEST _ID,同时使用 zeroDestid=True 参数 来涵盖 DEST_ID 值为 0。

以下屏幕截图是在启用 “ 使用端点连接属性” 并将值添加到 “ 额外连接 ” 属性后拍摄的。

picture4

有关额外连接属性的更多信息,请参阅 使用 Oracle 作为 亚马逊云科技 DM S 源时的 额外连接属性

恢复 亚马逊云科技 DMS 任务并验证日志

当您恢复任务时,亚马逊云科技 DMS 会继续从任务停止或失败之前的最后一个点开始复制。当您重新启动任务时,亚马逊云科技 DMS 从头开始复制,并使用您在创建任务时选择的表准备模式。

在这种情况下,我们需要从中断的地方继续执行任务,因此我们将继续执行 亚马逊云科技 DMS 任务并在 A mazon CloudWatch 中验证日志。完成以下步骤:

  1. 在 亚马逊云科技 DMS 控制台上,选择导航窗格 中的 数据库迁移任务
  2. 选择要继续执行的任务,然后在 “ 操作 ” 菜单上选择 “ 重新启动/ 恢复”。
  3. 选择 “ 继续” ,然后选择 “ 启动任务” 。
    picture5
  4. 选择任务的名称,然后查看 概述详细信息 部分。
  5. 选择 “ 查看云观日志 ”。

在以下屏幕截图中,您可以看到序列号 5 的存档重做日志序列处理,这表明 亚马逊云科技 DMS 进程在故障转移后开始读取数据库的新序列存档日志。

picture6

有关查看 亚马逊云科技 DMS 任务详细信息的更多信息,请参阅 如何使用概述详细信息访问我的 亚马逊云科技 DMS 任务 信息。

停止复制任务并将 亚马逊云科技 DMS 源终端节点配置回备用数据库

此时,可以安全地将 亚马逊云科技 DMS 源端点重新配置回备用数据库,以避免对主数据库的性能造成任何影响。

  1. 在 亚马逊云科技 DMS 控制台上,选择导航窗格 中的 数据库迁移任务
  2. 选择要停止的任务,然后在 “ 操作” 菜单上选择 “ 停止” 。
  3. 在 亚马逊云科技 DMS 控制台上, 在导航窗格中选择 终端节点
  4. 选择要修改的源端点。
  5. 服务器名称中 ,输入备用数据库主机的名称。
    picture7

恢复 亚马逊云科技 DMS 任务

现在您可以恢复 亚马逊云科技 DMS 任务了。

  1. 在 亚马逊云科技 DMS 控制台上,选择导航窗格 中的 数据库迁移任务
  2. 选择要继续执行的任务,然后在 “ 操作 ” 菜单上选择 “ 重新启动/ 恢复”。
  3. 选择 “ 继续” ,然后选择 “ 启动任务” 。
    picture5

以下屏幕截图是在备用数据库上继续执行任务后拍摄的。我们还可以在屏幕截图的最后一行中看到,CAPTURE 进程正在从 ONLINELOG 读取, 这意味着我们的复制没有延迟,重做更改是最新的。

picture8

结论

使用 亚马逊云科技 DMS 进行复制是许多客户的常用解决方案,而 Oracle 备用数据库是 亚马逊云科技 DMS 捕获数据变化的常用方法。

在这篇文章中,我们演示了如何借助额外的连接属性 su pportResetLog=TRUE 在故障转移场景中处理 AWS DMS 复制任务 。我们还讨论了将 AWS DMS 指向备用数据库所需的步骤,备用数据库可以帮助在敏感的生产环境中卸载主数据库。

我们邀请您在这篇文章的评论部分留下反馈。


作者简介


Prashanth Ramaswamy
是亚马逊网络服务专业服务团队的高级数据库顾问。Prashanth 专注于领导向 亚马逊云科技 的数据库迁移工作,并为亚马逊客户提供包括成本优化、监控和现代化专业知识在内的技术指导。


Jeemy Patel
是亚马逊网络服务专业服务团队的数据库顾问。Jeemy 帮助客户迁移到 亚马逊云科技、优化性能,并为亚马逊客户提供有关各种灾难恢复解决方案的技术指导。


Saumya Mula
是亚马逊网络服务专业服务团队的高级数据库顾问。她为亚马逊客户提供数据库从本地迁移到 亚马逊云科技 的总体指导,以及关键生产系统的自动化、成本管理和性能调整。