如何排查 AWS DMS 任务源延迟高的问题?

上次更新时间:2019 年 10 月 1 日

如何排查 AWS Database Migration Service (AWS DMS) 任务源延迟高的问题?

简短描述

您可以使用 Amazon CloudWatch 指标来监控您的 AWS DMS 任务。在迁移过程中,您可能会在 AWS DMS 任务的持续复制阶段 — 即变更数据捕获 (CDC) 阶段 — 看到源延迟。您可以使用针对 CDCLatencySourceCloudWatch 服务指标来监控 AWS DMS 任务的源延迟。如果您看到 AWS DMS 任务的源延迟,它可能归因于以下一个或多个原因:

  • 源数据库的资源有限。
  • AWS DMS 复制实例的资源有限。
  • 源数据库与 AWS DMS 复制实例之间的网络速度慢。
  • AWS DMS 在持续复制期间读取来自源数据库事务日志的新更改。
  • AWS DMS 任务设置不足或者正在迁移大型对象 (LOB)。
  • 用于 AWS DMS 任务的 Oracle 源数据库正在使用 LogMiner 执行持续复制。

解决方法

源数据库的资源有限。 最佳实践是使用源数据库引擎的原生监控,以确保数据库不会遇到性能瓶颈(例如 CPU 或内存竞争或 IO 饱和)。

AWS DMS 复制实例的资源有限。 监控复制实例指标(例如 CPUUtilizationFreeStorageSpaceFreeableMemory)。确认复制实例具有足够的资源来管理您的任务。

源数据库与 AWS DMS 复制实例之间的网络速度慢。 由于设计的原因,单个 AWS DMS 任务不能使用全部网络带宽。如果某个繁忙的生产数据库具有较高的更改率,则您可能需要增加网络带宽。例如使用 AWS Direct Connect 连接

AWS DMS 在持续复制期间读取来自源数据库事务日志的新更改。根据源数据库引擎的不同,源事务日志还可能存在未提交的数据。在持续复制期间,AWS DMS 会读取从事务日志传入的更改,但 AWS DMS 仅将已提交的更改转发到目标。这最终会导致源延迟。

而在源数据库写入大型数据集并执行较少的提交时,AWS DMS 会继续从事务日志读取。但在整个事务提交前,AWS DMS 不会将更改应用到目标,这也可能导致源延迟。由于源延迟增加,目标延迟也会增加。

AWS DMS 任务设置不足或者正在迁移大型对象 (LOB)。 在持续复制期间,AWS DMS 会分两个阶段来迁移 LOB 数据。首先,AWS DMS 会用除含有 LOB 的列以外的所有列在目标表中创建一个新行。然后,AWS DMS 会更新含有 LOB 的行。如果您的某个源数据库经常更新含有 LOB 列的表,则您可能会看到源延迟。有关更多信息,请参阅迁移大型二进制对象 (LOB)

用于 AWS DMS 任务的 Oracle 源数据库正在使用 LogMiner 执行持续复制。 如果您有一个繁忙的源数据库生成大量重做日志,或者源数据库使用 Oracle 自动存储管理 (ASM) 功能,则您可能需要使用二进制读取器方法来进行持续复制。有关更多信息,请参阅将 Oracle LogMiner 或 Oracle Binary Reader 用于更改数据捕获 (CDC)


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助吗?