本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
排除目标延迟问题
本节包含可能导致目标延迟的场景。
索引问题
在此CDC阶段,通过在目标系统上执行DML语句(插入、更新和删除)来 Amazon DMS 复制源系统上的更改。对于使用的异构迁移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)
如果您的日志包含的消息与第一条消息类似,请禁用该任务的所有跟踪日志记录,并增加复制实例存储空间。有关增加复制实例存储空间的信息,请参阅 修改复制实例。
如果日志包含的消息与第二条消息类似,请执行以下操作:
数据库锁定
如果应用程序访问用作复制目标的数据库, Amazon DMS 则该应用程序可能会锁定DMS正在尝试访问的表。这会导致锁争用。由于按源数据库上发生的顺序将更改DMS写入目标数据库,因此由于锁争用而导致写入一个表的延迟会导致写入所有表的延迟。
要解决此问题,请查询目标数据库以检查锁争用是否阻塞了DMS写入事务。如果目标数据库阻塞了DMS写入事务,请执行以下一项或多项操作:
重构查询以更频繁地提交更改。
修改您的锁定超时设置。
对表进行分区以尽可能减少锁争用。
请注意,优化锁争用的过程特定于数据库引擎。没有用于调整锁争用的DMS功能。
LOB查找速度慢
当 Amazon DMS 复制一个大的 object (LOB) 列时,它会在向目标写入更改之前对源执行查找。这种查找通常不会在目标上造成任何延迟,但是如果源数据库由于锁定而导致查找的延迟,则可能会出现目标延迟峰值。
这个问题通常很难诊断。要解决此问题,请在任务日志上启用详细调试,并比较DMSLOB查询调用的时间戳。有关启用详细调试的信息,请参阅查看和管理 Amazon DMS 任务日志。
要修复这一问题,请尝试以下操作:
提高源数据库的SELECT查询性能。
调整DMSLOB设置。有关调整LOB设置的信息,请参见 迁移大型二进制对象 (LOB)。
多可用区、审计日志记录和备份
对于 Amazon RDS 目标,目标延迟可能会在以下期间增加:
备份
启用多可用区(Multi-AZ)后
启用数据库日志记录后,例如审计日志或慢速查询日志。
这些问题通常很难诊断。要解决这些问题,请监控 Amazon RDS 维护时段或数据库负载繁重期间的周期性峰值的延迟。
要修复这些问题,请尝试以下操作:
如果可能,在短期迁移期间,请禁用多可用区、备份或日志记录。
将维护时段重新安排到活动量较低的时段。