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

发布时间:2026/6/29 2:59:32
基于 Apache SeaTunnel 与 Apache DolphinScheduler 实现 MySQL 到 Doris 离线定时增量同步 本次演示将结合 Apache SeaTunnel 与 Apache DolphinScheduler实现一个典型的离线增量同步场景通过 DolphinScheduler 获取目标端同步位点并将该位点作为参数传递给 SeaTunnel从而实现 MySQL 到 Doris 的增量数据同步。本文基于实际演示过程整理完整记录环境准备、SeaTunnel 配置以及 DolphinScheduler 工作流配置过程。具体操作步骤可参考完整 Demo 演示一、实验环境本案例使用以下组件组件版本Apache SeaTunnel2.3.9Apache DolphinScheduler3.xMySQL8.4Apache Doris2.x其中MySQL 作为源数据库Doris 作为目标数据库SeaTunnel 负责数据同步DolphinScheduler 负责任务编排与调度。二、准备测试数据在开始配置同步任务之前首先准备测试环境中的业务数据。演示中使用 shopping 数据库作为示例库并创建订单表 orders。订单表中包含一个自增的订单主键字段order_id后续增量同步将以该字段作为同步位点。为了验证同步效果演示环境中预先插入了一批测试数据并通过脚本批量生成约 300 条订单记录。随后查看表中的数据情况包括当前订单总数当前最大订单 ID。这些数据将在后续配置增量同步逻辑时作为参考。需要说明的是本案例选择 order_id 作为增量字段只是为了便于演示。在实际业务场景中也可以使用 update_time、create_time 等时间字段作为增量同步条件。三、增量同步实现思路在正式配置 SeaTunnel 之前演示首先介绍了整个增量同步方案的实现逻辑。核心思路是利用目标端 Doris 中已经同步完成的数据来确定当前同步进度。具体流程如下查询 Doris 当前最大的订单 ID将该值作为同步位点SeaTunnel 从 MySQL 中读取大于该值的数据将新增数据写入 Doris下一次同步时继续从新的位点开始读取。例如如果 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。创建租户