详解 Flink CDC+OceanBase 全增量一体化数据集成方案

2024年 5月 7日 97.2k 0

前言:

一般情况下,CDC 技术主要面向数据库的变更,用于捕获数据库中数据变更的技术。而 Flink CDC+ OceanBase 全增量一体化数据集成方案是将传统的数据库 CDC 技术跟 Flink 优秀的管道能力和丰富的上下游生态结合,将 CDC 数据通过加工后同步到下游,最终生成一个 OceanBase 解决方案,实现全量和增量的一体化同步。

该方案的优势有两点:一是它可以通过一个组件、一条链路就解决数据同步需求,其链路更短,组件更少;二是 Flink SQL 支持分库分表聚合和 ETL,极大地降低了用户使用门槛,用户通过一个 Flink SQL 作业就完成了 CDC 的数据分析、加工和同步。

摘要:

本文整理自 OceanBase 开源生态工具研发技术专家王赫,在深入浅出 OceanBase 线上技术直播第二期的分享。

本篇内容主要分为五个部分:

1.CDC 技术简介

2.OceanBase CDC 组件介绍

3.Flink CDC 简介

4.体验Flink CDC OceanBase Connector

5.总结

一、CDC技术简介

详解 Flink CDC+OceanBase 全增量一体化数据集成方案-1

CDC 是 Change Data Capture 变更数据获取的简称,其核心思想是先监测并捕获数据库的变动,包括数据或数据表的插入 INSERT、更新 UPDATE 、删除 DELETE 等,再通过将这些变更按发生的顺序完整记录下来,写入到消息中间件中,以供其他服务进行订阅及消费。

详解 Flink CDC+OceanBase 全增量一体化数据集成方案-2

目前,国内比较流行的 CDC 开源技术是 Alibaba Canal,早期主要用于阿里巴巴开源的 MySQL 增量数据订阅和消费组件。OceanBase 基于最新代码开发适配了 OceanBase 社区版数据源,支持增量 DDL、DML,以及库、表和列过滤,基于 Zookeeper 实现高可用集群部署。Client Adapter 适配多种目的端容器,配合 Alibaba Otter 可实现异地多活。

详解 Flink CDC+OceanBase 全增量一体化数据集成方案-3

国外也有一个比较流行的开源 CDC 框架叫 Debezium,支持:

DDL和DML的操作日志同步;支持使用数据的主键或唯一键作为消息体的key;支持快照模式和全量同步;

除此之外,Debezium还支持多种数据源,使用 Debezium Server 可以作为嵌入引擎集成到程序中,数据不经 Kafka 直接写入消息系统。

二、OceanBase CDC组件介绍

详解 Flink CDC+OceanBase 全增量一体化数据集成方案-4

OceanBase 社区版的 CDC 组件主要有以下四种:

obcdc (原liboblog) 提供增量日志顺序拉取功能;

oblogmsg 提供解析增量日志格式功能;

oblogproxy 提供增量日志拉取服务;

oblogclient 连接 oblogproxy 获取增量日志。

除了以上几种源代码开放的项目之外,OMS 社区版提供了 OceanBase 一站式数据迁移工具套件服务。它不但可以做增量数据的迁移,而且可以做全量数据迁移、全量数据校验等。

详解 Flink CDC+OceanBase 全增量一体化数据集成方案-1

上图是 OceanBase 社区版 CDC 组件架构,主要包括 oblogproxy 和 OMS 社区版。其中 Canal 和 Flink CDC 集成了 oblogclient 的能力,通过连接 oblogproxy 获取增量日志。

三、Flink CDC 简介

详解 Flink CDC+OceanBase 全增量一体化数据集成方案-2

目前,Flink CDC支持多种数据源,如MySQL、PostgreSQL、Oracle等。Flink CDC提供了对多种数据库的全量和增量数据的读取能力,当数据读到Flink之后,会自动交由FlinkSQL引擎处理。

详解 Flink CDC+OceanBase 全增量一体化数据集成方案-3

Flink 是流批一体的处理引擎,Flink CDC 提供了动态表结构。左图显示了流式数据和动态表的对应关系。右图显示了 Continuous Queries 的多次执行结果。

详解 Flink CDC+OceanBase 全增量一体化数据集成方案-2

上图是 Flink CDC 的工作原理,基于 Debezium 实现了 SourceFunction 接口,支持MySQL、Oracle、MongoDB、PostgreSQL、SQLServer。

最新的 MySQL 数据源读取实现了 Source 接口,相比 SourceFunction 的实现增强了并发读取。

OceanBaseRichSourceFunction 实现了 SourceFunction 接口,分别基于 JDBC 和 oblogclient 实现了全量和增量读取。

详解 Flink CDC+OceanBase 全增量一体化数据集成方案-9

四、体验Flink CDC OceanBase Connector

首先,配置docker-compose.yml并启动容器。在docker-compose.yml 所在目录下执行命令:docker-compose up-d 启动需要的组件。

详解 Flink CDC+OceanBase 全增量一体化数据集成方案-10

然后准备数据,使用新创建的用户名和密码进行登陆:docker-compose exec observer obclient-h127.0.0.1-P2881-uroot-ppsw。下载需要的依赖包,在 Flink SQL CLI 中使用 Flink DDL 创建表。

详解 Flink CDC+OceanBase 全增量一体化数据集成方案-11

设置间隔时间为3秒,本地时区为 Asia/Shanghai,创建订单表,创建商品表,创建关联后的订单数据表。执行读取和写入 。

详解 Flink CDC+OceanBase 全增量一体化数据集成方案-12

完成上述操作后,在Kibana中查看数据。访问:

http://localhost:5601/app/kibana#/management/kibana/index_pattern

详解 Flink CDC+OceanBase 全增量一体化数据集成方案-13

创建index pattern enriched_orders, 之后我们就可以在 http://localhost:5601/app/kibana#/discover 看到写入的数据了。

详解 Flink CDC+OceanBase 全增量一体化数据集成方案-14

修改监听表数据,查看增量数据变动。在 OceanBase 中依次执行如下修改操作,每执行一步就刷新一次 Kibana,我们可以看到 Kibana 中显示的订单数据将实时更新。

详解 Flink CDC+OceanBase 全增量一体化数据集成方案-15

最后,进行环境清理。将 docker-compose.yml 文件所在的目录,执行以下命令,停止所有容器:docker-compose down。进入 Flink 的部署目录,停止 Flink集群:./bin/stop-cluster.sh。

五、总结

Flink CDC是一个全增量一体化的数据迁移方案,支持多种源端类型,并且可以借助Flink SQL实现对流式数据的ETL处理。截止Flink CDC 2.2发布,该项目累计有44位贡献者,4位Maintainer,社区用户群超过4000人。

Flink CDC 从 2.2 开始加入了 OceanBase Connector,目前实现了对多库、多表的全量数据和增量 DML 的 at-least-once 读取。在未来的版本中,Flink CDC OceanBase Connector 会逐步添加对并发读取、增量 DDL 和 exactly-once 的支持。

接下来,我们来对现有的 CDC 方案进行对比。OMS社区版是白屏操作工具,有一个统一的前端界面,提供了全量+增量+数据校验+运维的一站式服务,在线上久经考验。DataX+Canal/Otter 是一个纯开源方案。 Canal支持多种目的端和增量 DDL,Otter 支持双活。

结语

Flink CDC 是纯开源方案,且社区活跃,支持多种数据源和目的端,全量+增量一体化。尤其值得一提的是,Flink CDC支持分库分表聚合和ETL,用户使用门槛低。想象一下,对于现有的 CDC 方案而言,数据清洗、分析、聚合操作流量十分之复杂,而现在利用 Flink SQL 双流JOIN、维表JOIN 等方式,可以非常轻松地实现各种业务逻辑的加工处理。

联系我们

欢迎广大 OceanBase 爱好者、用户和客户随时与我们联系、反馈,方式如下:

社区版官网论坛

社区版项目网站提 Issue

钉钉群:33254054

详解 Flink CDC+OceanBase 全增量一体化数据集成方案-16

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论