我应该在什么时候重新启动并恢复处于 Stopped(已停止)或 Failed(已失败)状态的 AWS DMS 任务?

1 分钟阅读
0

我有一个处于 Stopped(已停止)或 Failed(已失败)状态的 AWS Database Migration Service(AWS DMS)任务。我应该在什么时候恢复或重新启动 AWS DMS 任务以继续复制?

简短描述

当 AWS DMS 任务处于“已停止”或“已失败”状态时,您有两个选项可以继续复制:

  • 恢复:恢复任务时,AWS DMS 将从任务停止或失败之前的最后一点继续复制。
  • 重新启动:重新启动任务时,AWS DMS 将从头开始复制,并使用您在创建任务时选择的表准备模式。例如,表准备模式包括在目标上“删除”表、“截断”和“不执行任何操作”。有关更多信息,请参阅满负载任务设置

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

解决方法

迁移现有数据(满负载)

对于满负载任务,如果您在任务创建期间手动启动任务,则使用 AWS DMS 控制台中的重新启动操作来启动复制。此操作将重新加载迁移中的所有表。

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

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

迁移现有数据和复制正在进行的更改(满负载和 CDC)

当您使用满负载和 CDC 任务时,AWS DMS 会迁移表数据,然后应用源上发生的数据更改。如果重新启动任务,将再次加载所有表,并从重新启动时开始捕获源更改。如果任务配置为“不执行任何操作”准备模式,请在重新启动任务之前手动清空目标表。

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

仅复制数据更改(仅 CDC)

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

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

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

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

重新启动 AWS DMS 任务:

  • 如果源数据库管理系统(DBMS)不包含恢复 CDC 过程所需的恢复日志文件或事务日志文件,请重新启动任务。重新启动任务会加载所有表数据并继续捕获更改。
  • 如果 AWS DMS 任务处于错误状态,这意味着该任务中有一个或多个表无法迁移。处于错误状态下时,任务会继续根据选择规则加载其他表,但处于失败状态的任务将会停止并产生致命错误。解决错误后,请重新加载表或重新启动任务以解决错误状态。有关更多信息,请参阅为什么我的 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.”(D:为基于 Binary Reader 的 CDC 提供的上下文无效。必须重新启动任务。)
    要解决此错误,请根据 CDC 起点中的时间戳启动任务。

恢复 AWS DMS 任务:

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

相关信息

数据迁移的源

使用 AWS DMS 复制实例

重新启动复制实例

AWS 官方
AWS 官方已更新 1 年前
没有评论