为什么 AWS DMS 任务失败但未提示错误?

1 分钟阅读
0

我将数据从源引擎迁移到目标引擎时使用的是 AWS Database Migration Service(AWS DMS)。但是任务失败了,也没有提示任何错误。

简短描述

当 AWS DMS 任务失败时,任务日志会进行记录。任务日志会通过错误消息(]E:)或警告消息(]W:)提供失败原因的信息。在某些情况下可能会出现 AWS DMS 任务失败但未提示任何错误或警告,因此难以进行故障排查。

通常,AWS DMS 任务失败有以下原因:

复制实例上的资源争用

CPU 和内存是迁移任务所需的两个最重要的资源:

  • CPU 必须先将源数据类型转换为 AWS DMS 类的数据类型,然后再转换为目标数据类型。
  • 因为 AWS DMS 会创建流向源和目标的流,所以内存是必需的。AWS DMS 将信息存储在复制实例内存中的流缓冲区。

内部监控系统监控复制实例时也会使用 CPU 和内存。任何 CPU 或内存争用都可能导致迁移任务失败且不提示错误。

复制实例的“存储已满”状态

如果复制实例存储空间已满,则迁移任务可能失败且不会提示错误。

出现内部错误

内部错误也可能导致 AWS DMS 任务失败且不提示错误。默认情况下记录的任务日志中看不到内部错误。

解决方法

**注意:**如果任务使用非关系数据库管理系统,则可能需要在没有并行设置的情况下运行任务。有关更多信息,请参阅 Target metadata task settings

查看 DMS、来源和目标日志以了解更多信息。检查任务静默失败后任务日志中最后一次录入的时间。然后,检查与该故障记录同时期的复制实例上的 CPU、内存和磁盘利用率。

如果同时看到低 FreeableMemory 和高 SwapUsage,则复制实例上可能存在内存争用情况。有关更多信息,请参阅 AWS Data Migration Service metrics

要查看 CloudWatch 指标,请完成以下步骤:

  1. 打开 AWS DMS 控制台
  2. 在导航窗格中,选择数据库迁移任务
  3. 选择失败任务的名称。
  4. 概述详细信息部分记下复制实例的名称。
  5. 在导航窗格中,选择复制实例
  6. 选择记下的复制实例的名称。
  7. 迁移任务指标部分,查看 CPUUtilizationSwapUsageFreeableMemoryFreeStorageSpace 指标。
  8. 要查看更多详细信息,请将鼠标悬停在指标上,然后选择“更多”选项图标。
  9. 选择在指标中查看。此操作将打开 CloudWatch 控制台。

在 CloudWatch 控制台中,查看任务失败时的指标利用率。

如果看到 CPU 或内存持续争用的情况,请减少在复制实例上运行的任务数量。要减少任务数量,可以启动新的复制实例,将任务分配给多个复制实例。或者,将复制实例纵向扩展到更大的实例类型。

**注意:**T2 实例能在 CPU 积分用尽后提供基准性能。例如,T2.micro 实例能提供 10% 的基准性能。验证 CPU 利用率时,请将实例类型纳入考量。有关更多信息,请参阅突](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-credits-baseline-concepts.html)具爆发能力的实例的关键概念和定义[。

确定静默失败的来源后,重新启动任务。如果 CPU、内存或磁盘空间不存在争用,则任务失败可能是由于内部错误导致的。要对内部错误进行故障排查,请启用详细调试。查看错误发生之前的日志,然后为相关日志启用详细调试。例如,如果最后一个日志来自 TARGET_APPLY,则启用 SORTER, TARGET_APPLY 的详细调试。开启详细调试后,重新启动任务,然后查看任务日志,确定任务失败的原因。

**注意:**失败可能是由于验证问题引起,而非您的数据问题。要测试验证组件是否为失败原因,请运行一个仅限验证的任务,以查看是否出现问题。

相关信息

Troubleshooting migration tasks in AWS Database Migration Service

如何从 AWS 获得技术支持?

为什么我的 AWS DMS 复制数据库实例处于存储已满状态?

AWS 官方
AWS 官方已更新 5 个月前