一、Flink Standalone 模式快速上手
1. 环境准备
-
操作系统:任意类 Unix 环境
- Linux / Mac OS X / Windows + Cygwin 都可以
-
JDK:按对应 Flink 版本要求准备(如 1.16+ 通常要求 JDK 8/11)
从 Flink 官网下载最新的稳定版本二进制包(例如 flink-1.18.0-bin-scala_2.12.tgz),然后解压:
tar -xzf flink-*.tgz
建议设置一个 FLINK_HOME 变量,后续使用更方便:
export FLINK_HOME=/path/flink-*
小贴士:可以把这行加到
~/.bashrc或~/.zshrc里,长期生效。
2. 启动本地 Standalone 集群
进入 Flink 安装目录:
cd /path/flink-*
启动集群:
./bin/start-cluster.sh
这条命令会在本机启动:
- 1 个 JobManager
- 至少 1 个 TaskManager
使用 ps 可以看到相关进程:
ps aux | grep flink
然后打开浏览器访问:
能看到 Flink Web Dashboard,就说明 Standalone 集群已经跑起来了。
如果需要停止集群,只需要一行命令:
./bin/stop-cluster.sh
二、安装 Flink CDC 独立包
Flink CDC 提供了一个单独打好的 tar 包,内部已经包含了:
- 启动脚本
- CDC 核心依赖
- 基础配置模板
1. 解压 flink-cdc 发行包
从 Flink CDC 的发布页下载 flink-cdc-*.tar.gz,例如:
tar -xzf flink-cdc-*.tar.gz
解压后会得到一个目录,比如 flink-cdc-3.0.0/,结构大致如下:
bin/:
包含flink-cdc.sh等脚本,用于提交 YAML Pipelinelib/:
放 CDC 核心 JAR 以及各类 connector JARconf/:
一些配置文件(如日志等)log/:
运行日志目录
你可以把这个目录理解为:一个“专门跑 CDC 的客户端工具”,通过它去向 Flink Standalone 集群提交作业。
2. 拷贝 Connector JAR 到 lib 目录
默认的 flink-cdc 只带了核心依赖,要连接不同的数据库,需要手动下载相应 connector JAR,放到 lib/ 目录下。
比如本文要演示的是:
MySQL → Apache Doris 实时同步
那我们至少需要:
flink-connector-mysql-cdc/flink-cdc内置的 MySQL source(具体以发行包说明为准)flink-sql-connector-doris或 Flink CDC Doris pipeline connector 对应的 JAR
操作方式大致是:
cd /path/flink-cdc-*
cp /path/to/flink-sql-connector-doris-*.jar lib/
cp /path/to/flink-connector-mysql-cdc-*.jar lib/
# 其他依赖按官方要求放到 lib/ 下
注意:
- Release 页面上只提供稳定版本的下载链接,
-SNAPSHOT之类的版本通常需要你自己从仓库对应分支打包。
三、用 YAML 配出一条 MySQL → Doris 的同步流水线
Flink CDC 3.x 开始,官方推荐用 YAML Pipeline 来描述一个 CDC 任务,配置完成后直接用 flink-cdc.sh 提交即可。
下面这一份示例 mysql-to-doris.yaml,实现的是:
把 MySQL 数据库
app_db下所有表,
同步到 Doris(库名同名,或由 Connector 端配置决定)。
################################################################################
# Description: Sync MySQL all tables to Doris
################################################################################
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
我们简单拆一下这份配置:
1. source:MySQL CDC 源配置
type: mysql
声明这是一个 MySQL 源(CDC Source)hostname/port/username/password
对应 MySQL 的连接信息tables: app_db.\.*
使用正则匹配app_db库下的所有表(\.*代表“任意表名”,注意 YAML 中要转义)server-id: 5400-5404
MySQL binlog 读取需要一个 client server-id,
这里给了一个 范围,方便并行 reader 使用不同 idserver-time-zone: UTC
控制时间戳字段解析的时区(避免时区错乱)
2. sink:Doris 下游配置
type: doris
使用 Doris sinkfenodes: 127.0.0.1:8030
Doris FE 的 HTTP 端口(通常是 8030)username/password
用于建表 / 写入的 Doris 账号
Doris 侧的具体参数(如导入模式、批次大小、表属性)
一般也通过这些配置项传入,详见官方 Doris connector 文档。
3. pipeline:任务级参数
name: Sync MySQL Database to Doris
这个名字会同时出现在 Flink Web UI 的 Job Name 上parallelism: 2
Flink Job 的默认并行度,可以根据机器和数据量调整
你可以基于这个模板,自行扩展:
- 只同步某个 schema / 某张表
- 对不同表做路由 / 分库分表映射
- 设置各种高级参数(比如
scan.startup.mode、debezium.*透传配置等)
四、向 Standalone 集群提交 Flink CDC Job
确保此时:
- Flink Standalone 集群已启动(
localhost:8081可访问) - flink-cdc 的
lib/里已经放好了必要的 connector JAR mysql-to-doris.yaml已经写好,并位于flink-cdc-*目录下或其他路径
在 flink-cdc-* 目录下执行:
cd /path/flink-cdc-*
./bin/flink-cdc.sh mysql-to-doris.yaml
如果一切正常,你会看到类似的返回:
Pipeline has been submitted to cluster.
Job ID: ae30f4580f1918bebf16752d4963dc54
Job Description: Sync MySQL Database to Doris
这说明:
- Flink CDC 已经读取 YAML,解析为一个 Flink Job Graph
- Job Graph 被提交到了你前面启动的 Standalone 集群
Job ID是在 Flink 集群里的唯一标识Job Description对应我们在 pipeline 中配置的name
五、在 Flink Web UI 中观察任务运行情况
打开浏览器访问:
在 “Jobs” 页面你应该能看到一条正在运行的任务:
-
Job Name:
Sync MySQL Database to Doris -
Status:RUNNING
-
拓扑图中能看到:
- Source:MySQL CDC Source
- (中间可能还有一些内部算子)
- Sink:Doris Sink
点击 Job 详情,可以看到:
- 各个算子的 吞吐量(Records/s)
- Checkpoint 状态 & 周期
- Task 的并行度、延迟等信息
此时如果你在 MySQL 里对 app_db 下的表做增删改,
就能在 Doris 对应的表中看到实时同步的效果——
整个链路就是一个完整的 实时 ELT / CDC 同步任务。
六、一些实践小建议
最后补几条落地时常见的注意点,方便你直接往生产环境靠:
-
Server ID 范围不要冲突
- 如果一个 MySQL 实例上会跑多个 CDC 任务,切记 server-id 范围不能重叠。
-
确认 MySQL / Doris 网络互通 & 账号权限
- MySQL 账号要具备 REPLICATION 相关权限
- Doris 账号需要拥有目标库/表的写权限
-
时区统一
- 使用
server-time-zone显式指定,避免 DST 或多时区杂糅导致时间错乱。
- 使用
-
Checkpoint 配置
- Standalone 模式下,建议在 Flink 集群级或作业内配置合理的 checkpoint 间隔、超时、重试次数。
-
资源规划
-
如果有多个 CDC Pipeline,可以:
- 复用同一个 Standalone 集群跑多个 Job
- 或按业务/租户维度拆分多个集群,避免互相影响。
-
七、总结
这篇内容可以一句话概括为:
在 Flink Standalone 集群 上
通过 Flink CDC 独立发行包 + YAML Pipeline
快速跑起一个 MySQL → Doris 的实时同步 Job。
优势很明显:
- 部署模式简单:一台机器就能跑完整集群;
- 运维观感清晰:任务统一在 Web UI 中可视化;
- 使用成本低:全程只需要写 YAML,不用写 Java/Scala 代码。
1098

被折叠的 条评论
为什么被折叠?



