如何故障排除 AWS DMS 任务的目标延迟较高问题?

1 分钟阅读
0

我正在运行一个满负荷和更改数据捕获(CDC)AWS Database Migration Service(AWS DMS)任务。源延迟不高,但目标延迟较高或正在升高。

简述

使用 Amazon CloudWatch 指标来监控复制任务的指标。要确定正在进行的复制阶段的复制延迟,请监控 CDCLatencySourceCDCLatencyTargetCDCLatencySource 指标是源实例和复制实例之间的延迟。CDCLatencyTarget 指标是复制实例和目标之间的延迟。有关更多信息,请参阅Replication task metrics

CDCLatencySource 较高意味着从源中捕获更改的过程出现延迟。CDCLatencyTarget 较高意味着将更改事件应用于目标的过程出现延迟。如果 CDCLatencySourceCDCLatencyTarget 都很高,请先对 CDCLatencySource 进行故障排除,因为目标延迟始终等于或大于源延迟。CDCLatencyTarget 较高很可能是因为从源捕获变更事件出现了延迟。如果 CDCLatencySource 不高但是 CDCLatencyTarget 较高,那么这种延迟可能是由以下问题导致的:

  • 目标中没有主键或索引。
  • 目标中存在资源瓶颈。
  • 复制实例中存在资源瓶颈。
  • 复制实例和目标之间存在网络问题。

要解决这些问题,请参阅以下解决方案中的最佳实践和故障排除部分。

解决方案

目标中没有主键或索引

默认情况下,AWS DMS 使用数据操作语言(DML)语句将更改写入目标,例如 INSERT,UPDATE 或 DELETE。如果没有所需的索引,则更改(例如更新和删除)可能会导致全表扫描。全表扫描可能会导致目标系统出现性能问题,并导致目标延迟。检查您的目标数据库模式,尤其是在您手动创建目标模式的情况下。使用目标数据库机制来识别慢速查询,例如 MySQL 的慢速查询日志Amazon Relational Database Service(Amazon RDS)for PostgreSQL 的 pg_stat_activity,或查询计划。如果您的目标是 Amazon Redshift,则还要检查您的表的分配方式。由于分配方式在表中插入或更新数据所需的时间更长,因此所有分配方式都可能导致目标延迟。

目标中的资源瓶颈

如果您的目标没有足够的资源,则目标无法按照 AWS DMS 发送变更的速率接受更改。这可能会导致目标资源瓶颈和目标延迟。如果其他进程消耗目标中的资源,也会发生这种情况。如果 AWS 托管了目标,请查看 CloudWatch 指标中的资源统计数据

复制实例中的资源瓶颈

选择具有足够资源的复制实例来处理您的迁移: CPU、内存、网络或 IOPS。

使用 CloudWatch 指标来监控您的复制实例资源

复制实例和目标之间的网络问题

网络带宽不足也可能导致延迟问题,尤其是在您的目标为本地数据库,或使用 AWS DMS 进行跨 AWS 区域复制时。

最佳实践和故障排除

如果您的目标是 Amazon RDS,请遵循最佳实践来改善 AWS DMS 迁移的性能。Amazon RDS 具有自动备份机制(会在备份时间段启动),会备份移走的数据。如果目标 RDS 数据库实例正在生成快照,此时,如果服务对目标应用更改,AWS DMS 可能会遇到问题。因此,在快照生成结束前,目标延迟会增加。如果您的目标是 Amazon Elastic Compute Cloud(Amazon EC2)或本地数据库,请检查目标数据库的备份机制。

某些任务设置会导致更改写入目标的速度很慢。如果您从变化率较高的源运行持续复制,请使用 BatchApplyEnabled。有关更多信息,请参阅 BatchApplyEnabled 部分,隶属于Debugging Your AWS DMS Migrations: What to Do When Things Go Wrong? (Part 3)

要将 BatchApplyEnabled 设置为 True,请使用 AWS 命令行界面(AWS CLI)运行 modify-replication-task 命令:

aws dms modify-replication-task --replication-task-arn arn:aws:dms:ap-northeast-1:123456789012:task:ABCDEFGHIJKLMNOPQRSTUVWXYZ --replication-task-settings "{\"TargetMetadata\":{\"BatchApplyEnabled\":true}}"

**注意:**如果您在运行 AWS CLI 命令时收到错误,请参阅排查 AWS CLI 错误。此外,确保您使用的是最新的 AWS CLI 版本

相关信息

Change processing tuning settings

AWS 官方
AWS 官方已更新 7 个月前
没有评论