flink-sqlserver-cdc-2.4.0 ,采用的默认的配置'scan.startup.mode' = 'initial',只能完成之前的全量数据,增量数据不能同步,但是配置为latest-offset,是可以获取增量数据的。回滚到 2.3.0 版本,initial 就没有问题,sqlserver 版本 2017?
这可能是由于 Flink SQL Server CDC Connector 的一个已知 bug 导致的。根据官方文档,当使用 scan.startup.mode
= initial
模式时,它会在首次启动时读取所有历史数据,并在后续运行期间记录最后一次检查点的位置以进行增量读取。但是在某些情况下,此功能可能无法正常工作,并可能导致只读取初始快照而忽略增量数据。
为了解决这个问题,你可以尝试以下几种方法:
scan.startup.mode
设置为 latest-offset
。这会确保每次启动时都从最新位置开始读取数据,并且通常能够正常处理增量数据更新。这个问题可能是由于Flink SQL Server CDC connector的版本不匹配导致的。在Flink 2.4.0中,SQL Server CDC connector的版本可能已经更新,而新的版本可能不支持'initial'模式的初始化方式。
在Flink 2.3.0中,SQL Server CDC connector的版本可能还支持'initial'模式的初始化方式。
为了解决这个问题,你可以尝试以下的方法:
升级你的SQL Server CDC connector版本到最新版本,看看是否可以解决这个问题。
如果升级到最新版本的SQL Server CDC connector仍然无法解决问题,你可以尝试在Flink 2.4.0中使用'latest-offset'模式的初始化方式,看看是否可以获取到增量数据。
上面问题,临时将 2.4.0 的快照的 checkpoint 设置为false('scan.incremental.snapshot.enabled'='false'
),可以恢复正常,原因还没来得及看,此回答整理自钉群“Flink CDC 社区”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。