AWS DMS运行Full Load+CDC同步RDS PostgreSQL到Redshift报错排查
AWS DMS从PostgreSQL 9.6 RDS同步到Redshift报错的可能原因
- 源端WAL日志丢失或无法访问:PostgreSQL CDC依赖WAL日志的连续读取,如果RDS的
wal_keep_segments参数设置过小,或者逻辑复制槽异常失效,会导致DMS需要的WAL段被RDS提前回收,流组件无法读取到指定位置的日志就会终止。如果Full Load阶段耗时过长,CDC启动时需要的起始WAL位置已经被清理,也会触发该错误。 - 源端逻辑解码失败:PostgreSQL 9.6的逻辑复制存在部分已知限制,遇到超大事务(单事务大小超过DMS缓冲区阈值)、长时间未提交的空闲事务、源表包含非支持的数据类型(如自定义类型、特殊编码的JSONB字段)、或者源表没有声明主键/唯一键时,都会导致逻辑解码异常,中断DMS的流读取任务。
- 源端权限变更:如果DMS连接RDS所用的账号被意外回收了
rds_replication等逻辑复制相关权限,也会导致CDC阶段读取流日志失败,触发该错误。 - 任务参数或资源配置不合理:即使复制实例规格足够,如果DMS任务的CDC缓冲区参数、批量提交阈值设置不合理,遇到源端高写入峰值时会出现缓冲区溢出,导致流处理失败。另外如果目标端Redshift出现写入限流、维护窗口切换、表锁定等情况,数据写入阻塞时间过长也会反向触发源端流组件终止。
- 偶发性网络连通故障:整体网络吞吐量正常不排除短时间的网络抖动,比如RDS多AZ切换时的秒级断连、安全组/网络ACL临时规则变更、源端连接数达到上限导致DMS连接被拒绝,DMS默认的流读取超时阈值较短,这类偶发故障会直接触发可恢复级别的任务终止。
- DMS引擎版本已知缺陷:低版本的DMS引擎存在针对PostgreSQL 9.6到Redshift同步场景的已知bug,CDC阶段处理特定事务模式时会触发错误码
1020458的异常,升级到对应修复版本的DMS引擎即可解决。
内容的提问来源于stack exchange,提问作者Aniket Maithani
相关产品推荐
相关产品推荐

