问下,postgre cdc 读取update和delete数据时候,replica identity设置为default时,before信息里面能获取到更新事件的主键信息吗
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
当PostgreSQL的replica identity
设置为default
时,在update和delete操作中,before信息里只能获取到主键列的值或者为空(如果没有定义主键)。这意味着您将无法获得更新事件中所有列的旧值,仅能获取到主键字段的信息或缺失。如果您需要在这些操作的before信息中获取完整的行镜像,应将replica identity
设置为FULL
。
为了确保Flink SQL能够正确解析Debezium从PostgreSQL捕获的变更数据,特别是处理update和delete事件时包含所有列的之前值,建议执行以下SQL命令来修改表的配置:
ALTER TABLE yourTableName REPLICA IDENTITY FULL;
这样设置后,Debezium产生的change events将在before字段中包含完整的行数据,对于update和delete操作更加友好,便于下游系统如Flink进行正确的处理和分析。
参考资料: - Debezium connector for PostgreSQL 文档中关于REPLICA IDENTITY
的说明。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。