排除目标延迟问题 - Amazon 数据库迁移服务
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

排除目标延迟问题

本节包含可能导致目标延迟的场景。

索引问题

在 CDC 阶段,Amazon DMS 通过在目标系统上执行 DML 语句(插入、更新和删除)来复制源上的更改。对于使用 DMS 的异构迁移,源端和目标端在索引优化方面的不同,可能会需要导致花费更长的时间写入目标系统。这会引发目标延迟和性能问题。

要排除此索引问题,请执行以下操作:这些步骤的过程因不同的数据库引擎而异。

  • 监控目标数据库的查询时间。比较目标和源上的查询执行时间可以指明哪些索引需要优化。

  • 为运行缓慢的查询启用日志记录。

要修复长时间运行复制的索引问题,请执行以下操作:

  • 调整源数据库和目标数据库上的索引,使源数据库和目标数据库上具有相似的查询执行时间。

  • 比较源和目标的 DML 查询中使用的二级索引。确保目标上的 DML 性能与源 DML 性能相当或更好。

请注意,优化索引的过程特定于数据库引擎。没有用于调整源索引和目标索引的 DMS 功能。

任务日志中的 SORTER 消息

如果目标端点无法跟上 Amazon DMS 写入其中的更改量,则该任务会在复制实例上缓存更改。如果缓存的增长大于内部阈值,则任务将停止从源读取更多的更改。DMS 这样做是为了防止复制实例的存储空间不足,或者在读取大量待处理事件时任务停滞不前。

要解决此问题,请检查 CloudWatch 日志中是否有类似于以下任一内容的消息:

[SORTER ]I: Reading from source is paused. Total disk usage exceeded the limit 90% (sorter_transaction.c:110) [SORTER ]I: Reading from source is paused. Total storage used by swap files exceeded the limit 1048576000 bytes (sorter_transaction.c:110)

如果您的日志包含的消息与第一条消息类似,请禁用该任务的所有跟踪日志记录,并增加复制实例存储空间。有关增加复制实例存储空间的信息,请参阅 修改复制实例

如果日志包含的消息与第二条消息类似,请执行以下操作:

  • 如果包含大量事务或长时间运行 DML 操作的表,与任务中的其他表没有任何依赖关系,则将其移至单独的任务中。

  • 增加 MemoryLimitTotalMemoryKeepTime 的设置,使事务在内存中保留更长的时间。如果延迟一直保持较高,则这种方法没有帮助,但它有助于在短暂的交易量突发期间降低延迟。有关这些任务设置的信息,请参阅更改处理优化设置

  • 通过将 BatchApplyEnabled 设置为 true,评估是否可以对事务使用批量应用。有关 BatchApplyEnabled 设置的信息,请参阅目标元数据任务设置

数据库锁定

如果应用程序访问 Amazon DMS 用作复制目标的数据库,则应用程序可能会锁定 DMS 尝试访问的表。这会导致锁争用。由于 DMS 按照更改在源数据库上的发生顺序将更改写入目标数据库,因此由于锁争用而导致写入一个表出现延迟,会导致写入所有表出现延迟。

要排除此问题,请查询目标数据库以检查锁争用是否在阻止 DMS 写入事务。如果目标数据库阻止 DMS 写入事务,请执行以下一项或多项操作:

  • 重构查询以更频繁地提交更改。

  • 修改您的锁定超时设置。

  • 对表进行分区以尽可能减少锁争用。

请注意,优化锁争用的过程特定于数据库引擎。没有可用于调整锁争用的 DMS 功能。

LOB 查找缓慢

Amazon DMS 复制大型对象 (LOB) 列时,它会在向目标写入更改之前对源执行查找。这种查找通常不会在目标上造成任何延迟,但是如果源数据库由于锁定而导致查找的延迟,则可能会出现目标延迟峰值。

这个问题通常很难诊断。要排除此问题,请在任务日志上启用详细调试,并比较 DMS LOB 查找调用的时间戳。有关启用详细调试的信息,请参阅查看和管理 Amazon DMS 任务日志

要修复这一问题,请尝试以下操作:

多可用区、审计日志记录和备份

对于 Amazon RDS 目标,在以下情况中目标延迟可能会增加:

  • 备份

  • 启用多可用区 (Multi-AZ) 后

  • 启用数据库日志记录后,例如审计日志或慢速查询日志。

这些问题通常很难诊断。要排除这些问题,请监控在 Amazon RDS 维护时段或数据库负载繁重期间,延迟的周期性峰值。

要修复这些问题,请尝试以下操作:

  • 如果可能,在短期迁移期间,请禁用多可用区、备份或日志记录。

  • 将维护时段重新安排到活动量较低的时段。