当前位置: 首页 > news >正文

基于 Apache SeaTunnel 与 Apache DolphinScheduler 实现 MySQL 到 Doris 离线定时增量同步

本次演示将结合 Apache SeaTunnel 与 Apache DolphinScheduler,实现一个典型的离线增量同步场景:通过 DolphinScheduler 获取目标端同步位点,并将该位点作为参数传递给 SeaTunnel,从而实现 MySQL 到 Doris 的增量数据同步。

本文基于实际演示过程整理,完整记录环境准备、SeaTunnel 配置以及 DolphinScheduler 工作流配置过程。

具体操作步骤可参考完整 Demo 演示:

一、实验环境

本案例使用以下组件:

组件版本
Apache SeaTunnel2.3.9
Apache DolphinScheduler3.x
MySQL8.4
Apache Doris2.x

其中:

  • MySQL 作为源数据库;
  • Doris 作为目标数据库;
  • SeaTunnel 负责数据同步;
  • DolphinScheduler 负责任务编排与调度。

二、准备测试数据

在开始配置同步任务之前,首先准备测试环境中的业务数据。

演示中使用 shopping 数据库作为示例库,并创建订单表 orders。

订单表中包含一个自增的订单主键字段:

order_id

后续增量同步将以该字段作为同步位点。

为了验证同步效果,演示环境中预先插入了一批测试数据,并通过脚本批量生成约 300 条订单记录。

随后查看表中的数据情况,包括:

  • 当前订单总数;
  • 当前最大订单 ID。

这些数据将在后续配置增量同步逻辑时作为参考。

需要说明的是,本案例选择 order_id 作为增量字段只是为了便于演示。在实际业务场景中,也可以使用 update_time、create_time 等时间字段作为增量同步条件。

三、增量同步实现思路

在正式配置 SeaTunnel 之前,演示首先介绍了整个增量同步方案的实现逻辑。

核心思路是利用目标端 Doris 中已经同步完成的数据来确定当前同步进度。

具体流程如下:

  1. 查询 Doris 当前最大的订单 ID;
  2. 将该值作为同步位点;
  3. SeaTunnel 从 MySQL 中读取大于该值的数据;
  4. 将新增数据写入 Doris;
  5. 下一次同步时继续从新的位点开始读取。

例如:

如果 Doris 当前最大的订单 ID 为:

300

那么 SeaTunnel 实际执行的查询条件将变成:

WHERE order_id > 300

这样可以保证每次任务只处理新增数据,而不会重复同步已经存在的数据。

演示中也特别提到,增量字段并不一定是主键字段,只要能够准确标识新增数据或变更数据即可。

四、编写 SeaTunnel 配置

完成同步思路说明后,开始配置 SeaTunnel 作业。

配置 JDBC Source

由于数据来源于 MySQL,因此使用 JDBC Source 读取数据。

核心查询语句如下:

SELECT * FROM orders WHERE order_id > ${order_id}

这里最关键的部分是:

${order_id}

该变量并不是固定值,而是后续由 DolphinScheduler 动态传递。

当工作流运行时,SeaTunnel 会根据实际同步位点自动替换该参数,从而实现增量抽取。

配置并行度

演示中同时配置了任务并行度:

parallelism = 4

通过增加并行度,可以提高同步任务的执行效率。

实际生产环境中应根据服务器资源以及数据库负载情况进行合理调整。

配置分区读取

为了提高大表读取效率,演示中还介绍了分区读取配置。

分区字段使用:

order_id

对应配置:

partition_column = "order_id"

同时配合 partition_num 参数,将数据划分为多个分区并行读取。

这种方式能够有效提升大数据量场景下的同步性能。

配置 Fetch Size

在 JDBC Connector 中,还可以通过 fetch_size 控制单次从数据库获取的数据量。

合理设置该参数能够减少数据库交互次数,从而提高整体读取效率。

五、配置 Doris Sink

完成 Source 配置后,开始配置 Doris Sink。

自动建表能力

演示中首先介绍了:

create_schema

该参数用于自动创建目标表。

通过自动建表能力,可以减少人工维护 Doris 表结构的工作量。

配置写入模式

由于本案例采用增量同步,因此选择追加写入模式:

save_mode = APPEND_DATA

之所以使用 APPEND_DATA,是因为每次同步的都是新增数据,不需要覆盖历史记录。

开启两阶段提交

为了保证数据一致性,演示还介绍了:

enable_2pc = true

开启后可以利用两阶段提交机制,实现更可靠的数据写入过程。

同时有助于保障 Exactly Once 语义。

性能相关参数

此外,演示还讲解了多个性能优化参数,包括:

batch_size

以及:

buffer_size

这些参数主要用于控制数据批量写入行为,从而提升 Doris 导入性能。

Create Table Template

对于自动建表场景,演示还展示了 Create Table Template 的配置方式。

其中包括:

UNIQUE KEY(order_id)

以及:

DISTRIBUTED BY HASH(order_id)

同时还可以配置:

  • 副本数;
  • 压缩格式;
  • 是否启用内存存储;
  • 其他 Doris 表属性。

通过模板配置,可以让 SeaTunnel 自动生成符合业务需求的目标表结构。

六、配置 DolphinScheduler 运行环境

完成 SeaTunnel 配置后,开始配置 DolphinScheduler。

创建租户

http://www.jsqmd.com/news/1087134/

相关文章:

  • 2020-2022年多源地理空间数据全景解析:从土地利用到城市POI的深度应用指南
  • 城通网盘解析工具终极指南:3分钟获取直连地址的完整解决方案
  • 基于HarmonyOS 7.0 跨端开发的阅读打卡圈页面实战
  • 3步掌握大麦抢票脚本:告别黄牛票的终极指南
  • Blender FLIP Fluids插件:3步创建电影级流体效果的终极指南
  • 从零到一:基于Minitab的全因子DOE实战指南
  • 原神工具箱Snap.Hutao终极指南:一站式提升游戏体验的高效工具
  • DevEco 26 / uni-app 鸿蒙包 pack.info 仍为 Beta1 的定位与修复
  • DevEco Code的Plan+Build模式
  • Thonny进阶定制:从界面汉化到图标移除的本地化实践指南
  • HS2-HF_Patch:为什么这是《Honey Select 2》玩家的最佳选择?
  • 免费AirPlay投屏终极指南:让Windows电脑变身苹果设备接收器
  • 为什么BiRefNet是解决高分辨率图像分割难题的终极答案?
  • GPU加速的定量MRI参数估计框架GACELLE解析
  • Mermaid终极指南:从文本到专业图表的完整解决方案
  • 终极英雄联盟回放分析工具:ROFL-Player完全使用指南
  • 专注力保护神器:iwck键盘锁定工具终极指南(防止误触、清洁键盘必备)
  • 浅说GEO:与SEO的区别,以及官网结构化该怎么做
  • Vue3 Admin Element Template:如何在10分钟内搭建企业级后台管理系统
  • 从ZeRO-1到ZeRO-3:深入解析DeepSpeed如何通过内存优化策略攻克大模型训练壁垒
  • OWASP Top 10 深度解析:从原理到实战,构建Web应用安全防线
  • 免费解锁百度网盘限速:Python直链解析工具的终极解决方案
  • 5分钟解锁Wand游戏修改器:终极免费增强方案
  • 如何用开源工具快速生成逼真的中国车牌数据?
  • 从零到一:手把手教你部署FastAdmin开发环境
  • EUREKA:面向大模型研发的可归因能力诊断系统
  • 性能测试需求分析实战:从业务模型到可度量指标的完整指南
  • 3步轻松搞定!res-downloader跨平台资源下载器完整指南:从加密视频解密到多平台资源获取
  • 终极植物大战僵尸修改器PVZ Toolkit:3个技巧让你轻松通关无尽模式
  • CANFD全局与通道状态机:RA8M1模式切换与低功耗管理实战