Flink CDC 完整上手指南:一条 YAML 搭出 MySQL 到 Doris 的实时数据同步作业
【免费下载链接】flink-cdcFlink CDC is a streaming data integration tool项目地址: https://gitcode.com/GitHub_Trending/flin/flink-cdc
Flink CDC 是一款流式数据集成工具,由 Ververica 贡献给 Apache Flink 社区,现归属 Apache 名下,仓库名为 apache/flink-cdc。它用一份 YAML 文件描述完整的数据管道,把源端到目的端的实时数据同步一次讲清。如果你想把 MySQL、Oracle 这类数据库持续同步到 Kafka、Doris 这类目标系统,又不想逐行写 ETL 代码,看这篇就够了。
🎯 什么场景值得上 Flink CDC
自己写同步程序,通常会撞上三个问题:
- 全量与增量切换麻烦。传统做法先跑全量脚本,再切增量,衔接逻辑要自己保证不丢数、不重数。Flink CDC 把全量快照和增量变更(binlog 这类增量日志)串成一条连续管道,自动从快照推进到增量。
- 不用写 ETL 代码。管道用 YAML 描述即可运行,数据转换也直接写在配置里,省掉单独开发转换逻辑的环节。
- 表结构变更自动跟随。业务库里加列、建表是常事,Flink CDC 内置 schema 演变(schema evolution)能力,下游表结构会随上游自动变更。
上面任意一条戳中你,就值得花时间把它搭起来。
同步链路一张图说清
整条链路很短:
MySQL / Oracle 等(Source,读取端) │ 全量数据 + 变更事件 ▼ Flink CDC 管道(跑在 Flink 上) │ YAML 描述:源、目标、路由、转换 ▼ Kafka / Doris 等(Sink,写入端)Source 负责读,Sink 负责写,YAML 是中间那份契约。Flink CDC 以 Java 为主要开发语言,底层依托 Flink 的流处理能力,保证管道的吞吐与故障恢复。
下面这张 Flink CDC 实时数据同步架构图,展示了它作为中枢连接大量数据源与各类目标系统的形态:
📋 环境就绪检查清单
动手前逐项核对,缺任何一项作业都跑不起来:
| 检查项 | 要求 |
|---|---|
| JDK | 版本 8 或更高 |
| Flink | 已装好并设置FLINK_HOME环境变量 |
| 仓库 | 把 flink-cdc 仓库克隆到本地 |
| 连接器 JAR | 源端、目标端对应的连接器 jar 已放入 Flink 的lib/目录 |
克隆命令:
git clone https://gitcode.com/GitHub_Trending/flin/flink-cdc关于 JAR 有个关键点:Flink 从lib/目录加载连接器依赖。挑出你要用的数据库对应的连接器 JAR,丢进lib/,Flink 才认得这些库。
🛠️ 实战:用 Flink CDC YAML 配置搭 MySQL 同步 Doris 管道
以 MySQL 到 Doris 为例。
1. 写 YAML。新建mysql-to-doris.yaml,source 段描述源,sink 段描述目标:
source: type: mysql hostname: localhost port: 3306 username: root password: "your_password" tables: - db_name: app_db tables: "*" sink: type: doris fenodes: 127.0.0.1:8030 username: root password: ""tables字段支持整库或按表选择;sink 指向 Doris,fenodes填前端节点地址。
2. 提交作业。在 flink-cdc 发行包的bin目录中找到flink-cdc.sh,用 YAML 路径作为参数提交:
bin/flink-cdc.sh /path/to/your/mysql-to-doris.yaml下图左半是 YAML 配置,右半是提交后作业在 Flink Web UI 中运行的样子:
跑起来之后:确认成功,再避开 3 个坑
怎么确认同步成功:
- 看 Flink Web UI,作业状态应为 RUNNING,且没有反复重启。
- 核对目标端数据。到 Doris 里查同步后的表,全量行应当已就位,随后写入的变更也能跟进。
下图是一次 MySQL 到 Doris 的 Flink CDC 实时数据同步作业在 Web UI 中正常运行的效果:
容易踩的 3 个坑:
- JAR 没放对位置。提交后很快失败、日志报找不到类,先确认源端和目标端连接器 JAR 都在 Flink 的
lib/目录里。 - 版本之间的配置差异。Flink CDC 的配置字段随版本会有变化,发现某个字段不生效时,对照你安装的版本去看对应文档。
- 端点不可达。源数据库与目标系统必须对 Flink 集群网络可达、凭据正确,保证依赖的库和系统都已正确配置且可访问,否则作业会报错或卡住。
收尾
到这里,一条 YAML 就把同步管道立起来了:数据在流动,结构变更也在自动跟随。下一步可以往两个方向走——用transform在管道里做列级转换与过滤,再配合多条 route 规则,把分片表合并、多源路由到同一目标这类复杂需求也收进同一份 YAML 里。
【免费下载链接】flink-cdcFlink CDC is a streaming data integration tool项目地址: https://gitcode.com/GitHub_Trending/flin/flink-cdc
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考