使用 AWS Database Migration Services(AWS DMS)时,我收到了错误“Last Error Replication task out of memory.Stop Reason FATAL_ERROR Error Level FATAL”。
简短描述
您在使用 AWS DMS 时收到以下错误: “Last Error Replication task out of memory.Stop Reason FATAL_ERROR Error Level FATAL”。要找到错误的根本原因,请查看 AWS DMS 任务日志。对于上述错误,日志会提供以下信息: “Task process for 'XXXXXXX' failed because it ran out of memory”。
要解决此错误,请完成下面的一个或多个步骤:
- 更改任务设置或内存相关参数。
- 根据复制实例的 Amazon CloudWatch 指标(例如 FreeMemory 和 SwapUsage)的波动来纵向扩展复制实例类。
- 根据迁移的数据大小和任务所需的内存量将单个任务拆分为多个任务。
解决方法
**注意:**在进行修改之前,必须先停止任务。完成修改后,必须继续执行该任务。如果任务在满载阶段停止,则会从头开始重新加载正在运行的表。
更改任务设置或内存相关参数
检查是否可以扩展需要更高内存容量的任务设置或内存相关参数。下面是一些最常见的任务设置和要检查的参数:
- LOB 设置
- 验证参数,例如 ThreadCount 和 PartitionSize
- 并行线程参数,例如 ParallelLoadThreads、ParallelLoadBufferSize、ParallelLoadQueuesPerThread、ParallelApplyThreads、ParallelApplyBufferSize 和 ParallelApplyQueuesPerThread。
- 批量应用参数,例如 BatchApplyTimeoutMin、BatchApplyTimeoutMax、BatchApplyMemoryLimit 和 BatchSplitSize。
- 其他内存相关的任务设置,例如 MinTransactionSize、MemoryLimitTotal、MemoryKeepTime 和 StatementCacheSize。
有关上述任务设置和参数的更多详细信息,请参阅 AWS DMS 如何使用内存进行迁移?
根据 Amazon CloudWatch 指标的波动纵向扩展复制实例类
检查复制实例的 FreeMemory 和 SwapUsage 指标。如果 FreeMemory 减少或者 SwapUsage 增加或波动,请考虑迁移到更大的复制实例。
另外,请考虑使用内存优化的实例。内存优化的实例适用于内存密集型工作负载,例如正在进行的高吞吐量事务的迁移和复制。有关复制实例大小和类型的更多信息,请参阅 Choosing the right AWS DMS replication instance for your migration。
根据迁移的数据大小和任务所需的内存量将单个任务拆分为多个任务
如果复制实例有多个任务,则可以使用 DMS MemoryUsage 指标来观察任务消耗的内存量。要确定任务在 CDC 阶段占用内存的原因,请比较 CDCChangesMemorySource 和 CDCChangesMemoryTarget,然后对相应的端点进行故障排除。
当复制实例上正在运行多个任务时,请执行以下一项或多项操作:
- 减少复制实例上正在运行的任务数量和类型。
- 将失败的任务迁移到不同的复制实例,然后重试。
- 增加实例容量。
对于并行加载多个表或迁移许多表和架构的任务,请执行以下一项或多项操作:
- 减少并行加载的表数量。
- 减少要迁移的表和架构总数。
- 在不同的复制实例上使用不同的任务来转移某些表和架构的迁移工作负载。
- 增加实例容量。
相关信息
Target metadata task settings
Change processing tuning settings
AWS Database Migration Service metrics