请教各位,如果CDC JOB停止了一段时间后,再重新启动,那么两次JOB之间的数据,会按照数据库的操

请教各位,如果CDC JOB停止了一段时间后,再重新启动,那么两次JOB之间的数据,会按照数据库的操作行为形成Insert/Update Before / Updata After / DELETE的rowkind吗?还是在第二次JOB启动的时候,只会以全量数据同步的方式,全部以Insert向后续算子输出?谢谢

展开
收起
游客3oewgrzrf6o5c 2022-08-09 10:09:11 386 分享 版权
阿里云 AI 助理回答

在CDC JOB停止一段时间后重新启动的情况下,作业的行为取决于所使用的具体技术(如Flink CDC)以及作业的配置方式。通常,Flink CDC支持从上次停止的位置继续读取Binlog,这意味着它能够捕获到两次JOB执行期间数据库中的所有变更操作,包括Insert、Update Before(如果支持并配置)、Update After及DELETE操作。

  • 对于MySQL CDC:如果作业配置为在重启时从最新状态恢复(即利用checkpoint或savepoint),那么它会继续从上次停止的Binlog位置读取,因此能够识别出所有的变更事件,并以相应的RowKind(例如+I, -U, +U, -D)输出到后续算子。这确保了数据的连续性和一致性,不会简单地以全量插入的方式处理。

  • 对于MongoDB CDC:在MongoDB 6.0及以上版本且开启了前像功能时,通过配置'scan.full-changelog' = 'true',可以在SQL作业中输出-U(更新前镜像值)消息,实现更细粒度的变更记录处理。而在较低版本或特定配置下,可能需要额外逻辑来管理状态以获取更新前的镜像值,但基本原理仍然是基于增量日志进行连续处理,而非全量同步。

综上所述,只要作业被正确配置为断点续传模式,并且数据库的Binlog或类似变更日志没有因为过期而被清理,两次JOB之间的数据变更应当会被识别并以相应的RowKind形式输出,而不是仅以全量插入的方式处理。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

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

收录在圈子:
实时计算 Flink 版(Alibaba Cloud Realtime Compute for Apache Flink,Powered by Ververica)是阿里云基于 Apache Flink 构建的企业级、高性能实时大数据处理系统,由 Apache Flink 创始团队官方出品,拥有全球统一商业化品牌,完全兼容开源 Flink API,提供丰富的企业级增值功能。
还有其他疑问?
咨询AI助理