"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?"
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这个错误提示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版本
接受更新无法识别旧值的限制
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。