如何使用 AWS DMS 控制为我的目标 S3 端点生成的 CDC 文件的数量?

上次更新日期:2022 年 12 月 1 日

当使用 Amazon Simple Storage Service (Amazon S3) 作为目标端点时,我想要控制生成的变更数据捕获 (CDC) 文件的数量。如何使用 AWS Database Migration Service(AWS DMS)实现此目的?

简短描述

使用 Amazon S3 作为目标端点时,您可以使用多个参数来控制目标端点中的关联文件大小。这包括使用 Amazon S3 作为满负载和 CDC 的目标端点,或仅使用 CDC 的 AWS DMS 任务。

本文讨论了以下额外的连接属性 (ECA)。此外,其中还介绍如何使用它们来控制在您的 Amazon S3 端点上生成的 CDC 文件量:

  • cdcMaxBatchInterval - 输出文件到 Amazon S3 的最大间隔长度条件,以秒为单位。默认值为 60 秒。
  • cdcMinFileSize - 输出文件到 Amazon S3 的最大文件大小条件,以 KB 为单位。默认值为 32000 KB。
  • maxFileSize - 满负载期间迁移到 S3 目标时所创建的任何 .csv 文件的最大大小,以 KB 为单位。默认值是 1 GB。
  • WriteBufferSize - 在 AWS DMS 复制实例的本地磁盘上生成 .csv 文件时所使用的内存中文件写入缓存的大小,以 KB 为单位。默认值是 1000 KB。

解决方法

cdcMaxBatchInterval 参数控制写入文件到 Amazon S3 的时间间隔。当它使用 60 秒的默认值时,AWS DMS 每分钟会写入文件到 Amazon S3。另一项重要参数为 cdcMinFileSize 参数,该参数会确定 CDC 文件的最大大小。当使用 32000 KB 的默认值时,AWS DMS 会在每次有 32000 KB 变更数据时将其写入 Amazon S3。

cdcMaxBatchInterval 和 cdcMinFileSize 参数可协同运行。AWS DMS 会使用先满足的参数值。如果使用默认设置,AWS DMS 会在有一分钟待处理变更或 32000 KB 数据时写入文件到 Amazon S3。根据先发生的情况,其中一个操作将完成。
注意:AWS DMS 将事务保存在同一个文件中,因此,如果事务很大,文件大小可能会超过 cdcMinFileSize 和 cdcMaxBatchInterval 值。

maxFileSize 会为 CSV 和 Parquet 格式确定 S3 目标输出文件的最大文件大小。但在写入到 .parquet 文件时,AWS DMS 会批量写入数据:

1.    AWS DMS 会分配 1024 KB 的内存分段,它是 writeBufferSize 的默认大小。

2.    无论 maxFileSize 的值为何,AWS DMS 都会分配至少一个默认大小为 1 MB 的写入缓存。

3.    当 AWS DMS 完成写入第一批数据时,它会将当前的数据大小和 maxFileSize 进行比较。如果当前大小大于或等于 maxFileSize,数据会被写入到目标 S3 桶中的 .parquet 文件。

4.    如果您将 maxFileSize 设置为 1 MB,则默认值为 1 MB 的 writeBufferSize 与 maxFileSize 的值相符。这是因为在分配一个写入缓存后已满足该条件。如果您想减小生成的 .parquet 文件的总体大小,则可以减小 writeBufferSize 的值。如果将其设置为小于 1 MB,则在写入的数据小于 1 MB 时进行条件检查。

注意:WriteBufferSize 参数设置仅适用于 .parquet,而不适用于 .csv 文件。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?