开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

oracle11g 在 flinkCDC2.4 下使用flinkSql来进行同步,增量没有问题吗?

oracle11g 在 flinkCDC2.4 下使用flinkSql来进行同步,增量没有问题吗?会在全量结束后,确认 checkpoint 的时候卡住,表现出来就是只能全量不能增量,但是用 datastream 编写没有问题。Snapshot split assigner received all splits finished, waiting for a complete checkpoint to mark the assigner finished.

展开
收起
真的很搞笑 2023-12-01 11:16:34 65 0
3 条回答
写回答
取消 提交回答
  • 在 Flink CDC 2.4 中,使用 Flink SQL 进行同步时,增量同步可能会出现问题。如果在全量同步结束后,确认 checkpoint 时卡住,只能进行全量同步而不能进行增量同步,这可能是由于 Snapshot split assigner 接收到所有拆分完成并等待一个完整的检查点来标记分配器完成导致的。

    为了解决这个问题,你可以尝试以下方法:

    1. 增加检查点的超时时间。在 Flink 配置文件(flink-conf.yaml)中,设置 taskmanager.network.memory.mintaskmanager.network.memory.max 参数,以便为检查点分配更多的内存。例如:
    taskmanager.network.memory.min: 64mb
    taskmanager.network.memory.max: 256mb
    
    1. 调整 Flink SQL 的并行度。在 Flink SQL 查询中,可以通过设置 parallelism.default 参数来调整并行度。例如:
    SET parallelism.default = 8;
    
    1. 如果问题仍然存在,可以考虑升级 Flink CDC 版本。确保你使用的是最新版本的 Flink CDC,因为它可能已经修复了这个问题。
    2023-12-02 15:41:34
    赞同 展开评论 打赏
  • 根据您提供的信息,使用 Flink CDC 2.4 在 Oracle 11g 上进行增量同步时,在全量结束后可能遇到确认 checkpoint 卡住的问题。这可能导致只能进行全量同步而无法进行增量同步。

    这个问题可能是由于 Oracle 11g 的某些特殊行为所导致的。Oracle数据库在进行全量查询时可能会采用长事务的方式,这可能会阻塞 Flink 的 checkpoint 确认过程。

    为了解决这个问题,您可以尝试以下一些解决方案:

    1. 调整 checkpoint 配置:尝试调整 Flink 的 checkpoint 配置。例如,增加 checkpoint 的超时时间 checkpoint.timeout 或者调整 checkpoint 的间隔时间 env.enableCheckpointing(interval)

    2. 设置查询超时时间:在查询 Oracle 数据库时,可以设置适当的查询超时时间,以避免长时间的阻塞。您可以通过使用 Flink 的 Statement.setQueryTimeout(seconds) 来设置查询超时时间。

    3. 使用异步快照模式:在 Flink CDC 中,您可以尝试使用异步快照模式(AsyncSnapshotMode),以便更好地处理长时间事务的场景。您可以在 Flink CDC 的配置中设置 cdc.async-snapshot-mode 为 true。

    4. 升级 Oracle 版本:如果可能的话,考虑升级到较新版本的 Oracle 数据库。较新版本的 Oracle 可能已经解决了一些与长事务相关的问题。

    2023-12-02 10:05:09
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    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 过程中的某些环节出现了问题。

    以下是一些可以尝试的解决方法:

    1. 检查 Oracle 配置:确保 Oracle 数据库已经正确配置了 CDC(Change Data Capture),并且在运行 Flink SQL 同步任务时具有足够的权限。
    2. 调整 Flink Checkpoint 参数:您可以调整 Flink 中与 checkpoint 相关的参数,例如 checkpoint.intervalstate.checkpoints.dir 等,以适应您的工作负载和环境。
    3. 增加日志级别:将 Flink 和 Oracle CDC 相关的日志级别提高到 DEBUG 或 TRACE 级别,以便更详细地了解哪个环节出了问题。
    4. 确认网络连接:检查 Flink 作业和 Oracle 数据库之间的网络连接是否稳定,并确保没有防火墙或安全组规则阻止通信。
    5. 升级组件版本:如果问题仍然存在,考虑升级 Flink CDC 版本或其他相关组件版本,因为新版本可能已经解决了类似的问题。
    2023-12-01 17:10:11
    赞同 展开评论 打赏

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

相关电子书

更多
PostgresChina2018_樊文凯_ORACLE数据库和应用异构迁移最佳实践 立即下载
PostgresChina2018_王帅_从Oracle到PostgreSQL的数据迁移 立即下载
Oracle云上最佳实践 立即下载

相关镜像