持续分享有用、有价值、精选的优质大数据干货
致力于打造全网最优质的大数据专题

目录

一、Flink CDC概述

(一)Flink CDC是啥

(二)⽀持的连接器

1、最新稳定版2.1.1⽀持列表

2、即将发布的2.2.0⽀持列表(master分⽀)

(三)支持的Flink版本

二、为什么需要Flink CDC

(一)传统CDC的不足

(二)Flink CDC采集方案

三、常见CDC方案比较

一、Flink CDC概述

(一)Flink CDC是啥

Flink CDC是Flink社区开发的flink-cdc-connectors 组件,这是⼀个可以直接从 MySQL、PostgreSQL 等数据库直接读取全量数据和增量变更数据的 source 组件。
        ⽬前也已开源,开源地址:
        https://github.com/ververica/flink-cdc-connectors
        以下是官⽹:
        https://ververica.github.io/flink-cdc-connectors/master/

(二)支持的连接器

1、最新稳定版2.1.1⽀持列表

2、即将发布的2.2.0支持列表(master分支)

(三)支持的Flink版本

二、为什么需要Flink CDC

(一)传统CDC的不足

传统的基于 CDC 的 ETL 分析中,数据采集⼯具是必须的,国外⽤户常⽤ Debezium,国内⽤户常⽤阿⾥开源的Canal,采集⼯具负责采集数据库的增量数据,⼀些采集⼯具也⽀持同步全量数据。采集到的数据⼀般输出到消息中间件如 Kafka,然后 Flink 计算引擎再去消费这⼀部分数据写⼊到⽬的端,⽬的端可以是各种 DB,数据湖,实时数仓和离线数仓。
        注意, Flink 提供了 changelog-json format,可以将 changelog 数据写⼊离线数仓如 Hive / HDFS;对于实时数仓, Flink ⽀持将 changelog 通过 upsert-kafka connector 直接写⼊ Kafka。

Flink CDC的基本理念就是去替换上图中虚线框内的采集组件和消息队列,从⽽简化传输链路,降低维护成本。同时更少的组件也意味着数据时效性能够进⼀步提⾼。

(二)Flink CDC采集方案

Flink CDC1.0主要想解决三个⽅⾯的问题:
(1)统⼀采集⼯具:封装Debezium⽀持主流的数据库
(2)简化ETL链路:将采集⼯具和Kafka整体替换
(3)降低使⽤⻔槛:⽀持Flink SQL⼤⼤降低使⽤⻔槛

基于FlinkCDC,我们只需要通过⼀个 Flink SQL 作业就完成了 CDC 的数据采集,加⼯和同步,下⾯是⼀个例⼦:

--需求:同步MySQL的orders表到TiDB的orders表
--1、定义MySQL中orders表的cdc源表
CREATE TABLE mysql_orders (
id INT NOT NULL,
product_id BIGINT,
...
PRIMARY KEY(id)
) WITH (
'connector' = 'mysql-cdc',
'hostname' = 'xx',
'port' = '3306',
'username' = 'xx',
'password' = 'xx',
'database-name' = 'xx',
'table-name' = 'orders'
);
--2、创建TiDB结果表
CREATE TABLE tidb_orders(
id INT NOT NULL,
product_id BIGINT,
...
PRIMARY KEY(id)
)
WITH (
'connector' = 'jdbc',
'url' = 'jdbc:mysql://localhost:3306/xx',
'table-name' = 'orders'
);
--3、从源表读取数据写⼊结果表
INSERT INTO tidb_orders
SELECT * FROM mysql_orders;

所以基于Flink CDC的⽅案是⼀个纯 SQL 作业,⼤⼤降低了降低了使⽤⻔槛。当然,我们也可以利⽤ Flink SQL 提供的丰富语法进⾏数据清洗、分析、聚合,⽽不仅仅是简单的数据同步。利⽤ Flink SQL 双流 JOIN、维表 JOIN、UDTF 语法可以⾮常容易地完成实时打宽,以及各种业务逻辑加⼯。

三、常见CDC方案比较

1、对⽐增量同步能⼒
        (1)基于⽇志的⽅式,可以很好的做到增量同步(准实时);
        (2)⽽基于查询的⽅式必须侵⼊业务才能做到增量同步的,⽽且是T+1的增量同步。

2、对⽐全量同步能⼒,基于查询或者⽇志的 CDC ⽅案基本都⽀持,除了 Canal。

3、⽽对⽐全量 + 增量同步的能⼒,只有 Flink CDC、 Debezium、 Oracle Goldengate ⽀持较好。

4、从架构⻆度去看,该表将架构分为单机和分布式,这⾥的分布式架构不单纯体现在数据读取能⼒的⽔平扩展上,更重要的是在⼤数据场景下分布式系统接⼊能⼒。例如 Flink CDC 的数据⼊湖或者⼊仓的时候,下游通常是分布式的系统,如 Hive、 HDFS、 Iceberg、 Hudi 等,那么从对接⼊分布式系统能⼒上看, Flink CDC 的架构能够很好地接⼊此类系统。

5、在数据转换 / 数据清洗能⼒上,当数据进⼊到 CDC ⼯具的时候是否能较⽅便的对数据做⼀些过滤或者清洗,甚⾄聚合?
        (1)在 Flink CDC 上操作相当简单,可以通过 Flink SQL 去操作这些数据;

(2)但是像 DataX、 Debezium 等则需要通过脚本或者模板去做,所以⽤户的使⽤⻔槛会⽐较⾼。

6、另外,在⽣态⽅⾯,这⾥指的是下游的⼀些数据库或者数据源的⽀持。 Flink CDC 下游有丰富的 Connector,例如写⼊到 TiDB、 MySQL、 Pg、 HBase、 Kafka、 ClickHouse 等常⻅的⼀些系统,也⽀持各种⾃定义connector。

持续分享有用、有价值、精选的优质大数据干货
致力于打造全网最优质的大数据专题

数据库数据采集利器FlinkCDC相关推荐

  1. DBA组件---ADO数据库编程利器

    DBA组件---ADO数据库编程利器 一.何谓DBA     DBA即Database Assistant,其实就是数据库编程助手.它是完全采用接口.OO理念用VB6.0编译的DLL COM组件.   ...

  2. mysql数据库监控程序_mysql数据库监控利器lepus天兔工具安装和部署

    需要的核心包如下: 以下软件包只需要部署在监控机即可.被监控机无需部署. 1.MySQL 5.0及以上(必须,用来存储监控系统采集的数据) 2.Apache 2.2及以上 (必须,WEB服务器运行服务 ...

  3. 轻量级数据库中间件利器Sharding-JDBC深度解析(有彩蛋)

    讲师介绍 张亮 当当架构部总监 负责分布式中间件和私有云平台建设 目前主导开源项目:Elastic-Job及Sharding-JDBC 主题简介: 1.关系型数据库中间件核心功能介绍 2.Shardi ...

  4. mysql 监控 开源_强大的开源企业级数据库监控利器Lepus

    Lepus监控简单介绍 开源企业级数据库监控系统 简洁.直观.强大的开源数据库监控系统,MySQL/Oracle/MongoDB/Redis一站式性能监控,让数据库监控更简单 简单介绍: Lepus( ...

  5. Maxwell数据库数据采集-大数据week12-DAY1-Maxwell

    文章目录 前言 Maxwell 数据库数据实时采集 1.Maxwell 简介 2.Mysql Binlog介绍 2.1 Binlog 简介 2.2 Binlog 的日志格式 3.Mysql 实时数据同 ...

  6. 强大的开源企业级数据库监控利器Lepus

    Lepus监控简单介绍 官方网站:http://www.lepus.cc 开源企业级数据库监控系统 简洁.直观.强大的开源数据库监控系统,MySQL/Oracle/MongoDB/Redis一站式性能 ...

  7. 数据库同步利器 otter 双A同步配置

    阿里 Otter 简单双A同步配置 环境准备: zookeeper manager.deployer-4.2.18 node.deployer-4.2.18 环境搭建: 启动zookeeper 启动 ...

  8. 【SQL管理】-Flyway数据库版本管理利器从入门到入味

    Flyway是什么? Flyway是独立于数据库的应用.管理并跟踪数据库变更的数据库版本管理工具.用通俗的讲,Flyway可以像Git管理不同人的代码那样,管理不同人的sql脚本,整个过程自动化,可回 ...

  9. 【一】ODB - C++ 访问数据库的利器--Hello World On Windows(Version-24)

    本文以MySQL数据库为例,其他数据类似. 官方文档和下载 ODB官方首页    官方开发者说明书(开发教程) 安装下载首页(下载与安装教程Windows/Linux) Windows安装步骤(都是英 ...

最新文章

  1. 什么是导师负责制_为什么一个导师是不够的
  2. CURL NDK 交叉编译
  3. 汇编语言 将a段和b段中的数据依次相加,结果存放在c段中
  4. 【下班后学Android】Android开发环境搭建
  5. 小程序学习(一):点击爱心变色 -- 最简单的事件实现
  6. linux 正则表达式和通配符
  7. 对话阿里云李飞飞:数据库迎来开源新时代 | 《新程序员》
  8. JS 获取WEB请求路径
  9. 再见!热血活力的深圳
  10. nodejs 简单安装环境
  11. C#中winform怎么在线预览PDF,预览网上的PDF控件!不用安装Adobe PDF Reader等等其他,方案记录
  12. RV减速器静力学和动力学仿真分析
  13. 抖音:时间熔炉的诞生
  14. python 绘制一维散点图
  15. mysql 删库跑路_如何避免删库跑路呢?mysql使用bin
  16. 2021高考成绩查询单科,2021年全国高考总分及各科分数
  17. 零基础想要快速的学好3D游戏建模,兼职接单私活,来看业内人士的分析
  18. j90度度复数运算_虚数i的运算公式及实际意义
  19. 去法国,买哪些伴手礼既有面子又不破费
  20. 4核处理器_Intel加速淘汰14nm处理器 4核6W奔腾/赛扬退役

热门文章

  1. 三分钟快速了解typeScript接口
  2. 计算机同一优盘记录,怎么查看电脑插过U盘的记录
  3. 炒菜机器人放食材的顺序_机器人能否消灭厨师这个职业?
  4. 莫队算法(小Z的袜子)
  5. 完美国际真数苹果_苹果手机:Checkm8漏洞永久性破解A5-A11设备 全线旧设备实现完美越狱...
  6. 一阶线性电路暂态分析的三要素法
  7. 汇编程序设计:代码转换程序
  8. 分享图片去水印几个工具-图片去除水印最好用的工具
  9. turtle绘制五角星
  10. Visual AssistX番茄助手的安装与基本使用