oracle11g 在 flinkCDC2.4 下使用flinkSql来进行同步,增量没有问题吗?会在全量结束后,确认 checkpoint 的时候卡住,表现出来就是只能全量不能增量,但是用 datastream 编写没有问题。Snapshot split assigner received all splits finished, waiting for a complete checkpoint to mark the assigner finished.
在 Flink CDC 2.4 中,使用 Flink SQL 进行同步时,增量同步可能会出现问题。如果在全量同步结束后,确认 checkpoint 时卡住,只能进行全量同步而不能进行增量同步,这可能是由于 Snapshot split assigner 接收到所有拆分完成并等待一个完整的检查点来标记分配器完成导致的。
为了解决这个问题,你可以尝试以下方法:
taskmanager.network.memory.min
和 taskmanager.network.memory.max
参数,以便为检查点分配更多的内存。例如:taskmanager.network.memory.min: 64mb
taskmanager.network.memory.max: 256mb
parallelism.default
参数来调整并行度。例如:SET parallelism.default = 8;
根据您提供的信息,使用 Flink CDC 2.4 在 Oracle 11g 上进行增量同步时,在全量结束后可能遇到确认 checkpoint 卡住的问题。这可能导致只能进行全量同步而无法进行增量同步。
这个问题可能是由于 Oracle 11g 的某些特殊行为所导致的。Oracle数据库在进行全量查询时可能会采用长事务的方式,这可能会阻塞 Flink 的 checkpoint 确认过程。
为了解决这个问题,您可以尝试以下一些解决方案:
调整 checkpoint 配置:尝试调整 Flink 的 checkpoint 配置。例如,增加 checkpoint 的超时时间 checkpoint.timeout
或者调整 checkpoint 的间隔时间 env.enableCheckpointing(interval)
。
设置查询超时时间:在查询 Oracle 数据库时,可以设置适当的查询超时时间,以避免长时间的阻塞。您可以通过使用 Flink 的 Statement.setQueryTimeout(seconds)
来设置查询超时时间。
使用异步快照模式:在 Flink CDC 中,您可以尝试使用异步快照模式(AsyncSnapshotMode),以便更好地处理长时间事务的场景。您可以在 Flink CDC 的配置中设置 cdc.async-snapshot-mode
为 true。
升级 Oracle 版本:如果可能的话,考虑升级到较新版本的 Oracle 数据库。较新版本的 Oracle 可能已经解决了一些与长事务相关的问题。
Oracle 11g 和 Flink CDC 2.4 结合使用进行数据同步时,全量同步没有问题,但是在确认 checkpoint 的时候可能会卡住。这可能导致增量同步出现问题,表现为只能全量同步而不能增量同步。
当您看到 "Snapshot split assigner received all splits finished, waiting for a complete checkpoint to mark the assigner finished." 这样的消息时,通常意味着 Flink 在等待一个完整的 checkpoint 来标记分配器完成。这可能是因为 checkpointing 过程中的某些环节出现了问题。
以下是一些可以尝试的解决方法:
checkpoint.interval
、state.checkpoints.dir
等,以适应您的工作负载和环境。版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。