Flink CDC 2.2 正式发布,新增四种数据源,支持动态加表,提供增量快照框架

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: Flink CDC 2.2 正式发布,文末有一则消息或许你会感兴趣~

前言

Flink CDC (CDC Connectors for Apache Flink®) [1]是 Apache Flink® 的一组 Source 连接器,支持从 MySQL,MariaDB, RDS MySQL,Aurora MySQL,PolarDB MySQL,PostgreSQL,Oracle,MongoDB,SqlServer,OceanBase,PolarDB-X,TiDB 等数据库中实时地读取存量历史数据和增量变更数据,用户既可以选择用户友好的 SQL API,也可以使用功能更为强大的 DataStream API。

img

作为新一代的数据集成框架, Flink CDC 不仅可以替代传统的 DataX 和 Canal 工具做实时数据同步,将数据库的全量和增量数据一体化地同步到消息队列和数据仓库中;也可以用于实时数据集成,将数据库数据实时入湖入仓;同时还支持强大的数据加工能力,可以通过 SQL 对数据库数据做实时关联、打宽、聚合,并将物化结果写入到各种存储中。

相对于其他数据集成框架,Flink CDC 具有全增量一体化、无锁读取、并发读取、表结构变更自动同步、分布式架构等技术优势,在开源社区中非常受欢迎,成长迅速,文档完善[2],目前社区已有 44 位贡献者,4 位Maintainer,社区用户群超过 4000 人。

一、Flink CDC 2.2 概览

经过3个多月的紧张开发,在社区开发者们的共同努力下,Flink CDC 2.2 版本正式发布了:https://github.com/ververica/flink-cdc-connectors/releases/tag/release-2.2.0

2.2 版本共有 34 位社区贡献者参与贡献,累计贡献了 110+ commits。一图胜千言,本文通过下图带你一分钟快速了解 Flink CDC 2.2 版本的重大改进和核心特性。

img

  • 2.2 版本新增 OceanBase,PolarDB-X,SqlServer,TiDB 四种数据源接入,均支持全量和增量一体化同步。 至此,Flink CDC 已支持 12 种数据源。
  • Flink CDC 兼容 Flink 1.13 和 Flink 1.14 两个大版本,2.2 版本的所有 Connector 都支持跑在 Flink 1.13. 或 Flink 1.14. 的集群上。
  • 提供增量快照读取框架,方便其他连接器接入,其他连接器采用该框架后,便可以提供无锁算法,并发读取,断点续传等功能。
  • MySQL CDC 支持动态加表,该功能可以在无需重新读取已有表的基础上,增加需要监控的表,添加的表会自动先同步该表的全量数据再无缝切换到同步增量数据。
  • MongoDB CDC 支持正则表达式过滤集合,该功能可以让用户在作业中指定所需监控的库名和集合名,用户可以用一个作业中监控多个数据库或多个集合。

二、新增 4 种数据源支持

Flink CDC 2.2 版本新增了 OceanBase CE,PolarDB-X,SqlServer,TiDB 四种数据源接入。其中新增 OceanBase CDC,SqlServer CDC,TiDB CDC 三个连接器,而 PolarDB-X 的支持则是通过对 MySQL CDC 连接器进行兼容适配实现。

  • OceanBase CE

OceanBase CE[3]是一款开源分布式数据库管理系统,同时支持在线事务处理与在线分析处理。OceanBase CDC 的实现机制是全量部分通过 JDBC 读取表中的历史数据,增量部分则是通过 OceanBase 提供 LogProxy Client 获取增量变更数据。

  • PolarDB-X

PolarDB-X[4] 是一款云原生分布式数据库系统。PolarDB-X 高度兼容 MySQL 系统及生态等特点, 其内部的日志节点提供了完全兼容 MySQL Binlog 格式和协议的增量消费能力。这些特性使得 PolarDB-X 通过适配 MySQL CDC 即可快速接入 Flink CDC,PolarDB-X 的支持正是通过 MySQL CDC 适配实现,这种方式接入代价相对较小,但却可以获取 MySQL CDC 连接器的全部能力。

  • SqlServer

SqlServer[5] 是一种使用广泛的数据库, SqlServer CDC 连接器支持捕获并记录 SqlServer 数据库服务器中发生的行级变更,其原理是使用 SqlServer 自身提供的 CDC 特性,SqlServer自身提供的 CDC 能力可以将数据库中指定的变更存档到指定的 change tables 中。 SqlServer CDC 连接器首先通过 JDBC 读取表中的历史数据,再从 change tables 中或缺增量变更数据,从而实现全增量同步。

  • TiDB

TiDB[6] 是一款开源分布式关系型数据库,同时支持在线事务处理与在线分析处理。TiDB CDC 的原理是通过直接读取其底层 TiKV 存储中的全量数据和增量数据实现数据捕获,其中全量部分是通过按 key 划分 range 读取,增量部分使用 TiDB 提供的 CDC Client 获取增量变更数据。

三、详解核心 feature 和重要改进

3.1 核心 feature

  • 提供增量快照读取框架

大家都知道之前只有 MySQL CDC 支持无锁 + 多并发 + 全程断点续传等高级功能,这些功能最开始是在 2.0 版本中为 MySQL CDC 定制的增量快照读取算法实现,2.2 版本将增量快照读取算法抽象成了公共框架,方便其他 connector 接入。

img

在增量框架完成后,其他 connector 只需要接入这个框架便可以提供无锁算法,并发读取,断点续传的能力。社区提供了一个基于增量快照框架的样例实现[7],开发者可以参考该样例实现一个支持增量快照读取的 CDC Source。

  • 兼容 Flink 1.13 & Flink 1.14

在 2.2 版本之前,Flink CDC 连接器都只对应一个 Flink 大版本,比如很多用户反馈 Flink CDC 2.1 只能在 Flink 1.13 版本的集群上使用,没法在 Flink 1.14 的集群上使用。为了帮用户解决此类问题, Flink CDC 2.2 版本兼容 Flink 1.13. 和 Flink 1.14. 两个大版本,这意味 2.2 版本的所有 Connector 既可以跑在 Flink 1.13. 集群上,又可以跑在 Flink 1.14. 的集群上。通过提供兼容多版本的能力,让 Flink CDC 在提供 1.14 支持的同时,还极大地降低用户的 connector 管理成本。

  • MySQL CDC 支持动态加表

设想下假如你一个 CDC pipeline 监控了 4 张表,突然有天业务需求需要再加几张表,你肯定不想另起作业 (浪费资源),那么这个 feature 可以让你在当前作业直接增加需要监控的表。新增表都是先做全量再优雅地切换到增量,遇到新增监控表时不用新起作业,极大地节约了资源。Flink CDC 网站也提供了该功能的使用文档[2],用户在开发时可以参考。

  • MongoDB CDC 支持自定义数据库,自定义集合

在 2.1 版本里 MongoDB CDC 只能捕获单个集合或者单个 DB 下的全部集合,2.2 版本提供了正则匹配支持,用户可以指定自己需要的多个库和多个表。

  • MySQL CDC 支持 MySQL 5.6

从 2.2 版本开始, MySQL CDC 支持了 MySQL 5.6 版本,满足低版本的 MySQL 用户需求。

3.2 重要改进

  • MySQL CDC 通过心跳信息解决 binlog 过期问题

大家可能遇到过 binlog 过期问题,这种问题一般出现在更新缓慢的表身上,这是因为 state 中记录的慢表位点总是最后一次更新的位点,假如 MySQL server 端只保留最近 1 天的 binlog,而某个慢表最近一天都没有更新过,那么 state 中记录的该表位点还是一天以前的位点,当 MySQL server 清理 binlog 后,作业再次访问该位点就会报 binlog 无法找到的错误。2.2 版本中通过内部的心跳机制传递 binlog 的最新位点,将 state 中的位点从慢表对应的位点改成全局 binlog 最新位点,避免了慢表 binlog 过期问题。

  • MySQL CDC 修复数组越界问题

该问题的根因是 MySQL CDC 依赖的第三方 binlog Client 存在数组越界 Bug,且是一个和网络相关的不稳定复现 Bug。在 Flink CDC 2.2 版本中,社区对这个问题做了修复,提升了MySQL CDC binlog 读取阶段的稳定性。

  • Oracle CDC 修复 Numeric 类型映射问题

在 2.1 版本,Oracle CDC 在处理 Numeric 类型数据会出现转换异常,在 2.2 版本中做了修复。

四、总结和展望

作为一个发起时间不到两年的新兴项目,Flink CDC 项目取得了现象级的发展和关注,这得益于 Flink CDC 开源社区所有贡献者们的无私贡献和开源布道, 更离不开广大 Flink CDC 用户群体的积极反馈。作为 2022 年的第一个版本,Flink CDC 给大家带来如此多的技术改进和核心特性,相信这些改进能够帮助广大的开发者和用户在各自的领域获得更多突破。Flink CDC 社区将会继续做好开源社区建设,在接下来的社区规划中,主要有四个方向。

  • 完善 CDC 技术

推动增量快照框架在各个 CDC 连接器的使用,让更多的数据源快速支持无锁读取、并发读取、断点续传、动态加表等特性。

  • 扩展数据集成场景

CDC 只是解决一个 source 问题,很多业务需要结合整个数据场景全局地设计方案,比如更好地集成实时数仓、数据湖的下游生态,包括 Hudi、Iceberg、ClickHouse、Doris等。

进一步降低 CDC 数据入湖入仓的门槛,解决整库同步、表结构变更同步等痛点。

  • 提升 Connector 性能

现有一些 Connector 在海量数据场景,大规模生产业务场景下,存在一定的性能问题,需要社区投入更多的开发者打磨。

  • 扩大数据库生态

支持更多的数据库,如 DB2, Vitness 等。

致谢:

感谢所有为该版本做出贡献的 34 位社区贡献者,特别感谢来自 OceanBase 团队的 He Wang 贡献的 OceanBase CDC 连接器,来自大健云仓公司的 gongzhognqiang 贡献的 Sqlserver CDC 连接器,来自云账户公司的 eastfisher 贡献的 TiDB CDC 连接器, 来自 PolarDB-X 团队的 hele.kc 对 PolarDB-X 支持与适配。

完整贡献者列表:

Dian Qi, He Wang, Jark Wu, Jiabao Sun, Jingsong Lee, Junwang Zhao, Konstantin Knauf, Leonard Xu, Mustang Kong, Paul Zhang, Qingsheng Ren, Sergey Nuyanzin, Shengkai, Tuple, Xianxun Ye, Xuebing Li, Zongwen Li, camelusluo, eastfisher, ehui, fangpc, gongzhongqiang, hele.kc, hiscat, luoyuxia, paul8263, skylines, szgeqin, taox, tsreaper, wangxiaojing, wysstartgo, yexianxun, 元组 (从commit 信息提取,按字母排序)

[1] https://github.com/ververica/flink-cdc-connectors

[2] https://open.oceanbase.com

[3] https://polardbx.com

[4] https://www.microsoft.com/en-us/sql-server

[5] https://docs.pingcap.com/zh/tidb/stable

线上 Flink CDC Meetup 筹备中


更多 Flink 相关技术问题,可扫码加入社区钉钉交流群
第一时间获取最新技术文章和社区动态,请关注公众号~

image.png

活动推荐

阿里云基于 Apache Flink 构建的企业级产品-实时计算Flink版现开启活动:
99 元试用 实时计算Flink版(包年包月、10CU)即有机会获得 Flink 独家定制卫衣;另包 3 个月及以上还有 85 折优惠!
了解活动详情:https://www.aliyun.com/product/bigdata/sc

image.png

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
1月前
|
存储 分布式计算 API
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
75 0
|
4天前
|
消息中间件 资源调度 关系型数据库
如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理
本文介绍了如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理。主要内容包括安装Debezium、配置Kafka Connect、创建Flink任务以及启动任务的具体步骤,为构建实时数据管道提供了详细指导。
21 9
|
2月前
|
算法 API Apache
Flink CDC:新一代实时数据集成框架
本文源自阿里云实时计算团队 Apache Flink Committer 任庆盛在 Apache Asia CommunityOverCode 2024 的分享,涵盖 Flink CDC 的概念、版本历程、内部实现及社区未来规划。Flink CDC 是一种基于数据库日志的 CDC 技术实现的数据集成框架,能高效完成全量和增量数据的实时同步。自 2020 年以来,Flink CDC 经过多次迭代,已成为功能强大的实时数据集成工具,支持多种数据库和数据湖仓系统。未来将进一步扩展生态并提升稳定性。
552 1
Flink CDC:新一代实时数据集成框架
|
2月前
|
消息中间件 canal 数据采集
Flink CDC 在货拉拉的落地与实践
陈政羽在Apache Asia Community Over Code 2024上分享了《货拉拉在Flink CDC生产实践落地》。文章介绍了货拉拉业务背景、技术选型及其在实时数据采集中的挑战与解决方案,详细阐述了Flink CDC的技术优势及在稳定性、兼容性等方面的应用成果。通过实际案例展示了Flink CDC在提升数据采集效率、降低延迟等方面的显著成效,并展望了未来发展方向。
524 14
Flink CDC 在货拉拉的落地与实践
|
3月前
|
Oracle 关系型数据库 新能源
Flink CDC 在新能源制造业的实践
本文撰写自某新能源企业的研发工程师 单葛尧 老师。本文详细介绍该新能源企业的大数据平台中 CDC 技术架构选型和 Flink CDC 的最佳实践。
441 13
Flink CDC 在新能源制造业的实践
|
30天前
|
数据挖掘 物联网 数据处理
深入探讨Apache Flink:实时数据流处理的强大框架
在数据驱动时代,企业需高效处理实时数据流。Apache Flink作为开源流处理框架,以其高性能和灵活性成为首选平台。本文详细介绍Flink的核心特性和应用场景,包括实时流处理、强大的状态管理、灵活的窗口机制及批处理兼容性。无论在实时数据分析、金融服务、物联网还是广告技术领域,Flink均展现出巨大潜力,是企业实时数据处理的理想选择。随着大数据需求增长,Flink将继续在数据处理领域发挥重要作用。
|
3月前
|
SQL 数据库 流计算
Flink CDC数据读取问题之一致性如何解决
Flink CDC 使用Change Data Capture (CDC)技术从数据库捕获变更事件,并利用Flink的流处理能力确保数据读取一致性。相较于传统工具,它具备全增量一体化数据集成能力,满足实时性需求。在实践中解决了高效数据同步、稳定同步大量表数据等问题。应用场景包括实时数据同步、实时数据集成等。快速上手需学习基本概念与实践操作。未来发展方向包括提升效率与稳定性,并依据用户需求持续优化。
114 1
|
3月前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版操作报错合集之遇到iava.lang.NoClassDefFoundError: ververica/cdc/common/utils/StrinaUtils错误,是什么导致的
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
4月前
|
SQL JSON 缓存
玳数科技集成 Flink CDC 3.0 的实践
本文投稿自玳数科技工程师杨槐老师,介绍了 Flink CDC 3.0 与 ChunJun 框架在玳数科技的集成实践。
590 7
玳数科技集成 Flink CDC 3.0 的实践
|
3月前
|
资源调度 关系型数据库 MySQL
【Flink on YARN + CDC 3.0】神操作!看完这篇教程,你也能成为数据流处理高手!从零开始,一步步教会你在Flink on YARN模式下如何配置Debezium CDC 3.0,让你的数据库变更数据瞬间飞起来!
【8月更文挑战第15天】随着Apache Flink的普及,企业广泛采用Flink on YARN部署流处理应用,高效利用集群资源。变更数据捕获(CDC)工具在现代数据栈中至关重要,能实时捕捉数据库变化并转发给下游系统处理。本文以Flink on YARN为例,介绍如何在Debezium CDC 3.0中配置MySQL连接器,实现数据流处理。首先确保YARN上已部署Flink集群,接着安装Debezium MySQL连接器并配置Kafka Connect。最后,创建Flink任务消费变更事件并提交任务到Flink集群。通过这些步骤,可以构建出从数据库变更到实时处理的无缝数据管道。
277 2

相关产品

  • 实时计算 Flink版
  • 下一篇
    无影云桌面