我想提高完全加载和 CDC AWS Database Migration Service (AWS DMS) 任务的变更数据捕获 (CDC) 复制性能。源延迟不高,但目标延迟较高或正在升高。
简短描述
默认情况下,AWS DMS 在 CDC 阶段使用事务应用来复制数据。如果您的任务从来源捕获大量事务并导致目标延迟,则可以激活批量应用设置。
**注意:**默认情况下,Amazon Redshift 目标使用批量应用。Amazon Simple Storage Service (Amazon S3) 目标必须使用事务应用。
批量应用仅适用于具有主键或唯一索引的表。对于没有主键或唯一索引的表,批量应用仅在批量模式下应用插入,然后逐一执行更新和删除。如果该表有主键或唯一索引但切换到逐一模式,请参阅如何对 Amazon Redshift 切换到逐一模式的问题进行故障排除?
当您在复制中包含大型二进制对象 (LOB) 列时,只能在有限的 LOB 模式下使用 BatchApplyEnabled。有关详细信息,请参阅目标元数据任务设置。
**注意:**如果您将 BatchApplyEnabled 设置为 true,并且您的目标有唯一的约束条件,则 AWS DMS 会生成一条错误消息。
解决方法
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
默认情况下,BatchApplySetting 处于关闭状态。要激活此设置,请使用 AWS CLI 或 AWS DMS 控制台。在激活批量应用之前,请创建一个具有编程访问权限的 IAM 用户。
使用 AWS CLI 激活批量应用
完成以下步骤:
- 打开使用 AWS CLI 的系统。
- 运行 configure 命令以打开 AWS CLI 提示符。
- 输入您的 AWS 访问密钥 ID。
- 输入您的 AWS 密钥 ID。
- 输入您的 AWS DMS 资源的 AWS 区域。
- 输入输出格式。
- 确认任务处于 stopped(已停止)状态。
- 使用以下批处理设置运行 modify-replication-task 命令:
aws dms modify-replication-task --replication-task-arn arn:aws:dms:region:123456789123:task:4VUCZ6ROH4ZYRIA25M3SE6NXCM --replication-task-settings "{\"TargetMetadata\":{\"BatchApplyEnabled\":true}}"
**注意:**将 replication-task-arn 替换为您的 Amazon 资源名称 (ARN),将 region 替换为您的区域。
- 打开 AWS DMS 控制台。
- 在导航窗格的 Migrate or replicate(迁移或复制)下,选择 Tasks(任务)。
- 选择您的任务,然后选择 Task settings (JSON)(任务设置 (JSON))。
- 确认 BatchApplyEnabled 已设置为 enabled(已启用)。
使用 AWS DMS 控制台激活批量应用
完成以下步骤:
- 打开 AWS DMS 控制台。
- 在导航窗格的 Migrate or replicate(迁移或复制)下,选择 Tasks(任务)。
- 选择您的任务,然后选择 Modify(修改)。
- 在 Task settings(任务设置)部分中,选择 JSON editor(JSON 编辑器)。
- 在 TargetMetadata 下,将 BatchApplyEnabled 更改为 true。
- 选择 Save(保存)。
在批处理模式下运行任务后,对高 CDCLatencyTarget 进行故障排除
如果在批处理模式下运行任务后 CDCLatencyTarget 较高,则可能会由于以下原因导致延迟:
- 由于没有主索引和二级索引,您在目标上有一个长时间运行的事务。
- 您的可用资源不足,无法处理目标上的工作负载。
- 您的 AWS DMS 复制实例存在严重的资源争用。
要对高延迟问题进行故障排除,请参阅对 AWS Database Migration Service 中的延迟问题进行故障排除。
相关信息
监控 AWS DMS 任务
更改处理优化设置