AWS DMS CDC任务切换表后仅获控制记录无数据记录问题排查
AWS DMS CDC迁移仅获控制记录无业务数据的原因分析
环境与问题描述
环境配置:AWS DMS源端点为Aurora Postgres,目标端点为Kinesis Data Stream,任务采用CDC迁移类型。
- 当表映射规则包含
xyz.meter表时,可正常获取业务数据记录; - 改为包含
route.stopobject表时,仅收到create-table类型的控制记录,无业务数据记录。
记录示例
正常业务数据记录(xyz.meter表)
{ "data": { "id": 139018, "name": "abcdef", "description": "Test 5th Jun2:42 PM", "producttypeid": 643005, "metertypeid": 642893, "longitude": 100, "latitude": 100, "isactive": "true", "createdby": 43989, "createdon": "2023-12-27T11:13:01.731Z", "modifiedby": 43989, "modifiedon": "2024-06-05T09:12:38.618Z" }, "metadata": { "timestamp": "2024-06-05T09:12:39.067961Z", "record-type": "data", "operation": "update", "partition-key-type": "schema-table", "schema-name": "xyz", "table-name": "meter", "transaction-id": 104129875 } }
切换后仅有的控制记录
{ "timestamp": "2024-06-05T08:53:21.660141Z", "record-type": "control", "operation": "create-table", "partition-key-type": "task-id", "schema-name": "route", "table-name": "stopobject" }
{ "metadata": { "timestamp": "2024-06-05T08:53:20.663690Z", "record-type": "control", "operation": "create-table", "partition-key-type": "task-id", "schema-name": "dms_control_table", "table-name": "awsdms_apply_exceptions" } }
可能原因
- CDC权限不足:Aurora Postgres的CDC依赖逻辑复制槽,若DMS使用的数据库账号或IAM角色没有
route.stopobject表的REPLICATION权限、表级SELECT权限,无法捕获该表的变更数据。而xyz.meter表的权限配置完整,所以能正常同步。 - 表未配置复制标识:PostgreSQL中,表需设置
REPLICA IDENTITY才能被CDC捕获变更。route.stopobject可能未配置合适的复制标识(比如无主键/唯一键导致默认标识无效,或被设置为NOTHING),而xyz.meter有主键且标识配置正确。 - 无后续变更触发:如果DMS任务的CDC起始位置早于
route.stopobject表的最后一次变更时间,且任务启动后该表没有新的增删改操作,只会同步表结构的控制记录,不会产生业务数据。xyz.meter在任务运行期间有持续变更,因此能捕获到数据。 - 表映射规则隐性错误:虽已捕获到create-table记录,但仍需检查表映射规则是否存在大小写不匹配(PostgreSQL表名默认区分大小写)、误加排除规则等问题,避免规则实际未正确匹配表。
- 逻辑复制槽未包含该表:DMS创建的逻辑复制槽可能未将
route.stopobject纳入复制范围,需检查源端点的复制槽配置,确认该表被包含在内。
内容的提问来源于stack exchange,提问作者Starlord5107
相关产品推荐
相关产品推荐

