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

有没有大佬帮解惑下 困扰好几天了 flinkcdc采集oracle 增加新的表时 从check

有没有大佬帮解惑下 困扰好几天了 flinkcdc采集oracle 增加新的表时 从checkpoint恢复 有时候报错新增的表无法识别 报这个 DML for table ....... that is not known to this connector, skipping.image.png

展开
收起
雪哥哥 2022-11-27 10:55:00 437 0
7 条回答
写回答
取消 提交回答
  • 当使用Flink CDC采集Oracle时,如果在checkpoint恢复过程中出现新增的表无法识别的报错,可能是由于以下原因导致的:

    1、Flink CDC版本过低:请确保使用的Flink CDC版本是最新的,以确保对新表的支持。

    2、未正确配置CDC连接器:在配置Flink CDC连接器时,需要确保将新增的表添加到CDC连接器的配置中。可以通过修改配置文件或使用API来添加新表的信息。

    3、未正确设置初始化模式:在checkpoint恢复过程中,可能需要设置初始化模式为latest-offset或earliest-offset,以确保能够正确识别新增的表。

    2023-08-26 21:09:42
    赞同 1 展开评论 打赏
  • 十分耕耘,一定会有一分收获!

    楼主你好,这个错误提示意思是 Flink CDC connector 不认识新增的表,跳过解析 DML 操作。出现这种情况可能是因为启动了 CDC 任务之后,在 checkpoint 恢复之前增加了表,导致 Flink CDC connector 没有加载新增表的 schema。

    需要解决这个问题,可以尝试以下几个方法:

    1. 停止 CDC 任务,重新启动,让 Flink CDC connector 重新加载表的 schema。
    2. 在增加新表之前,先停止掉 CDC 任务。
    3. 在启动 CDC 任务时,使用 "specific-offsets" 恢复方式,指定每个表的 offset 位置,避免在 checkpoint 恢复时出现加载新增表的 schema 的问题。
    2023-08-21 15:13:05
    赞同 展开评论 打赏
  • 这个错误信息是由于Flink CDC Connector无法识别您新添加的表而引起的。需要在Flink CDC Connector中显式指定新表的名称。
    可以通过以下步骤在Flink CDC Connector中指定新表的名称:

    在Flink作业中添加一个新的表,例如:

    CREATE TABLE new_table (
      col1 INT,
      col2 STRING
    ) WITH (
      'connector' = 'filesystem',
      'path' = '/path/to/my/files',
      'format' = 'csv'
    );
    

    在您的Flink CDC Connector配置中添加新表的名称,例如:

    connector:
      type: 'oracle'
      host: 'localhost'
      port: '1521'
      username: 'username'
      password: 'password'
      database: 'database'
      table:
        - 'old_table'
        - 'new_table'
    

    在上面的配置中,我们添加了一个名为“new_table”的新表。
    注意需要确保在Flink作业和Flink CDC Connector配置之间使用相同的数据库和表名称。这样才能保证Flink CDC Connector能够正确地识别新表并从数据库中采集数据。
    image.png
    image.png

    2023-08-18 09:02:05
    赞同 展开评论 打赏
  • 在使用 Flink CDC 采集 Oracle 数据时,如果在从 checkpoint 恢复的过程中遇到新增的表无法识别的问题,并报错 "DML for table ... that is not known to this connector, skipping",可能是由以下原因之一引起的:
    image.png

    1. 未正确配置表白名单(table whitelist):Flink CDC 需要明确知道要采集哪些表的变更事件。请确保在 Flink CDC 的配置中正确设置了需要同步的表白名单,包括所有需要监控的表。这样可以确保所有新增的表都被正确识别并进行同步。

    2. 未正确配置初始扫描模式(initial scan mode):如果您在 Flink CDC 的配置中选择了增量模式而不是全量模式,在从 checkpoint 恢复时,Flink CDC 可能会跳过尚未记录到 checkpoint 中的新增表的变更事件。请检查和确认初始扫描模式是否正确配置,并根据需要选择合适的模式。

    3. 检查日志和错误消息:详细查看 Flink CDC 的日志和错误消息,以确定具体的错误原因。有时候错误消息中可能提供了更具体的信息,例如缺少特定表的元数据或表结构不匹配等。仔细分析并根据错误消息进行相应的调整和修复。

    4. 版本兼容性问题:确认所使用的 Flink CDC 版本与 Oracle 数据库版本之间是否存在兼容性问题。某些版本的 Flink CDC 可能无法识别或适应特定的 Oracle 版本。确保使用兼容的版本,并参考官方文档以获取相关的版本信息和已知问题。
      image.png

    2023-08-16 22:30:22
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    在 Flink CDC 采集 Oracle 数据库时,当新增表后从 checkpoint 恢复时,有时会遇到报错 "DML for table ....... that is not known to this connector, skipping",表示该连接器不识别新增的表。

    这个问题通常是由于 Flink CDC 在 checkpoint 阶段保存了旧的表信息,但在恢复时,无法识别新增的表导致的。这可能是因为 Flink CDC 的元数据信息没有及时更新,导致无法识别新表的变更事件。

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

    清除旧的 checkpoint 数据:在重新启动 Flink CDC 之前,尝试删除或清除旧的 checkpoint 数据,以便在重启时重新加载表信息和元数据。这样可以确保 Flink CDC 能够识别新增的表。

    更新 Flink CDC 版本:如果你正在使用较旧的 Flink CDC 版本,尝试升级到最新版本,因为 Flink CDC 的新版本可能会修复一些元数据管理方面的问题,提供更好的兼容性。

    使用动态表配置:Flink CDC 支持使用动态表配置来动态注册表,而不是依赖静态配置。你可以在 Flink 应用程序中使用动态表 API 或者使用 Flink CDC 提供的 REST API 动态注册新表,以便在运行时识别和同步新增的表。

    检查日志和错误信息:仔细检查 Flink CDC 的日志文件,查看是否有其他相关的错误或异常信息,以了解具体的错误原因。日志文件中可能会提供更多的上下文信息,帮助你定位和解决问题。

    2023-08-14 19:17:58
    赞同 展开评论 打赏
  • 根据您的描述,这个问题可能是由于Flink CDC在恢复checkpoint时无法识别您试图插入的新表导致的。为了解决这个问题,您可以尝试以下步骤:

    1. 确保您已经正确配置了Flink CDC的Oracle连接器。这可能包括数据库URL、用户名、密码以及要捕获的事件类型(例如INSERT、UPDATE或DELETE)。
      image.png

    2. 在创建新表之前,确保您已经在Flink CDC的作业中显式地指定了该表。这可以通过修改connector.property配置来实现。

    例如,如果您想要捕获INSERT事件,可以这样做:

       connector.property-version=1
       connector.property.database-name=<your_db_name>
       connector.property.schema-name=<your_schema_name>
       connector.property.table-name=<your_new_table_name>
       connector.property.columns=<column1, column2, ...>
       connector.property.username=<your_username>
       connector.property.password=<<PASSWORD>>
       connector.property.url=<jdbc_connection_string>
       connector.property.driver=<driver_class_name>
       connector.property.validate-connection=true
       connector.property.blacklist=<exclude_event_types>
       connector.property.polling-interval=10
    
    1. 如果您仍然遇到问题,可以尝试重新启动Flink集群并重新提交您的作业。有时候,这可能会自动修复潜在的配置问题。

    image.png

    2023-08-14 15:49:16
    赞同 展开评论 打赏
  • 全栈JAVA领域创作者

    根据您提供的图片,您在使用Flink CDC采集Oracle数据库中的数据时,遇到了新增表无法识别的问题。这可能是由于以下原因导致的:

    数据库表结构发生变化:如果Oracle数据库中的表结构发生了变化,例如添加/删除/修改了列、修改了索引等,那么Flink CDC可能无法正确读取数据。您可以尝试重新启动Flink CDC,或者手动修改Flink CDC的配置文件,以便适应新的表结构。
    Flink CDC的配置不正确:如果Flink CDC的配置不正确,例如配置文件中的表名、列名、索引名等信息与实际情况不符,那么Flink CDC可能无法正确读取数据。您可以检查Flink CDC的配置文件,确保其中的信息与实际情况相符。
    新增表未被识别:如果Oracle数据库中的新表未被Flink CDC识别,那么Flink CDC就无法读取该表的数据。您可以尝试在Flink CDC的配置文件中,手动添加新表的信息,以便Flink CDC能够正确读取该表的数据。
    需要注意的是,不同的情况可能需要不同的解决方案,因此需要根据具体情况进行调整和优化。同时,您可以使用Flink CDC提供的TableFunction接口,自定义一个TableFunction实现类,对读取到的数据进行特殊过滤,以避免出现表字段变少的情况。

    2023-08-14 13:07:04
    赞同 展开评论 打赏
滑动查看更多

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

相关电子书

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

相关镜像