【flink-cdc】flink-cdc 3版本debug启动pipeline任务,mysql-doris

官方文档
github仓库地址
Flink cdc debug调试动态变更表结构

经过测试使用,在启动任务配置Modify classpath添加jar的方式,容易出错classNotFoundException等等。
![[image-20250103094408176.png]]

一、build project

flink-cdc版本:3.2.1

mvn clean package "-Dmaven.test.skip=true" "-Drat.skip=true" "-Dcheckstyle.skip"
# 当然install 也可以
mvn clean install "-Dmaven.test.skip=true" "-Drat.skip=true" "-Dcheckstyle.skip"

二、create module for test

在flink-cdc项目中新建一个module flink-cdc-test

将需要的flink cdc的connector依赖添加至pom


    <properties>        
        <flink.version>1.18.1</flink.version>  
        <maven.compiler.source>8</maven.compiler.source>  
        <maven.compiler.target>8</maven.compiler.target>  
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
    </properties>  
  
    <dependencies>        
        <dependency>  
            <groupId>org.apache.flink</groupId>  
            <artifactId>flink-table-common</artifactId>  
            <version>${flink.version}</version>  
            <scope>test</scope>  
        </dependency>  
  
        <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-table-runtime -->  
        <dependency>  
            <groupId>org.apache.flink</groupId>  
            <artifactId>flink-table-runtime</artifactId>  
            <version>${flink.version}</version>  
            <scope>test</scope>  
        </dependency>  
  
        <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-table-api-java-bridge -->  
        <dependency>  
            <groupId>org.apache.flink</groupId>  
            <artifactId>flink-table-api-java-bridge</artifactId>  
            <version>${flink.version}</version>  
            <scope>test</scope>  
        </dependency>  
  
        <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-core -->  
        <dependency>  
            <groupId>org.apache.flink</groupId>  
            <artifactId>flink-core</artifactId>  
            <version>${flink.version}</version>  
            <scope>test</scope>  
        </dependency>  
  
        <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-streaming-java -->  
        <dependency>  
            <groupId>org.apache.flink</groupId>  
            <artifactId>flink-streaming-java</artifactId>  
            <version>1.18.1</version>  
            <scope>test</scope>  
        </dependency>  
  
        <dependency>            
            <groupId>org.apache.flink</groupId>  
            <artifactId>flink-clients</artifactId>  
            <version>1.18.1</version>  
            <scope>test</scope>  
        </dependency>  
  
        <dependency>            
        <groupId>org.apache.flink</groupId>  
            <artifactId>flink-cdc-cli</artifactId>  
            <version>${project.version}</version>  
            <scope>test</scope>  
        </dependency>  
  
        <dependency>            
            <groupId>org.apache.flink</groupId>  
            <artifactId>flink-cdc-pipeline-connector-mysql</artifactId>  
            <version>${project.version}</version>  
            <scope>test</scope>  
        </dependency>  
  
        <dependency>            
            <groupId>org.apache.flink</groupId>  
            <artifactId>flink-cdc-pipeline-connector-kafka</artifactId>  
            <version>${project.version}</version>  
            <scope>test</scope>  
        </dependency>  
  
        <dependency>            
            <groupId>org.apache.flink</groupId>  
            <artifactId>flink-cdc-pipeline-connector-doris</artifactId>  
            <version>${project.version}</version>  
            <scope>test</scope>  
        </dependency>  
  
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->  
        <dependency>  
            <groupId>mysql</groupId>  
            <artifactId>mysql-connector-java</artifactId>  
            <version>8.0.27</version>  
        </dependency>  
    
    </dependencies>  

create pipeline yaml

创建flink cdc pipeline的配置文件mysql-to-doris.yaml

注意:drois的端口号不是9030,而是8030

source:  
  type: mysql  
  name: MySQL-Source  
  hostname: 192.168.100.123 
  port: 3306  
  username: root  
  password: 123456  
  tables: test.student  
  server-id: 5401-5404  
  server-time-zone: UTC  
  
sink:  
  type: doris  
  name: Doris-Sink  
  fenodes: 192.168.101:8030
  username: root
  password: 123456  
  
  
pipeline:  
  name: MySQL to Doris Schema Evolution  
  parallelism: 1

create pipeline start entrypoint

测试类,需在src/test目录下:

import org.apache.flink.cdc.cli.CliFrontend;  
import org.junit.jupiter.api.Test;  
  
import java.util.ArrayList;  
import java.util.List;  
  
public class MysqlPipelineTest {  
  
    @Test  
    public void testMysql() throws Exception {  
        List<String> args= new ArrayList<>();  
        args.add("D:\\flink-cdc-release-3.2.1\\flink-cdc-test\\pipelines\\mysql-to-doris.yaml");  
        args.add("--use-mini-cluster");  
        args.add("true");  
        CliFrontend.main(args.toArray(new String[0]));  
    }  
}

修改启动配置添加FLINK_HOME环境变量:
在这里插入图片描述
启动任务:
启动

<think>好的,我现在需要帮助用户解决在Flink CDC 3.0.0中通过YAML配置实现从MySQLDoris的数据同步,并设置checkpoint的问题。首先,我得回忆一下Flink CDC的相关知识,特别是版本3.0.0的特性,以及如何配置YAML文件。 用户提到了checkpoint的设置,所以必须确保在YAML中包含检查点的配置部分。检查点对于保证数据一致性和容错非常重要,所以参数如间隔时间、超时时间和最大并发检查点都需要正确设置。我需要查阅Flink的官方文档或者之前的经验,确认这些参数的正确写法。 接下来是数据源(MySQL)和数据接收端(Doris)的连接器配置。对于MySQL CDC,需要指定主机名、端口、数据库、表以及用户名和密码。而Doris作为sink,可能需要JDBC连接信息,或者使用Doris自己的连接器,比如Doris Connector,需要配置FE节点地址、数据库、表以及写入参数,比如批量大小和间隔。 用户提供的引用中,引用[1]提到了提交任务到Standalone集群的命令,引用[2]给出了PostgreSQL到Doris的架构和配置示例,这可能对结构有帮助。引用[3]中的SQL示例展示了如何执行同步,但用户需要的是YAML配置,所以可能需要将SQL转换为YAML格式的配置。 另外,需要确保Flink CDC 3.0.0支持MySQLDoris的连接器。可能需要添加相应的依赖,比如flink-sql-connector-mysql-cdcDoris的连接器jar包。这部分用户可能已经在环境准备中完成,但在配置文件中需要正确引用这些连接器。 然后,考虑如何将源和汇的信息整合到YAML文件中。Flink作业的YAML配置通常包括执行参数、源表、汇表定义以及SQL查询。检查点配置可能在execution部分下设置。需要确保YAML的语法正确,比如缩进和键值对的格式。 可能还需要考虑并行度、状态后端等参数的设置,但用户主要关注checkpoint,所以重点放在那里。此外,确认是否需要启用检查点,默认情况下可能未启用,需要显式配置。 最后,测试配置是否有效,用户可能需要通过flink-cdc.sh脚本来提交任务,如引用[1]中的示例。如果有错误,可能需要检查日志中的报错信息,比如连接问题或配置错误。</think>以下是为您整理的Flink CDC 3.0.0 MySQLDoris数据同步的YAML配置示例,包含checkpoint配置说明: ```yaml # conf/mysql-to-doris.yaml execution: checkpointing: interval: 60s # 每60秒触发一次checkpoint timeout: 3min # checkpoint超时时间 max-concurrent-checkpoints: 1 # 最大并发checkpoint数 mode: EXACTLY_ONCE # 精确一次语义 source: type: mysql-cdc hostname: 192.168.1.100 port: 3306 username: root password: 123456 database-names: order_db table-names: order_db.orders,order_db.users # 需同步的表 server-id: 5400-5404 # 建议设置唯一范围 sink: type: doris fenodes: 192.168.1.200:8030 username: doris password: doris123 database: dw_db table: orders_sink sink.batch.size: 1000 # 批量写入参数 sink.batch.interval: 10s pipeline: name: mysql-doris-sync parallelism: 2 # 作业并行度 # 可选状态后端配置 # state.backend: filesystem # state.checkpoints.dir: hdfs:///flink/checkpoints ``` 关键配置说明: 1. **Checkpoint配置** - `interval: 60s`:建议设置为业务可接受延迟的1/3到1/2 - `EXACTLY_ONCE`模式可保证端到端一致性[^2] - 建议配置持久化存储作为状态后端(如HDFS) 2. **MySQL CDC最佳实践** - 通过`server-id`避免与MySQL主从复制冲突 - 使用白名单方式指定同步表可提升性能 - 增量快照特性自动处理大表同步[^3] 3. **Doris Sink优化** - 调整`batch.size`和`batch.interval`平衡吞吐与延迟 - 建议在Doris中预先创建与源表结构一致的目标表 提交任务命令: ```bash bin/flink-cdc.sh conf/mysql-to-doris.yaml ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值