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

有没有兄弟遇到过Flink CDC中修改数据 但是cdc采集不到的问题?sql方式没试过

有没有兄弟遇到过Flink CDC中修改数据 但是cdc采集不到的问题?image.png sql方式没试过

展开
收起
真的很搞笑 2023-07-02 16:46:24 306 0
3 条回答
写回答
取消 提交回答
  • 是的,有时候在 Flink CDC 中会遇到修改数据但无法采集到的问题。可能的原因包括:

    1. Flink CDC 配置错误:请确保正确订阅需要同步的数据库和表,并检查 Flink CDC 的配置是否正确。

    2. CDC Event 不包含修改的行数据:Flink CDC 读取的 CDC Event 可能没有包含修改的行数据。这可能是由于底层的 CDC 技术(如 MySQL binlog)没有正确捕获到数据修改所导致的。

    3. 底层 CDC 技术未捕获数据修改:请检查底层数据库(如 MySQL)的 binlog 配置是否正确,并确保没有其他配置剔除了 binlog 数据,例如在 SQL 中使用了 statement readonly 等操作。

    为了排查问题,您可以采取以下步骤:

    - 使用 SQL 检查修改的数据:在执行 Flink CDC 同步任务之前,先执行一条 SQL 查询语句,将表中的数据作为快照保存下来。然后执行需要修改数据的 SQL。再次执行 SQL 查询,将结果与之前的快照数据进行比对,以确定 Flink CDC 是否已经消费了修改后的数据。

    - 检查 SQL 不能捕获到的数据修改:有些情况下,SQL 无法捕获到数据修改,可能是由于修改数据的 SQL 使用了 statement readonly,或者修改事务被 rolled back 而不会写入 binlog。

    如果通过 SQL 可以正常查询到已修改的数据,那么很可能是 Flink CDC 或底层数据库的配置有问题。建议提供更多的信息,例如 Flink 版本、Flink CDC 配置、底层数据库版本和调用的修改数据的 SQL 或代码。这样可以更进一步分析原因并帮助解决问题。

    关于集群机器中使用 SQL 方式抽取 MySQL 数据乱码的问题,您可以检查一下 Flink 的配置文件(flink-conf.yaml)中的 env.java.opts 配置项是否设置为 -Dfile.encoding=UTF-8。如果设置了还无法解决乱码问题,可能是打包过程中的问题。可以尝试在 IDEA 等环境中进行测试,确认在测试环境中是否正常。此外,您也可以参考 Flink CDC 社区中的讨论,寻找其他可能的解决方案。

    2023-07-30 12:56:12
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    是的,确实可能会遇到 Flink CDC 没有捕获到表数据修改的情况。主要有几种可能的原因:
    Flink CDC 配置错误,没有订阅需要同步的库或表。
    Flink CDC 读取的 CDC Event 不包含修改的行数据。
    底层的 CDC 技术(如 MySQL binlog)没有捕获到的数据修改。
    具体原因需要检查:
    Flink CDC 配置是否正确,是否订阅了要同步表
    底层数据库(MySQL 等)的 binlog 配置是否正确
    是否存在其他剔除 binlog 的配置,如 SQL 中使用 statement readonly 等
    一个比较可靠的方法是通过 SQL 检查修改的数据:
    在 Flink CDC 同步之前,将表数据用 SQL 取出作为快照。
    运行需要修改表数据的 SQL。
    再次通过 SQL 查询表数据,与第一步快照数据对比。
    检查 Flink CDC 是否已经消费了修改后的数据。
    关于 SQL 不能捕获到的数据修改,可能的原因包括:
    修改数据的 SQL 使用了 statement readonly,没有写入 binlog
    修改数据的事务被 rolled back,不会写入 binlog
    总的来说,如果通过 SQL 可以正常查询到数据已经修改,那么 99% 的情况是 Flink CDC 配置或者 binlog 配置有问题。
    建议提供更多信息如:
    Flink 版本
    Flink CDC 配置
    底层数据库版本
    修改数据使用的 SQL 或者代码
    根据相关信息可以进一步分析原因,帮助你解决问题。
    希望以上信息能为你提供帮助!如果还有其他疑问,欢迎继续交流。

    2023-07-30 10:50:19
    赞同 展开评论 打赏
  • 那你集群机器sql方式来抽取mysql乱码吗。乱码的话也可以检查下 flink conf 的配置,env.java.opts: -Dfile.encoding=UTF-8 这种,他们都设置了,解决不了,集群sql抽取是正常的,idea测试也是整的,应该是打包的问题,此回答整理自钉群“Flink CDC 社区”

    2023-07-02 17:05:29
    赞同 展开评论 打赏

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

相关产品

  • 实时计算 Flink版
  • 热门讨论

    热门文章

    相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载