凌晨两点,运维群里弹出一条消息:"今晚的同步任务又挂了,MySQL 的几张表没到 Doris,明早报表要用的,哪位帮忙看一下?"
这条消息的发送者是一位数据工程师,负责维护公司二十多张业务表从 MySQL 到数据仓库的每日全量同步。他手头有一套祖传脚本:先用 mysqldump 导出 SQL 文件,再用 sed 把 MySQL 语法转成 Doris 兼容的格式,最后批量导入。维护了三年的脚本,增增减减已经超过 800 行,每次上游表结构变了就得改一堆正则。上周财务系统加了一个字段,他没注意到,结果 Doris 建表语句缺了一列,凌晨任务直接报错中断——等到第二天业务部门打开报表发现数据是空的,他才从被窝里爬起来救火。
这不是个别现象。在很多数据团队里,MySQL 到数据仓库的全量同步是一个高频刚需,但实现方式仍然停留在手工脚本阶段:链路长、容错差、维护成本高。而且随着业务增长,需要同步的表越来越多——从三五张到二三十张,逐一配置的时间成本线性上升。
龙石数据中台的集成模块为这类场景提供了两个方案:批量归集流程开发适合需要数据清洗转换的精细化场景,多表归集适合批量同步多张表的效率场景。两者都依赖统一的数据源接入体系,配置一次、持续运行。下面逐一来实操。
二、前置条件
开始之前,确认以下三项就绪:
数据中台已部署。龙石数据中台基于"理采存管用"方法论构建,数据集成模块的核心工作是"采"——聚数据,打通业务系统。
数据源已接入。进入「数据集成 → 数据源接入 → 数据源接入」,确认 MySQL 来源数据库和 Doris 目标数据库都已添加。支持的来源关系型数据库包括 MySQL、Oracle、SQLServer、PostgreSQL、DM8、Doris、Vastbase_G100、GaussDB。
了解源表结构。知道要同步哪些表、每张表的字段和主键。
注:下文以 MySQL→Doris 为例演示。批量归集流程开发同样适用于其他数据库组合,多表归集的来源和目标数据库支持范围略有不同,详见各小节说明。
三、方式一:批量归集流程开发
适合场景:需要对单表做数据清洗、字段转换、条件过滤后再写入目标库。配置方式为拖拽式可视化画布设计。
第一步:创建流程并配置数据输入
进入「数据集成 → 批量归集流程开发」,点击「新增数据流程」。填写流程名称(如"MySQL-客户表-全量同步"),选择流程分组,设置数据缓存大小(默认 2000 条,内存充足可适当调高)。
进入流程设计画布后,画布分为五个区域:左侧组件库、上部工具栏、中间画布、右侧属性面板、下部日志面板。
从左侧组件库的「输入组件」中,拖入「关系库表输入」到画布。双击组件,在右侧属性面板中配置:
| 配置项 | 填写 |
|---|---|
| 数据源 | 选择已接入的 MySQL 数据源 |
| 配置方式 | 可视化配置(也可选自定义 SQL,支持单表和多表联查) |
| 表名称 | 选择要同步的表,如 customer_info |
| 是否增量 | 不勾选(全量同步) |
如果选择「自定义 SQL」方式,可以直接写 SELECT * FROM customer_info 或带WHERE条件的查询,SQL中支持 ${变量名} 占位符引用参数设置中的变量。
第二步:字段映射与数据转换
从组件库的「转换组件」中拖入「字段选择」到画布,将鼠标从关系库表输入组件右侧圆点连线到字段选择组件左侧圆点——这条连线控制数据流向。
双击字段选择组件,在右侧属性面板中配置字段映射:
字段选择:勾选需要同步的字段,取消不需要的字段。比如源表有 internal_id 仅内部使用,目标库不需要,取消勾选即可。
重命名:MySQL 的 user_name 在目标库中叫 customer_name,在「新名称」列直接修改。
数据类型和长度:可以在面板中调整输出字段的数据类型和精度。
如果需要做数据清洗,可以再拖入「数据清洗转换」组件,连线在字段选择之后。比如将手机号格式统一清洗为 11 位纯数字(138-0013-8000 → 13800138000),或对日期格式做标准化。还可以拖入「数据过滤」组件,按条件过滤数据流,如只同步 status='active' 的记录。过滤条件支持 SQL 风格写法,例如 city='苏州市'。
第三步:配置目标输出并运行
从「输出组件」中拖入「关系库表输出」到画布,连线自最后一个转换组件。
双击配置:
| 配置项 | 填写 |
|---|---|
| 数据源 | 选择已接入的 Doris 数据源 |
| 目标表 | 选择或输入目标表名 |
系统会根据前面字段选择组件中配置的字段名,自动匹配目标表的同名字段。如果源和目标字段名不一致,在字段选择步骤已做了重命名,这里直接对应即可。
点击上部工具栏的「保存」按钮保存流程,再点击「运行」。下部日志面板实时显示执行进度:读取行数、写入行数、执行耗时。运行完成后,可以点击「查看日志」回顾详细信息。
任务运行成功后,进入「批量归集任务管理」为其创建定时策略——执行方式支持手工触发、重复执行(按天/周/月)、定时执行一次、Cron 表达式。配置完成后,每天到点自动跑,不用再手工干预。
四、方式二:多表归集
适合场景:同一来源库有多张表需要全量同步到目标库,不需要复杂的清洗转换,追求效率——一次性配置,多张表并行同步。
第一步:创建多表归集任务
进入「数据集成 → 多表归集管理」,点击「新增」。
多表归集采用引导式配置,第一步是配置基础信息:
| 配置项 | 填写 |
|---|---|
| 任务名称 | 如"MySQL业务表-全量归集" |
| 来源库 | 选择已接入的 MySQL 数据源 |
| 目标库 | 选择已接入的 Doris 数据源 |
| 同时执行任务数 | 默认 5(最小 1,最大 100,控制几张表同时同步) |
| 数据缓存大小 | 默认 2000 条(内存充足可调高,提升性能) |
多表归集支持的数据库:来源库支持 MySQL、Oracle、SQLServer、PostgreSQL、DM8、Doris、Vastbase_G100、GaussDB;目标库支持 MySQL、Oracle、PostgreSQL、DM8、Doris、Vastbase_G100、GaussDB。
第二步:选择来源表并配置映射
点击「下一步」进入选择来源表页面。勾选需要同步的表——比如 customer_info、order_main、order_detail、product_catalog 四张表一次性勾选。
如果目标库中已经存在同结构的表,系统会自动匹配。如果目标库中还没有对应的表,可以勾选「自动建表」,系统会根据来源表的表名和结构自动创建目标表。建表时支持动态调整:为表名批量添加前缀或后缀、按比例扩展字段长度(解决 MySQL 按字符计数、Doris 按字节计数的差异)。
下一步是配置多表映射和字段映射:
表映射:平台提供三种自动匹配方式——精确匹配(来源表名与目标表名完全一致)、加前缀匹配、加后缀匹配/模糊匹配。匹配完成后可手工调整映射关系。
字段映射:勾选「指定数据库字段」可自定义映射,不勾选则同步源表和目标表字段名称一致的所有字段列。系统会自动按字段名匹配,名称不一致的可以手工修正。
同步方式:选择「全量」——每次任务执行时同步全部数据。如果需要增量同步,选择「增量」并设置增量字段(如自增 ID 或更新时间戳)和数据写入方式(仅插入 / 插入更新)。
过滤条件:可根据需要为某张表添加 SQL 过滤条件(不需要写 WHERE,直接写 city='苏州市' 即可)。
分片:对于数据量特别大的表(千万级以上),勾选「是否分片」并设置分片字段(建议选日期时间型或整型主键)和分片数量。系统会按分片自动拆分并行执行,避免单次 SQL 执行时间过长导致失败。
第三步:配置执行策略并运行
继续点击「下一步」,配置任务属性和监控信息:
执行方式:手工触发 / 重复执行(按天/周/月定时)/ 定时执行一次 / Cron 表达式
任务优先级:数值越大优先级越高,多任务同时触发时按优先级调度
失败后禁用该任务:勾选后任务失败会自动禁用,需手动启用;不勾选则任务失败后按策略重试
监控配置支持四个维度:任务执行状态、任务逾期情况、执行耗时、采集记录数。不满足设定条件时,可通过站内消息、邮件、短信等方式发送预警。
完成配置后回到列表页面,点击「立即执行」,任务启动。列表页显示执行状态——"执行中"表示正在运行,"成功"表示本次执行完成。如果显示"失败",点击失败状态可查看失败原因。
任务执行完成后,可以点击「查看日志」进入日志详情。日志以列表展示每次执行的同步数据量、执行耗时、执行时间、执行状态,展开后还能看到每张表的具体读写行数和耗时。
五、两种方式怎么选
| 维度 | 批量归集流程开发 | 多表归集 |
|---|---|---|
| 适用场景 | 需要数据清洗、字段转换、条件过滤 | 多张表直接同步,不做复杂转换 |
| 配置界面 | 拖拽式画布设计,可视化连线 | 引导式分步配置,勾选操作 |
| 单次同步 | 一张表(自定义SQL可关联多表) | 多张表一次性勾选 |
| 灵活性 | 高(支持完整的ETL转换链路) | 中(标准映射+过滤+分片) |
| 并行方式 | 组件级数据流并行 | 表级并行(同时执行任务数,默认5表) |
| 自动建表 | 需手动在目标库建表 | 支持自动建表,可动态调整字段长度 |
如果一个 MySQL 实例下只有一两张表需要同步,且涉及数据清洗(如手机号格式化、多表关联后写入),用批量归集流程开发更合适。如果一个实例下有十几张表,结构基本一致、不需要复杂转换,多表归集一键勾选、并行执行,效率远高于逐表配置。
六、验证结果
任务运行成功后,除了在日志中确认,还可以从以下几个维度验证数据就绪:
目标库查询:在 Doris 中执行 SELECT COUNT(*) 对比源表行数,确认数据完整入库。也可抽样几条数据核对字段值是否正确。
对账功能:集成任务完成后,可以启用平台的对账功能——将源表和目标表的数据量和数据内容自动比对,发现差异自动告警。不必每条数据都手工抽查,系统会告诉你哪张表、哪些字段的数据不一致,对症修复即可。
元数据自动采集:数据中台在集成任务执行时,同步完成元数据采集。进入「数据治理 → 元数据管理」,可查看新入库表的元数据信息以及数据血缘关系——从 MySQL 源表到 Doris 目标表的完整链路一目了然。
资产目录自动更新:同步完成后,数据资产目录自动刷新。进入「数据资产 → 资源目录」,对应数据资源状态更新为就绪,下游用户可申请使用。
七、集成过程中的质量保障
数据集成不只是"把数据搬过去",龙石数据中台在集成过程中嵌入了质量保障能力:
数据标准联动:在字段映射环节,可以引用平台已定义的数据标准。比如"性别"字段的标准字典值为 M(男)/ F(女),映射时直接引用标准定义,系统自动校验来源数据是否符合标准。标准改了,所有引用该标准的映射规则自动同步。
质量规则校验:集成任务可以关联质量评测模型。任务执行完成后自动触发质量检查——空值检查、格式规范性检查、值域检查、引用完整性检查等,覆盖 GB/T 36344-2018《信息技术 数据质量评价指标》定义的规范性、完整性、准确性、一致性、时效性等维度。发现问题数据自动记录到问题库,不阻塞数据入库(旁路监测模式)——这也符合 DAMA《数据管理知识体系指南》(DMBOK2)中数据质量管理应优先保障业务连续性的原则。作为信通院《数据治理产业图谱 3.0》入选厂商和 DAMA 大中华区实训基地,龙石在这个领域已有多个项目验证。
监控预警:多表归集和批量归集任务都支持配置监控。任务失败、逾期未执行、执行耗时超过预期、采集数据量不达标等情况,系统通过站内消息、邮件、短信等渠道及时通知责任人。
八、常见问题
Q: 增量同步怎么配置?
批量归集流程开发中,在关系库表输入组件勾选「是否增量」,选择增量字段(数值型自增主键或时间戳)和增量方式(数值增量/时间戳增量),配置目标库的对应增量字段即可。多表归集中,在配置多表映射时将同步方式选为「增量」,设置来源表增量字段、目标表增量字段和数据写入方式(仅插入/插入更新)。
Q: 大数据量表跑得太慢怎么办?
多表归集支持分片——勾选「是否分片」,设置分片字段(建议日期时间型或整型主键)和分片数量,系统自动拆分并行执行。批量归集流程开发中可以适当调大数据缓存大小(默认2000条,内存充足可提高)。
Q: 能不能定时自动跑?
可以。批量归集任务和多表归集任务都支持四种执行方式:手工触发、重复执行(按天/周/月定时)、定时执行一次、Cron 表达式。建议先用手工触发跑通验证,再改为定时策略。
九、FAQ
1. 批量归集流程开发和多表归集选哪个?
需要数据清洗转换的选批量归集(拖拽组件灵活组合),多张表结构类似只需直接同步的选多表归集(一次勾选并行执行)。两者可以组合使用——先多表归集完成原始入仓,再用批量归集做清洗转换到治理层。
2. MySQL 和 Doris 字段类型不匹配怎么办?
在字段选择组件(批量归集)或字段映射配置(多表归集)中,可以手动调整输出字段的数据类型和长度。多表归集的自动建表功能中,支持设置字段长度扩展倍数,解决源表按字符计数、目标库按字节计数的差异。
3. 全量同步太慢能并行加速吗?
多表归集通过「同时执行任务数」实现表级并行(默认5张表同时同步),通过「分片」实现单表级并行(大表拆成多个分片并行执行)。批量归集流程开发通过调大「数据缓存大小」和配置资源组来优化性能。
4. 同步中断了怎么恢复?
多表归集任务支持「从失败处恢复执行」——只重新同步上次失败的表,已成功的表不再重复执行。批量归集任务可以通过「回放」功能重新触发。建议同步配置任务监控,一旦失败及时收到通知。
5. 质量规则怎么和集成任务联动?
在数据质量模块创建评测模型后,可以在集成任务中关联。任务执行完成后自动触发质量评测。质检采用旁路监测模式——数据正常入库,质检并行扫描,发现问题打标记、发告警、生成整改工单,不堵塞数据链路。
6. 集成任务能嵌入更大的数据流水线吗?
可以。批量归集任务支持「编排执行」——在编排任务管理中将归集任务、清洗任务串联成端到端的数据流水线,按依赖关系依次执行。例如:多表归集(入贴源层 ODS)→ 批量归集(清洗入治理层 DW)→ 数据开发(入应用层 ADS),全链路自动化。
数据集成不需要半夜爬起来改脚本。龙石数据中台将多源异构数据归集标准化为可视化操作——拖拽组件或向导式勾选,三步完成配置,此后每天自动运行。从手工脚本到自动化集成的转变,不是工具的升级,而是把数据工程师的时间从维护脚本中释放出来,去做更有价值的事情。
在苏州某面料贸易企业(企业名称已脱敏,下同)的项目中,企业原本依赖多套定制接口对接 ERP、PLM、MES、仓储系统,每次跨系统数据交互都要手工操作或协调开发。龙石团队部署数据集成平台后,各业务系统之间数据自动流转,新应用上线周期压缩了70%以上。江苏某 211 大学的智慧校园项目中,数据底座利用多表归集和批量归集工具,将分散在各院处系统的异构数据规范高效入库,最终沉淀为可复用的核心数据资产,跨部门数据申请从"天/周级"缩短到"分钟级"。
这两类案例说明同一个道理:数据集成的价值不在"技术有多复杂",而在"操作有多简单"。让数据流动起来,第一步就是让集成本身不再成为瓶颈。
参考来源
[1] GB/T 36344-2018《信息技术 数据质量评价指标》,国家标准化管理委员会
[2] DAMA International,《数据管理知识体系指南》(DMBOK2),2017