一、为什么是 Flink CDC数据同步的老三样方案问题定时 sqoop 全量抽取T1时效性差大表慢Canal Kafka 手写消费链路长要维护 MQ代码多双写业务代码同时写库和数仓侵入业务极易数据不一致Flink CDC 的核心优势一个引擎吃下捕获 计算 写出不需要中间 MQ。MySQL(Binlog) ──▶ Flink CDC Source ──▶ 清洗/打宽 ──▶ Sink(StarRocks/Doris/Hudi) (Exactly-once)底层用的是 Debezium 捕获 Binlog但 Flink 把它封装成标准的表 API/SQL你写 SQL 就行。二、架构与组件┌──────────┐ Binlog ┌──────────────────────────────┐ ┌──────────────┐ │ MySQL │ ──────────▶ │ Flink 作业 │ ─▶│ StarRocks │ │ (开启binlog)│ │ Source(CDC) → Transform → Sink│ │ (数仓) │ └──────────┘ └──────────────────────────────┘ └──────────────┘ │ Checkpoint (Exactly-once)关键角色Sourcemysql-cdcconnector基于 Debezium捕获 INSERT/UPDATE/DELETE 三种变更Transform普通 Flink SQL做字段映射、过滤、打宽SinkStarRocks/Doris/Hudi 的 connector支持 upsert三、环境准备3.1 MySQL 开启 Binlog# my.cnf server-id 1 log-bin mysql-bin binlog_format ROW # 必须 ROWCDC 才能解析行级变更 binlog_row_image FULL expire_logs_days 7并给 Flink 用的账号授权CREATE USER flink_cdc% IDENTIFIED BY cdc_pass; GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO flink_cdc%; FLUSH PRIVILEGES;3.2 下载 connector把这两个 jar 放到 Flink 的lib/目录版本对齐 Flink 1.18flink-sql-connector-mysql-cdc-3.1.0.jar flink-connector-starrocks-1.2.9.jar四、实战MySQL → StarRocks 实时同步4.1 建 MySQL 源表-- Flink SQL CREATE TABLE mysql_orders ( id BIGINT, user_id BIGINT, amount DECIMAL(10,2), status STRING, update_time TIMESTAMP(3), PRIMARY KEY (id) NOT ENFORCED ) WITH ( connector mysql-cdc, hostname mysql-host, port 3306, username flink_cdc, password cdc_pass, database-name shop, table-name orders, server-time-zone Asia/Shanghai, scan.startup.mode initial -- 先全量快照再增量 binlog );scan.startup.mode initial是重点Flink CDC 会先全量扫一遍历史数据再无缝切到增量 Binlog不用你手动做存量增量。4.2 建 StarRocks 目标表CREATE TABLE sr_orders ( id BIGINT, user_id BIGINT, amount DECIMAL(10,2), status STRING, update_time TIMESTAMP(3), PRIMARY KEY (id) NOT ENFORCED ) WITH ( connector starrocks, jdbc-url jdbc:mysql://sr-fe:9030, load-url sr-be:8040, database-name shop, table-name orders, username root, password , sink.properties.format json, sink.properties.strip_outer_array true );4.3 同步 SQL核心一行-- 建视图做简单清洗过滤无效订单CREATE VIEW v_orders AS SELECT id, user_id, amount, status, update_time FROM mysql_orders WHERE amount 0; -- 写入数仓 INSERT INTO sr_orders SELECT * FROM v_orders;提交./bin/sql-client.sh -f sync_orders.sql # 或打包成 jar 用 ./bin/flink run 提交生产推荐后者4.4 保障 Exactly-once# flink-conf.yaml execution.checkpointing.interval: 30000 # 30s 一次 checkpoint execution.checkpointing.mode: EXACTLY_ONCE execution.checkpointing.timeout: 600000 state.backend: rocksdb # 大状态用 rocksdb state.checkpoints.dir: hdfs:///flink/ckStarRocks Sink 配合 checkpoint 做两阶段提交保证故障恢复后不重复不丢失。五、性能实测环境MySQL 8.04c8g、Flink 1.183×TaskManager每 4 槽、StarRocks 3.x3 BE。用sysbench模拟订单表持续写入指标实测值源端写入速率1000 TPS端到端同步延迟 P500.8 s端到端同步延迟 P991.9 sCheckpoint 耗时1.2 s全量快照阶段吞吐12 万行/min1000 万行表约 14 min 完成故障恢复kill TM从最近 CK 恢复无数据丢失对比传统 T1 批处理最快次日才能查实时性从天降到秒。六、踩坑记录问题现象解决Binlog 不是 ROW 格式CDC 启动报错binlog_formatROW必须改大表全量快照锁表业务写入被阻塞用scan.incremental.snapshot.chunk.size调小分片或低峰期源端 DDL 变更作业挂掉开启schema.change.enabledtrue3.x 支持或手动改表结构后重启Checkpoint 频繁失败状态太大超时换 rocksdb 后端 调大 timeoutSink 报主键冲突重复 upsert确认目标表 PRIMARY KEY 与源一致时区错乱时间字段差 8 小时加server-time-zone且 Flink 设同区反压传回 Source同步延迟飙升优化 Sink 写入批次batch 参数七、总结Flink CDC 用一套 SQL 把捕获→计算→写出做成端到端实时管道告别 T1 和手写 Canalinitial启动模式自动先全量后增量存量数据不用单独处理Checkpoint 两阶段提交保障 Exactly-once故障可恢复生产建议打包 jar 提交而非 sql-client并配 rocksdb 状态后端下一篇实时数据有了消息队列怎么选型周四我们用 Pulsar vs Kafka 把消息中间件讲透。往期回顾Kafka 深度解剖 2消费者组再均衡 Rebalance 全流程StarRocks 实时数仓搭建比 ClickHouse 更适合多维分析的场景Spark 3.5 AQE 调优10 个生产环境案例让作业提速 3-10 倍
企业数字化 ERP 产品动态
相关推荐
2026年精选最值得推荐的5款降AIGC工具 2026 年毕业季临近,各大高校对论文 AIGC 检测的审查标准愈发严格。面对市面上种类繁多的降 AI 工具,许多同学开始困惑:到底该选哪个才靠谱?我花了两周时间,对当前市面主流的 5 款降 AI 工具进行了全面测试,… · 2026/9/25 20:38:35
CARLA多服务器仿真部署指南:架构、调度与避坑实践 简介:毕业设计聚焦多服务器环境下CARLA仿真系统的搭建与调度,适合自动驾驶、智能网联方向的学生及需要完成期末大作业或毕设项目的开发者。资源共251个文件,涵盖Python核心脚本、txt说明文档、地图与路网相关的sumocfg/xodr配置文件、XML/YAM… · 2026/9/25 20:38:35
Python agora-api 包完全指南与实战案例 1. 引言agora-api 是声网(Agora)官方提供的 Python 服务端 SDK 包,用于在服务端生成临时 Token、管理频道、查询通话质量数据等。它面向开发者提供了一套简洁的接口,帮助你在不依赖客户端的情况下完成鉴权、频道管理和数据统计等操… · 2026/9/25 21:13:16
wp-calypso Jetpack Connect 连接流程全解析:从授权信号到插件感知式接入 前端CMS 【免费下载链接】wp-calypso The JavaScript and API powered WordPress.com 项目地址: https://gitcode.com/gh_mirrors/wp/wp-calypso 点击查看 免费下载 本文以 client/jetpack-connect/AGENTS.md 及其关联的 connection-content/README.md 为主体&… · 2026/9/25 21:12:05
从推理到构建:腾讯云ES如何让企业Agent从「能用」走向「好用」 导读:当 16% 的企业已把 Agentic AI 推进生产环境、而真正拥有 AI-Ready 数据的企业只有 4% 时,热度与落地之间的这道缺口,并不是大模型能力的缺口,而是上下文供给的缺口。在 腾讯云 x Elastic AI 搜索技术大会上,腾讯… · 2026/9/25 21:11:27
链表从入门到精通:单链表操作、逆序与面试考点全解析 聊链表之前,我先说个观察:数据结构课上,链表几乎是所有人的第一道坎,但也是性价比最高的一道坎。学会了链表,指针、内存、递归这些概念会跟着通掉一半;学不会,后面二叉树、图、哈希表全都会受影… · 2026/9/25 21:11:02
Servlet+JSP手写登录注册:从环境搭建到Session会话管理 1. 为什么还要写ServletJSP的登录注册:先弄清楚这个项目解决什么问题登录注册系统,几乎是每个JavaWeb学习者绕不开的第一个完整项目。哪怕现在Spring Boot大行其道,我还是建议你耐着性子把它用原生Servlet和JSP写一遍。原因很简单:… · 2026/9/25 21:11:02
Atlas 300V 24G上部署YOLO:模型转换与推理调优实战 1. Atlas 300V 24G:先把这个"是不是加速卡"的问题彻底讲清楚1.1 为什么大家会对这张卡产生身份疑问最近后台收到好几条类似的私信,都是关于"Atlas 300V 24G",上来第一句就问:这玩意儿是运算加速卡吗ÿ… · 2026/9/25 21:10:18
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37