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

Flink CDC你们cdc配置db.*,如果库里频繁加表,你们是咋操作的,一加表就重启任务?

Flink CDC你们cdc配置db.*,如果库里频繁加表,你们是咋操作的,一加表就重启任务?不生效啊,任务一直运行着,库里新建一个表,如果不重启任务,增量数据都进不去,只能savepoint,然后savepoint恢复任务,不及时恢复任务,那么后面这个表的历史数据会丢失,除非在任务初始化的时候指定表名,全量启动,后面新建的表,再加到配置里,然后恢复启动不会有问题

展开
收起
真的很搞笑 2023-11-07 08:05:04 69 0
4 条回答
写回答
取消 提交回答
  • 之前cdc 2.4之前的版本还可以获取新建表的数据,后来升级就一直获取不到了,必须重启任务。

    2024-03-28 16:56:20
    赞同 展开评论 打赏
  • mysql有动态加表,动态加表是需要配合savepoint功能的,官网有介绍,代码里很明显这里会清空之前的table-id image.png
    我理解是和.*是没关系的,此回答整理自钉群“Flink CDC 社区”

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

    Flink CDC 在指定 db.* 后不会自动检测表的新建和删除行为,建议尽量不要频繁添加或删除表。如果必须这么做,请参考以下建议:

    1. 使用 savepoint 功能,以免丢失历史数据;
    2. 及时恢复任务,在恢复任务时记得加上新添加的表;
    3. 如果经常添加或删除表,请尽量使用 db. + schema 名称的形式,而不是 db. + 表名的形式;
    4. 注意 schema 名称的安全性,并保持一致性;
    5. 避免手动改动 schema ,因为 Flink CDC 并不会检测到 schema 的变动;
    6. 添加 table filter 功能,可以有效阻止某些不必要的变更事件;
    2023-11-07 14:40:14
    赞同 展开评论 打赏
  • 你遇到的问题是在使用Flink CDC时,库中频繁添加新表,并且需要实时捕获增量数据,但任务一直运行着,不重启任务就会导致新表的数据无法进入,即使使用savepoint恢复任务,如果不及时恢复也会丢失后面的历史数据。

    针对这个问题,可以尝试以下解决方案:

    1. 定期重启任务:为了使Flink CDC能够捕获到新增表的数据,可以定期(例如每天)重启Flink任务。在重启任务时,可以指定最新的表配置,确保能够捕获到新增表的数据。
    2. 使用动态配置:为了避免频繁重启任务和丢失历史数据,可以考虑使用动态配置。将表配置信息存储在一个外部系统(如数据库或配置中心)中,并在Flink任务启动时读取最新的配置信息。当有新表添加时,更新配置信息并重新启动Flink任务即可。
    3. 使用Flink的Table API和Catalog:Flink提供了Table API和Catalog来管理和访问数据库表。可以使用Table API和Catalog来动态地注册和发现数据库表,使Flink CDC能够自动捕获新增表的数据。这样可以避免手动添加表名和重启任务的繁琐过程。
    4. 实现自定义逻辑:在Flink任务中实现自定义逻辑,通过监听数据库的变化来触发增量数据的捕获。当数据库中有新表添加时,通过自定义逻辑检测到变化并触发捕获操作。这样可以避免频繁重启任务和丢失历史数据的问题。
    2023-11-07 10:27:03
    赞同 展开评论 打赏

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

相关产品

  • 实时计算 Flink版
  • 相关电子书

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