Flink CDC中pg全量同步阶段正确,增量阶段就报错,什么原因?

"Flink CDC中pg全量同步阶段正确,增量阶段就报错,什么原因?he “before” field of UPDATE/DELETE message is null, please check the Postgres table has been set REPLICA IDENTITY to FULL level. You can update the setting by running the command in Postgres 'ALTER TABLE public.test1 REPLICA IDENTITY FULL
难道每次都要执行ALTER TABLE public.test1 REPLICA IDENTITY FULL?"

展开
收起
十一0204 2023-08-09 10:13:49 186 分享 版权
1 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    这个错误提示Flink Postgres CDC增量同步阶段的原因是:

    Postgres表的replica identity设置不够,导致UPDATE/DELETE操作没法获取到旧版本记录的主键值。

    具体原因:

    Postgres的默认replica identity只记录整数主键或整行,对于非主键更新无旧值提供

    CDC需要主键或修改列的值,用来删除旧数据记录和更新定征

    解决方法:

    为表设置FULL replica identity,记录所有列值
    pgsql
    Copy
    ALTER TABLE tablename
    REPLICA IDENTITY FULL;
    设置组合主键或唯一索引作为replica identity

    为每列添加变更追踪,产生明确的before/after版本

    接受更新无法识别旧值的限制

    2023-08-10 22:53:28
    赞同 展开评论

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

还有其他疑问?
咨询AI助理