flink 1.18 cdc 2.4.2 读 mysql binlog 写 kafka jar版本依赖

一.背景

        在企业级数据架构中,实时数据同步是打通 “业务操作层” 与 “数据应用层” 的关键链路,而 MySQL 作为主流的关系型数据库,其产生的业务数据(如交易记录、用户操作、订单状态变更等)是实时数据处理的核心来源。Apache Flink CDC(Change Data Capture)凭借其 “无侵入式采集、低延迟同步、全量 + 增量一体化” 的特性,成为 MySQL 数据实时捕获的优选方案,能够精准解析 MySQL binlog 日志,将数据变更(插入、更新、删除)实时同步至下游系统,为实时风控、数据仓库增量同步、实时报表等场景提供数据支撑。

        Kafka 作为高性能的分布式消息队列,具备高吞吐、高可用、可持久化等优势,是实时数据链路中的核心 “数据总线”,能够承接 Flink CDC 同步的海量变更数据,并为下游多个消费端(如 Flink 流处理、Spark 批处理、实时分析引擎)提供高并发的数据分发服务。因此,“Flink CDC 读取 MySQL binlog 并写入 Kafka” 成为企业实时数据同步的经典架构,广泛应用于金融、电商、物流等行业的核心业务场景。

        然而,在该架构落地过程中,版本依赖适配是开发者面临的核心痛点之一:

  1. 组件版本兼容性复杂:Flink CDC 与 Flink 内核、MySQL 驱动、Kafka 客户端、序列化框架(如 Avro、JSON)等组件存在严格的版本依赖关系,尤其是 Flink CDC 2.4.2 作为稳定版,对 Flink 主版本(如 1.17.x、1.18.x)、Kafka 客户端版本(如 2.8.x、3.0+)有明确适配要求,版本不匹配会直接导致 binlog 解析失败、Kafka 写入超时、序列化异常等问题;
  2. 依赖冲突频发:不同组件的依赖包(如 guavanettyjackson 等)可能存在版本差异,若手动管理依赖,易出现类加载冲突、方法不存在等运行时异常,尤其在打包部署为 Jar 包时,需处理繁琐的依赖排除与引入逻辑;
  3. 生产环境稳定性要求高:企业级应用对数据同步的可靠性、一致性要求极高,依赖版本的不规范可能导致数据丢失、重复同步、作业频繁重启等问题,严重影响业务连续性;
  4. 开发效率低下:开发者需花费大量时间查阅官方文档、验证版本组合、排查依赖冲突,尤其是新手用户易因依赖配置错误导致项目无法运行,阻碍开发进度。

        因此,明确 Flink CDC 2.4.2 读取 MySQL binlog 并写入 Kafka 场景下的标准化 Jar 版本依赖,是保障数据同步链路稳定、降低开发与运维成本的关键前提。合理的依赖配置不仅能避免版本兼容问题,还能确保 binlog 解析的准确性、Kafka 写入的高效性,为后续作业部署、扩容、维护提供可靠基础,对企业实时数据架构的落地与稳定运行具有重要的工程实践价值。

二.版本依赖

antlr4-runtime-4.8.jar
chdfs_hadoop_plugin_network-3.1.jar
commons-codec-1.4.jar
commons-lang-2.6.jar
commons-lang3-3.12.0.jar
commons-pool2-2.10.0.jar
connect-api-3.2.0.jar*
connect-json-3.2.0.jar*
curator-client-2.12.0.jar
curator-framework-2.12.0.jar
curator-recipes-2.12.0.jar
debezium-api-1.9.7.Final.jar
debezium-core-1.9.7.Final.jar
debezium-ddl-parser-1.9.7.Final.jar
fastjson-1.2.61.jar
flink-cep-1.18.1.jar
flink-connector-debezium-2.4.2.jar
flink-connector-files-1.18.1.jar
flink-connector-kafka-3.0.2-1.18.jar
flink-connector-mysql-cdc-2.4.2.jar
flink-csv-1.18.1.jar
flink-dep-debezium-connector-mysql-1.9.7.Final.jar(由debezium-connector-mysql-1.9.7.Final.jar改名)
flink-dist_2.12-1.18.1.jar
flink-json-1.18.1.jar
flink-metrics-prometheus-1.16.3.jar
flink-scala_2.12-1.18.1.jar
flink-shaded-guava-30.1.1-jre-15.0.jar
flink-shaded-zookeeper-3-3.8.3-18.0.jar
flink-table-api-java-uber-1.18.1.jar
flink-table-planner-loader-1.18.1.jar
flink-table-runtime-1.18.1.jar
gson-2.8.6.jar
guava-31.1-jre.jar
hadoop-client-api-3.3.4.jar
hadoop-client-runtime-3.3.4.jar
hadoop-cos-3.1.0-8.2.4.jar
HikariCP-4.0.3.jar
httpclient-4.5.6.jar
httpcore-4.4.16.jar
jackson-annotations-2.12.7.jar
jackson-core-2.12.7.jar*
jackson-databind-2.12.7.2.jar
jedis-3.7.0.jar
joda-time-2.12.5.jar
kafka-clients-2.4.1.jar
log4j-1.2-api-2.17.1.jar
log4j-api-2.17.1.jar
log4j-core-2.17.1.jar
log4j-slf4j-impl-2.17.1.jar
mysql-binlog-connector-java-0.27.2.jar
mysql-connector-j-8.0.33.jar
zookeeper-3.4.14.jar
zstd-jni-1.5.2-4.jar

        上述版本经过调测可以正常运行

<think>好的,我现在需要帮用户解决如何配置Flink CDC 3.0.0和Flink 1.18,使用YAML文件将MySQL数据同步到Doris,并设置检查点存储到硬盘的问题。首先,我得回忆一下Flink CDC的基本配置步骤,以及检查点的相关设置。 用户提到的是Flink CDC 3.0.0和Flink 1.18,我需要确认这两个版本的兼容性。Flink CDC 3.0通常需要与特定版本Flink配合使用,但根据用户的信息,应该是可行的。接下来,用户需要从MySQL同步到Doris,所以需要配置MySQL作为源,Doris作为目标。 首先,YAML配置文件的结构。Flink作业的YAML通常包括作业管理器、任务管理器的配置,检查点设置,源和接收器的连接信息。用户需要设置检查点存储到硬盘,这涉及到state.checkpoints.dir和state.savepoints.dir的配置,可能需要使用文件系统路径,比如file:///checkpoints。 然后,检查点的配置部分,包括间隔时间、超时时间、最小间隔等参数。这些参数影响作业的容错能力,用户需要根据数据量和处理速度进行调整。例如,checkpoint.interval: 60000表示每分钟触发一次检查点。 接下来是MySQLCDC源配置。Flink CDC 3.0的MySQL连接器需要使用正确的连接参数,包括数据库地址、端口、用户名、密码、数据库名和表名。还需要指定scan.startup.mode,比如initial表示首次启动时取全量数据,之后增量。 Doris作为接收器,需要配置JDBC连接或者Doris的sink连接器。可能需要使用Doris的负载均衡地址,设置JDBC URL、表名、用户名和密码,以及批量提交的参数,如sink.batch.size和sink.batch.interval。 依赖方面,用户需要确保Flink CDC MySQL连接器和Doris连接器的JAR包在lib目录下。需要检查Maven仓库中的对应版本,比如flink-sql-connector-mysql-cdc和doris-flink-connector的版本是否兼容Flink 1.18。 然后,用户需要提交作业,使用flink run命令指定YAML文件和主类。可能需要处理依赖冲突,尤其是JSON相关的包,比如排除Flink自带的Jackson依赖,使用Doris连接器所需的版本。 最后,验证配置是否正确,检查点是否成功存储到硬盘,数据是否正常同步。可能需要查看Flink的日志,确认没有错误,检查点目录是否有文件生成。 可能遇到的问题包括依赖冲突、网络连接问题、检查点配置错误等。需要提醒用户注意检查这些方面,并提供常见问题的解决方法,比如日志分析,依赖检查等。 总结步骤:准备环境,配置YAML文件,添加依赖,提交作业,验证结果。需要确保每个步骤的配置项正确无误,特别是检查点路径和连接参数。</think>以下是为您整理的Flink CDC 3.0.0 + Flink 1.18 实现MySQL到Doris实时同步的完整配置方案: ### 一、YAML配置文件模板(flink-cdc-doris.yaml) ```yaml # Flink作业基础配置 execution: checkpointing: interval: 60000 # 检查点间隔60秒 timeout: 300000 # 检查点超时5分钟 min-pause-between-checkpoints: 30000 # 最小间隔30秒 mode: EXACTLY_ONCE # 精确一次语义 # 检查点存储配置(核心配置) state: backend: filesystem checkpoint-storage: filesystem savepoints.dir: file:///opt/flink/checkpoints checkpoints.dir: file:///opt/flink/checkpoints # MySQL CDC Source配置 source: type: mysql-cdc hostname: 192.168.1.100 port: 3306 username: flink_user password: flink_pwd database-names: order_db table-names: order_table server-id: 5400-5404 # 需保证集群内唯一 server-time-zone: UTC scan.startup.mode: initial # 首次全量+增量 # Doris Sink配置 sink: type: doris fenodes: doris-fe:8030 username: doris_user password: doris_pwd database: dw_db table: dw_order sink.label-prefix: doris_label_${database}_${table} sink.batch.size: 1000 sink.batch.interval: 5000 sink.properties.format: json sink.properties.read_json_by_line: true # 并行度配置 parallelism.default: 2 ``` ### 二、环境准备步骤 1. **依赖包准备**: - 下载以下JAR包到Flink的`lib`目录: - `flink-sql-connector-mysql-cdc-3.0.0.jar` - `doris-flink-connector-1.2.0_flink-1.18.jar` - 需排除冲突的JSON依赖: ```xml <exclusion> <groupId>org.apache.flink</groupId> <artifactId>flink-json</artifactId> </exclusion> ``` 2. **检查点目录权限**: ```bash mkdir -p /opt/flink/checkpoints chmod 777 /opt/flink/checkpoints ``` ### 三、作业提交命令 ```bash ./bin/flink run \ -c org.apache.flink.streaming.api.environment.StreamExecutionEnvironment \ -Dyaml.config.file=flink-cdc-doris.yaml \ ./examples/streaming/SocketWindowWordCount.jar ``` ### 四、关键配置说明 1. **检查点存储**: - `state.backend=filesystem` 声明使用文件系统存储 - `checkpoints.dir`指定本地/HDFS路径,生产环境建议使用HDFS路径:`hdfs://namenode:8020/checkpoints` - 检查点保留策略可通过`execution.checkpointing.externalized-checkpoint-retention`配置[^1] 2. **Doris入优化**: ```yaml sink.max-retries: 3 sink.buffer-size: 8192 sink.enable-2pc: true # 开启两阶段提交 ``` ### 五、验证检查点生效 1. 查看检查点目录: ```bash ls /opt/flink/checkpoints ``` 2. 通过Flink Web UI检查检查点状态: ![检查点状态示意图]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路边草随风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值