You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Amazon DMS未完整复制删除CDC记录,仅获主键与Op字段求助

解决DMS从RDS PostgreSQL到S3的CDC删除记录无完整行镜像问题

以下是针对性的排查和解决步骤:

1. 检查PostgreSQL表的REPLICA IDENTITY配置

PostgreSQL默认仅在WAL中记录删除操作的主键字段,要获取完整行镜像,必须将目标表的REPLICA IDENTITY设置为FULL:

  • 执行SQL命令修改表配置:
    ALTER TABLE your_target_table REPLICA IDENTITY FULL;
    
  • 验证配置:
    SELECT relname, relreplident FROM pg_class WHERE relname = 'your_target_table';
    
    返回结果中relreplident应为f(代表FULL)。

2. 确认RDS PostgreSQL的逻辑复制参数

确保RDS实例已开启逻辑复制:

  • 检查rds.logical_replication参数值为1(可在RDS控制台的参数组中查看/修改)。
  • 修改参数后需重启RDS实例生效。

3. 验证DMS任务与端点配置

  • 源端点权限:确认DMS使用的数据库用户拥有REPLICATION权限,以及目标表的SELECT权限。
  • 任务CDC设置:在DMS任务的「任务设置」中,确认已正确启用CDC,且未配置字段过滤规则导致非主键字段被排除。
  • S3目标配置:检查S3目标的CDC输出格式设置,确保未勾选仅输出主键的选项。

4. 间接验证WAL记录内容

虽然无法直接访问RDS的复制存储,但可通过临时逻辑复制槽验证WAL是否记录完整行:

  1. 创建测试逻辑复制槽:
    SELECT pg_create_logical_replication_slot('test_cdc_slot', 'pgoutput');
    
  2. 执行测试删除操作。
  3. 读取槽内的CDC记录:
    SELECT * FROM pg_logical_slot_get_changes('test_cdc_slot', NULL, NULL);
    
  4. 若返回的删除记录包含完整字段,则问题出在DMS配置;若仅含主键,则PostgreSQL侧的配置仍有问题。
  5. 测试完成后删除槽:
    SELECT pg_drop_replication_slot('test_cdc_slot');
    

5. 排查DMS任务日志

查看DMS任务关联的CloudWatch日志,搜索关键词如missing column、replica identity、CDC,定位是否存在权限不足、配置错误或表结构不兼容等提示。


内容的提问来源于stack exchange,提问作者Saljooq Altaf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 06:20:44