MySQL到Doris实时同步:基于CDC的OLAP数仓数据管道搭建

一、背景介绍

MySQL是企业中最为主流的OLTP关系型数据库,几乎承载了所有业务系统的核心交易数据。随着数据驱动决策理念的深入,企业早已不再满足于「T+1」离线报表,而是期望以最新的业务数据驱动实时大屏、风控预警与多维即席分析,这对Apache Doris等OLAP引擎提出了低延迟数据接入的现实需求。

传统基于定时批量抽数的同步方式不仅存在小时级甚至天级延迟,还会周期性地对源库发起全表扫描,造成明显的读取压力与性能抖动,且调度链路复杂、运维成本高。

CDC技术通过解析MySQL的binlog二进制日志,能够准实时地捕获每一笔INSERT、UPDATE、DELETE变更,再经由ETL平台流式写入Doris,从而以低侵入、低延迟的方式构建毫秒级响应的OLAP数仓管道。本文将基于ETLCloud数据集成平台,完整演示从开启MySQLCDC、配置数据源、搭建监听器,到全量与增量流程设计及效果验证的端到端落地过程。

二、MySQL数据库开启CDC

1.检查binlog开启状态

在MySQL中执行SHOW VARIABLES LIKE'log_bin';,若返回结果中log_bin的值为ON,说明binlog已开启,CDC可正常捕获变更;若为OFF,需先在my.cnf中配置log-bin并重启实例。

三、ETLCloud数据源配置

进入ETLCloud的「数据源管理」,分别新建MySQL源端数据源与Doris目标端数据源,填写连接地址、端口、账号与库名后点击「测试连接」,确认两端均可被平台正常访问,再继续后续配置。

1.创建数据源

创建数据源时,类型建议选择「连接池」模式。连接池会预先维护一组长连接并循环复用,避免每条任务频繁创建/销毁连接的开销,尤其有利于高并发与实时链路的稳定。

2.MySQL数据源优化

为提升大批量写入吞吐,建议在MySQL数据源的高级参数中开启优化项,例如调大批量插入缓冲区、启用连接复用、关闭自动提交等,通常可显著加快写入速度。具体参数说明可参考ETLCloud官方MySQL数据源优化文档。

此外,在实时同步场景下务必使用连接池:长连接复用能平滑连接抖动、降低创建/销毁开销,从而保障CDC增量链路长期、稳定地运行。

四、实时监听器配置

1.创建监听器

点击新建监听器,Doris数据库需要使用专门的输出组件,这里传输模式选择传输到ETL。

2.选择同步表

在监听器配置页的表清单中,勾选需要实时同步的库表(支持多选)。未被勾选的表不会产生CDC事件,可避免无谓的带宽与计算消耗。

3.配置载入表参数

注意:单次载入的表数量存在上限。若需同步的表较多,可在「载入表读取数」中调大该值,一次性载入更多表结构,避免分批遗漏。

4.选择目标流程

为监听器指定目标流程,即CDC捕获的变更事件在落地后要触发的处理流程,增量数据将根据此路由进入对应的同步链路。

五、全量同步流程设计

1.进入全量设计界面

点击「全量设计」进入全量同步流程画布,在此搭建首次历史数据的批量同步链路,作为实时增量的基线。

2.添加Doris批量快速输出组件

从左侧组件库拖入「Doris批量快速输出」组件,作为全量数据写入Doris的目标算子,并与上游读取节点连成完整链路。

3.配置自动建表

按需开启「自动建表」:首次同步建议开启,平台会依据源表结构在Doris中自动创建对应目标表;若目标表已存在,可关闭以复用既有表结构。

4.查看全量执行记录

在「运行监控」中查看全量同步执行记录,核对数据行数、耗时与状态。确认全量基线就绪后,再启动增量链路。

六、增量同步流程搭建

1.添加Doris快速输出组件

全量基线完成后进入增量设计:依据监听器实际监听的表数量,拖入相同数量的「Doris快速输出」组件,使每个组件对应一张表的实时写入。

2.配置路由条件

为每条连向「Doris快速输出」组件的路由线配置路由条件,按表名进行分流;若监听器仅监听单表,可省略该条件。

多表场景下,只需将判断脚本中的表名(示例为book)替换为实际表名,即可实现按表路由。

//使用变量作为判断标记
functionassert(engine,nodeDoc,nodeId,indoc){
varflag=indoc.get("tableName");//获取变量
if(flag==="book"){
return1;//返回1表示成立
}else{
return0;//返回0表示禁止
}
}

3.配置数据输出模式

「Doris快速输出」组件的数据输出模式选择「增删改(UPSERT)」,以同步源端的INSERT、UPDATE与DELETE,保证Doris与MySQL最终一致。

4.勾选关键字

勾选关键字字段(主键或唯一键),作为Doris侧更新/删除时的匹配依据,确保变更行能被正确定位与改写。

七、验证增量效果

1.新增测试数据

在MySQL源表执行一条INSERT插入测试数据,用于验证增量链路能否实时捕获并写入Doris。

2.查看传输信息

查看传输监控:源表新增1条,目标Doris表随之同步新增1条,说明增量捕获与写入均工作正常。

3.查看执行记录

在增量流程执行记录中可见成功传输1条且状态为成功,表明端到端实时同步链路已完整打通。

最后

本文基于CDC技术,通过ETLCloud平台落地MySQL到Apache Doris实时数据管道。完整覆盖MySQL binlog 开启、数据源参数调优、CDC监听器开发、全量基线构建、增量多表路由开发、链路验证全流程。

对比传统轮询批量抽取方案,基于binlog的CDC同步方案源库压力小、数据延迟低、业务侵入小,是企业构建实时OLAP数仓的通用实现方案。

生产环境落地建议:合理使用连接池优化连接管理,结合批量写入提升吞吐;多表场景做好路由配置,正确设置Doris更新关键字;同时根据业务峰值流量做参数调优,进一步保障同步链路长期稳定运行。

posted @ 2026-09-04 17:08  谷云科技RestCloud  阅读(10)  评论(0)    收藏  举报