跳至内容

我应该何时重启并恢复处于 Stopped(停止)或 Failed(失败)状态的 AWS DMS 任务?

2 分钟阅读
0

我有一项处于 Stopped(停止)或 Failed(失败)状态的 AWS Database Migration Service (AWS DMS) 任务。我应该何时恢复或重启我的 AWS DMS 任务以继续复制?

简短描述

当您的 AWS DMS 任务处于 Stopped(停止)或 Failed(失败)状态时,您有两种选择可以继续复制:

  • 恢复 - 当您恢复任务时,AWS DMS 会从任务停止或失败前的最后一点开始继续复制。
  • 重启 - 当您重启任务时,AWS DMS 从头开始复制,并使用您在创建任务时选择的表准备模式。例如,表准备模式包括 Drop table on target(在目标上删除表)、Truncate(截断)和 Do nothing(什么都不做)。有关详细信息,请参阅完全加载任务设置

根据您使用的三种 AWS DMS 迁移方法中的哪一种,恢复和重启操作的行为会有所不同。这些方法包括完全加载、完全加载和更改数据捕获 (CDC) 以及仅限 CDC 的迁移。有关详细信息,请参阅创建任务

解决方法

迁移现有数据(完全加载)

对于完全加载任务,如果您在任务创建期间手动启动任务,请使用 AWS DMS 控制台中的重启操作开始复制。这会重新加载迁移中的所有表。

您也可以使用重新加载表数据选项来重新加载迁移期间失败的特定表。这意味着已经加载的表不需要再次加载,任何未完成加载的表都将再次加载。

如果您在迁移多个表时使用恢复选项,则未完全完成的表将重新开始。已完成迁移的表不受影响。如果您要迁移单个表,最佳做法是重启任务,而不是使用恢复选项。

迁移现有数据并复制持续更改(完全加载和 CDC)

当您使用完全加载和 CDC 任务时,AWS DMS 会迁移表数据,然后应用源上发生的数据更改。如果您重启任务,这将再次加载所有表,并从重启时开始捕获源更改。如果您的任务配置为 Do nothing(什么都不做)准备模式,请在重启任务之前手动清空目标表。

如果您恢复任务,则只有在最后一个停止点之后捕获的更改才会应用于数据库。如果迁移任务在 CDC 阶段停止,则 AWS DMS 会保留检查点信息以备将来使用。您可以在 AWS DMS 控制台Overview details(概述详细信息)选项卡中查看任务检查点。

仅复制数据更改(仅限 CDC)

如果您使用的是仅限 CDC 的任务,则可以从当前时间或从 CDC 起点开始捕获源数据更改。如果在定义 CDC 起点时重启任务,则重新加载操作将加载自该时间点以来的所有更改。如果您在没有 CDC 起点的情况下重启任务,则从任务停止到重启的 CDC 更改都将丢失。

无论 CDC 起点配置如何,恢复操作都会继续复制自上个停止点以来的更改。如果您使用 Truncate 目标表准备模式重启任务,则 AWS DMS 会保留现有目标表及其元数据。但是,它会在重新开始迁移之前删除这些表中的所有现有数据。

恢复或重启 AWS DMS 任务的常见场景

以下是一些常见示例,说明您何时可以在 AWS DMS 任务上使用恢复或重启操作。

重启 AWS DMS 任务:

  • 如果源数据库管理系统 (DBMS) 不包含恢复日志文件或事务日志文件以恢复 CDC 进程,请重启任务。重启任务会加载所有表数据并继续捕获更改。
  • 如果 AWS DMS 任务处于错误状态,这意味着该任务中的一个或多个表无法迁移。在 Error(错误)状态下,任务继续从选择规则加载其他表,但状态为 Failed(失败)的任务因致命错误而停止。解决错误后,重新加载表或重启任务以解决错误状态。有关详细信息,请参阅为什么我的 AWS DMS 任务处于错误状态?
  • 如果完全加载和 CDC 或仅限 CDC 的任务停止,则数据更改可能会从内存溢出到磁盘。根据交换到磁盘的更改数据量,任务恢复可能需要很长时间才能继续复制。这是因为 AWS DMS 从磁盘读取这些更改需要更长的时间。因此,如果可行,请重启任务以避免等待时间。
  • 如果您在使用 Oracle LogMiner 和 AWS DMS Binary Reader 之间切换,请确保重启 CDC 任务。
    注意: 修改 CDC 方法后,如果您重启配置了 CDC 恢复检查点的仅限 CDC 的任务,则可能会看到类似于以下内容的错误:
    “[SOURCE_CAPTURE ]D: Invalid context provided for the Binary Reader based CDC.Restart task is required.”
    要解决此错误,请根据 CDC 起点的时间戳启动任务。

恢复 AWS DMS 任务:

  • 如果您将任务移动到新的复制实例,请恢复该任务以继续复制自上次停止之时以来的更改。
  • 如果您想升级源数据库或目标数据库,请停止在这些数据库上运行的所有 AWS DMS 任务。升级完成后恢复任务。
  • 如果您计划升级源数据库或目标数据库,请停止在这些数据库上运行的所有 AWS DMS 任务。升级完成后恢复任务。但是,要执行 PostgreSQL 引擎版本升级,实例上不能有任何复制槽。因此,在升级引擎之前删除所有复制槽,然后重启任务以重新创建复制槽。

相关信息

数据迁移的源

使用 AWS DMS 复制实例

重启复制实例

AWS 官方已更新 3 年前