2

我一直在使用 AWS DMS 执行从 MySql Aurora 到 Redshift 的持续复制。但是,正在进行的复制会导致目标上持续 25-30% 的 CPU 负载。这是因为它会在 S3 上生成许多小文件并不停地加载/处理它们。Redshift 并不是真正为处理大量小任务而设计的。

为了优化,我已经做到了,该过程在每小时开始时开始,等到目标同步,然后停止。因此,它不是连续工作,而是在每小时开始时工作 5-8 分钟。即便如此,它仍然非常缓慢且未优化,因为它仍然需要处理数百个小型 s3 文件,而且时间跨度更短。

这可以进一步优化吗?有没有办法告诉 DMS 将这些更改缓冲更长的时间,而不是产生更少的大文件而不是许多小的 s3 文件?我们真的不介意更高的目标延迟。

Aurora 和 Redshift 之间传输的数据量相当小。每小时大约有 2 万次更改,我们使用的是 4 节点 dc1.large redshift 集群。它应该能够在几秒钟内处理那些 20K 的变化,而不是几分钟

4

2 回答 2

1

也许,你可以试试 BatchApplyTimeoutMin 和 BatchApplyTimeoutMax。 https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TaskSettings.ChangeProcessingTuning.html

BatchApplyTimeoutMin 设置 AWS DMS 在每次应用批量更改之间等待的最短时间(以秒为单位)。默认值为 1。

您可以将值更改为 1200,甚至 3600。

于 2019-01-18T02:29:52.767 回答
0

提高maxFileSize目标设置 - https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Redshift.html

于 2018-01-04T11:08:47.420 回答