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

Flink CDC中mysql cdc 2.4 版本支持仅 全量阶段不拉取增量的逻辑吗?

Flink CDC中mysql cdc 2.4 版本支持仅 全量阶段不拉取增量的逻辑吗?

展开
收起
真的很搞笑 2023-12-04 08:09:40 42 0
4 条回答
写回答
取消 提交回答
  • wait 3.0 ,此回答整理自钉群“Flink CDC 社区”

    2023-12-05 09:05:30
    赞同 展开评论 打赏
  • 在Flink CDC的MySQL CDC库中,2.4版本并不原生支持仅进行全量阶段而不拉取增量数据的逻辑。默认情况下,CDC库会同时获取全量和增量数据,并将它们一起发送给Flink应用程序进行处理。

    然而,您可以通过编写自定义的Flink CDC Source Function来实现只拉取全量数据的逻辑。具体步骤如下:

    1. 创建一个类,继承自io.debezium.connector.mysql.MySqlConnector

    2. 重写createAndStartEventReader()方法,并返回一个自定义的BinlogReader对象。

    3. 在自定义的BinlogReader类中,重写doStart()方法,将其中的逻辑改为只拉取全量数据,并忽略增量数据。

    以下是一个简单的示例代码,演示了如何自定义Flink CDC的MySQL CDC源函数,并仅拉取全量数据:

    import io.debezium.config.Configuration;
    import io.debezium.connector.mysql.MySqlConnector;
    import io.debezium.embedded.EmbeddedEngine;
    import io.debezium.relational.history.FileDatabaseHistory;
    
    public class CustomMySqlConnector extends MySqlConnector {
    
        @Override
        protected BinlogReader createAndStartEventReader() {
            return new CustomBinlogReader();
        }
    
        private static class CustomBinlogReader extends BinlogReader {
    
            @Override
            protected void doStart() throws Exception {
                // 只拉取全量数据,忽略增量数据
                super.doStart();
    
                // 将增量数据的消费位置设置为结束位置,以避免处理增量数据
                getOffsets().setIncrementalOffset(getOffsets().getEndOffset());
            }
        }
    
    }
    

    然后,在Flink应用程序中使用自定义的MySQL CDC源函数:

    MySqlSource.fromCustomConnector()
      .hostname(...)
      .port(...)
      .database(...)
      // 设置其他必要的配置项
      .debeziumProperties(...)
      .startFromEarliest()
      .deserializer(...)
      .build();
    

    值得注意的是,这只是一个示例代码来演示如何自定义Flink CDC的MySQL CDC源函数,并仅拉取全量数据。具体实现可能需要根据您的业务需求和环境进行修改和调整。

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

    是的,Flink CDC中的MySQL CDC 2.4版本支持仅全量阶段不拉取增量的逻辑。在MySQL CDC 2.4中,可以通过配置include.schema.changes参数来控制是否拉取增量变更。如果将该参数设置为false,则仅在全量阶段拉取数据,而不拉取增量变更。

    2023-12-04 13:57:33
    赞同 展开评论 打赏
  • Flink CDC 的 MySQL CDC 2.4 版本确实支持仅全量阶段不拉取增量的逻辑。这个版本的增量快照框架新增了自动关闭全量阶段结束后的空闲 Reader 功能,可以在生产环境中节省资源。

    2023-12-04 11:40:17
    赞同 展开评论 打赏

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

相关产品

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

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