如何使用 AWS DMS 中的“SchemaName.TableName”分区键将数据迁移到 Amazon Kinesis 数据流?

问题描述 投票:0回答:1

我正在尝试设置 DMS 以将数据推送到 kinesis 流,并使用基于架构和表名称的分区键。目的是获取给定表的所有 cdc 事件命中单个分片,以更好地保证给定表的事件排序(尽管我知道这不是 100% 的保证)。

我想使用文档所说的受支持的设置(在其他一些地方说是默认设置!):

“AWS DMS 支持以下两种形式的分区键: SchemaName.TableName:架构和表名称的组合。 ${AttributeName}:JSON 中字段之一的值,或者源数据库中表的主键。"

但是,我在 AWS 控制台或 aws cdk 中没有看到任何使用前者的设置,并且我的分区键显示为源数据库中数据的主键(如果重要的话,它是 aurora postgresSQL)。我可以将架构和表附加到开头,但这并不能解决将 1 个表分配到 1 个分片的问题。

我希望将此作为 DMS 复制任务或所有表的运动设置的通用设置,但我也尝试了定义单个架构和表的文档中的所有“对象映射”方法,但没有成功.

我在 kinesis 流上的记录如下:

{"metadata": {'timestamp': '2024-07-12T22:39:43.800897Z', 'record-type': 'data', 'operation': 'load', 'partition-key-type': 'primary-key', 'schema-name': 'public', 'table-name': 'addresses'}, "PartitionKey":  'public.addresses.f92bbb5e-9782-4917-b9fe-15c747792876'}, ...

我希望它看起来像:

{'timestamp': '2024-07-12T22:39:43.800897Z', 'record-type': 'data', 'operation': 'load', 'partition-key-type': 'schema-table', 'schema-name': 'public', 'table-name': 'addresses'},  'PartitionKey': 'public.addresses'}, ...

我尝试过:

  • 使用
    mapping_parameters: {"partition-key-type": "schema-table"}
  • 为单个表添加“对象映射”条目
  • 使用
    mapping_parameters: {"partition-key": {"value": "public_addresses"}}
  • 为单个表添加“对象映射”条目
aws-cdk amazon-kinesis amazon-aurora aws-dms
1个回答
0
投票

我也遇到了同样的问题,无法弄清楚。 你能解决吗

© www.soinside.com 2019 - 2024. All rights reserved.