Flink CDC 安装与配置教程:三步跑通 MySQL 到 Doris 的实时同步管道
【免费下载链接】flink-cdcFlink CDC is a streaming data integration tool项目地址: https://gitcode.com/GitHub_Trending/flin/flink-cdc
Flink CDC 是构建在 Apache Flink 之上、用 YAML 描述全库同步的流式数据集成工具。这份 Flink CDC 安装与配置指南带你三步跑通 MySQL 到 Doris 的同步链路。
先搞清楚 Flink CDC 干什么
一句话:它把数据库的变更捕获成数据流,再实时搬到目标端,支持整库同步、分库分表合并、表结构自动演进(schema evolution)和数据处理。底层吃的是 Apache Flink 的流处理能力,你只需要写一份 YAML 就能定义整条管道。
它对外提供三层 API,日常做同步主要用第一层:
- YAML API(Pipeline API):零代码,写 YAML、用 CLI 提交,本文就讲它。
- SQL API:在 Flink SQL 里用 DDL 定义 CDC 源表。
- DataStream API:以 Maven 依赖方式写 Java 程序,适合深度定制。
开始前:环境清单
动手前把下面几样备齐,能省下大量排查时间。
| 项目 | 要求 |
|---|---|
| JDK | 11 或更高(3.6.0 起基于 JDK 11 构建,用java -version确认) |
| Apache Flink | 1.20.x 或 2.2.x,并设置好FLINK_HOME |
| 源端 / 目标端 | 一个可访问的 MySQL 源和一个 Doris 目标,网络互通 |
| Flink CDC | 官方二进制发行包flink-cdc-x.x.x-bin.tar.gz |
拿到二进制包后解压,会得到一个flink-cdc-x.x.x目录,里面是bin、lib、log、conf四块。后面提交作业用的 CLI 就在bin里。
💡 想快速搭一套含 MySQL、Doris 的沙箱环境,可以直接用仓库自带的 tools/cdcup/ 工具:
./cdcup.sh init生成配置,./cdcup.sh up起容器,省去手动装库。
第一步:放置连接器 JAR
Flink CDC 本身不打包具体连接器,需要把"源"和"汇"两个 jar 放进去:
- 下载源端连接器
flink-cdc-pipeline-connector-mysql和汇端连接器flink-cdc-pipeline-connector-doris(对应你实际用的源与目标)。 - 把这两个 jar 放进Flink CDC Home 的
lib目录——注意是 CDC 的lib,不是 Flink 的lib,放错地方作业起不来。 - 因为新版不再把 MySQL 驱动打进连接器,还需额外放一份 MySQL 驱动 jar 到 Flink 的
lib,或提交时用--jar带上。
更多连接器的完整清单可查 docs/content/docs/connectors/pipeline-connectors/overview.md。
第二步:写一条同步管道 YAML
新建一个mysql-to-doris.yaml,描述"从哪来、到哪去"。下面是最小可用版本:
source: type: mysql hostname: localhost port: 3306 username: root password: 123456 tables: app_db.\.* server-id: 5400-5404 server-time-zone: UTC sink: type: doris fenodes: 127.0.0.1:8030 username: root password: "" pipeline: name: Sync MySQL Database to Doris parallelism: 2几个容易踩的点:
tables: app_db.\.*用正则匹配app_db下所有表,实现整库同步;只想同步某几张表就写具体表名。server-id给一个区间(如5400-5404),要覆盖parallelism的并发数。- Doris 端不支持自动建库,提前在目标建好对应数据库,否则会写入失败。
第三步:提交作业
切到 Flink CDC 解压目录,用 CLI 提交:
bash bin/flink-cdc.sh mysql-to-doris.yaml提交成功的返回类似:
Pipeline has been submitted to cluster. Job ID: ae30f4580f1918bebf16752d4963dc54 Job Description: Sync MySQL Database to Doris拿到 Job ID 就说明作业已下发到集群。
验证同步是否成功
别只盯着提交回执,两边都要看:
- 打开 Flink Web UI(默认
http://localhost:8081),确认名为Sync MySQL Database to Doris的作业处于RUNNING。 - 打开 Doris Web UI(默认
http://localhost:8030,账号root),确认表已自动创建、数据已落入。
想进一步确认"变更"也在跟着走,可以在 MySQL 里插入、更新、删一行,再回 Doris 刷新,数据应实时一致。完整演练步骤见 docs/content/docs/get-started/quickstart-for-2.2/mysql-to-doris.md。
避坑清单
- JAR 放错目录:连接器 jar 进 CDC 的
lib,MySQL 驱动进 Flink 的lib,二者别混。 - Doris 没预建库:目标库要手动先建好。
- 版本错配:JDK、Flink、Flink CDC 三者版本要对得上,升级前先对一遍。
- 配置项随版本变:不同版本参数可能有出入,以最新官方文档为准,入门可看 docs/content/docs/get-started/introduction.md。
- 想从源码构建:克隆仓库
git clone https://gitcode.com/GitHub_Trending/flin/flink-cdc后按构建流程编译(SNAPSHOT 包需要自己构建)。
进阶方向
跑通第一条链路后,可以在同一份 YAML 里继续加料:
- route:把源表路由到不同目标表名,实现库/表改名与分片表合并。
- transform:投影、过滤、函数转换,数据在管道里就地加工。
- schema.change.behavior: evolve:开启表结构自动演进,源端加列目标端跟着变。
需要动手时直接翻 tools/cdcup/ 的示例和 docs/content/docs/core-concept/ 下的概念文档,照着抄改最快。
【免费下载链接】flink-cdcFlink CDC is a streaming data integration tool项目地址: https://gitcode.com/GitHub_Trending/flin/flink-cdc
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考