【问题标题】:Migrating data from RDS Postgres DB to s3 via the DMS AWS service通过 DMS AWS 服务将数据从 RDS Postgres DB 迁移到 s3
【发布时间】:2022-11-25 16:54:22
【问题描述】:

我正在通过 DMS AWS 服务将数据从 RDS Postgres DB 迁移到 s3。

DMS任务的类型是满载和CDC。 假设现在我在名为 employee 的 postgres 表中有一些数据。 例如:

emp_id emp_name
1 John
2 Angel

最初创建任务时,将完成完整加载,并在 s3 目标位置创建 LOAD00000 ___.parquet 文件。 现在我要在表中插入另一行。

emp_id emp_name
3 Ram

现在发生 CDC 操作,并创建了一个带有 parquet 文件 init 的日期文件夹 (20220101/)。

尽管在表重新加载发生后在 postgres 中发生了截断/删除操作,但我实际上试图将表保留在目标中。

"ChangeProcessingDdlHandlingPolicy": {
  "HandleSourceTableDropped": false,
  "HandleSourceTableTruncated": false,
  "HandleSourceTableAltered": false
}

我的任务设置中有这些配置。 期望当我在 postgres 中截断/删除表然后重新加载时,目标数据不应分别被截断/删除。但是,无论我在HandleSourceTableDroppedHandleSourceTableTruncated 的配置键中给出的值如何。目标文件夹被删除。

我的 task_setting.json 文件还有:

"TargetTablePrepMode": "TRUNCATE_BEFORE_LOAD",

问题:

  1. 为什么 s3 文件夹在重新加载时被删除?无论我为ChangeProcessingDdlHandlingPolicy 中的键提供的值(真/假)如何。
  2. ChangeProcessingDdlHandlingPolicy这个配置对象是什么意思?

【问题讨论】:

    标签: postgresql amazon-s3 data-migration aws-dms change-data-capture


    【解决方案1】:

    根据我对此的最佳理解首先回答您的问题-

    所以设置 ChangeProcessingDdlHandlingPolicy 与 DDL 有关,这主要是在您的目标是数据库实例的情况下。更多关于这个here

    由于在您的情况下目标是s3,因此这些设置是什么和被忽略并不重要。

    现在,如果你希望你的目标文件夹在你重新加载时不受影响,你可能想尝试使用"TargetTablePrepMode": "Do Nothing"(使用正确的语法,如果不是)

    然而,无论如何,当您重新加载时,目标处的数据将被覆盖,即重新启动任务。虽然如果您想保留 ,您可以恢复任务,并且迁移将从上次停止的点开始。

    更多关于这个here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-24
      • 1970-01-01
      • 2020-06-21
      • 2018-07-24
      • 2020-05-19
      • 2019-05-22
      相关资源
      最近更新 更多