CDC 是 Change Data Capture(变更数据获取)的简称。核心思想是,监测并捕获数据库的

变动(包括数据或数据表的插入、更新以及删除等),将这些变更按发生的顺序完整记录下

来,写入到消息中间件中以供其他服务进行订阅及消费。

CDC 主要分为基于查询和基于 Binlog 两种方式,这两种之间的区别:

基于查询的 CDC

基于 Binlog 的 CDC

开源技术

Datax、Sqoop、Kafka JDBC Source

Canal、Maxwell、Debezium、Flink CDC

执行模式

Batch

Streaming

延迟性

高延迟

低延迟

是否增加数据库压力

基于查询的 CDC 就不做介绍了,下文主要介绍一下 Flink 社区开源的 Flink CDC:

Flink 社区开发了 flink-cdc-connectors 组件,这是一个可以直接从 MySQL、PostgreSQL

等数据库直接读取全量数据和增量变更数据的 source 组件。目前也已开源,开源地址:

https://github.com/ververica/flink-cdc-connectors

社区文档:CDC Connectors for Apache Flink® — CDC Connectors for Apache Flink® documentation

下面根据官方网站提供的教程,体验一下 Flink CDC

安装 Docker 环境

创建文件 docker-compose.yml

version: '2.1'
services:postgres:image: debezium/example-postgres:1.1ports:- "5432:5432"environment:- POSTGRES_PASSWORD=1234- POSTGRES_DB=postgres- POSTGRES_USER=postgres- POSTGRES_PASSWORD=postgresmysql:image: debezium/example-mysql:1.1ports:- "3306:3306"environment:- MYSQL_ROOT_PASSWORD=123456- MYSQL_USER=mysqluser- MYSQL_PASSWORD=mysqlpwelasticsearch:image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2environment:- cluster.name=docker-cluster- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms512m -Xmx512m"- discovery.type=single-nodeports:- "9200:9200"- "9300:9300"ulimits:memlock:soft: -1hard: -1nofile:soft: 65536hard: 65536kibana:image: elastic/kibana:7.6.0ports:- "5601:5601"

使用命令,启动容器

docker-compose up -d

准备 Flink 环境

1.安装 Flink

访问页面 Index of /flink 这里选择 Flink 13.3

2.安装SQL连接器

下载下面列出的依赖包,并将它们放到目录 flink-1.13.3/lib/ 下:

  • flink-sql-connector-elasticsearch7_2.11-1.13.3.jar
  • flink-sql-connector-mysql-cdc-2.0.2.jar
  • flink-sql-connector-postgres-cdc-2.0.2.jar

3.准备数据

连接 mysql

docker-compose exec mysql mysql -uroot -p123456

创建表结构 & 数据

-- MySQL
CREATE DATABASE mydb;
USE mydb;
CREATE TABLE products (id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255) NOT NULL,description VARCHAR(512)
);
ALTER TABLE products AUTO_INCREMENT = 101;INSERT INTO products
VALUES (default,"scooter","Small 2-wheel scooter"),(default,"car battery","12V car battery"),(default,"12-pack drill bits","12-pack of drill bits with sizes ranging from #40 to #3"),(default,"hammer","12oz carpenter's hammer"),(default,"hammer","14oz carpenter's hammer"),(default,"hammer","16oz carpenter's hammer"),(default,"rocks","box of assorted rocks"),(default,"jacket","water resistent black wind breaker"),(default,"spare tire","24 inch spare tire");CREATE TABLE orders (order_id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,order_date DATETIME NOT NULL,customer_name VARCHAR(255) NOT NULL,price DECIMAL(10, 5) NOT NULL,product_id INTEGER NOT NULL,order_status BOOLEAN NOT NULL -- Whether order has been placed
) AUTO_INCREMENT = 10001;INSERT INTO orders
VALUES (default, '2020-07-30 10:08:22', 'Jark', 50.50, 102, false),(default, '2020-07-30 10:11:09', 'Sally', 15.00, 105, false),(default, '2020-07-30 12:00:30', 'Edward', 25.25, 106, false);

连接 postgres

docker-compose exec postgres psql -h localhost -U postgres

创建表结构 & 数据

CDC是什么?有没有合适的技术方案?相关推荐

  1. 毫米波雷达分类和技术方案

    毫米波雷达分类和技术方案 一.什么是毫米波? 毫米波是一项可用于检测物体并提供物体的距离.速度和角度信息的传感技术.这是一项非接触式技术,工作频谱范围为 30GHz 至 300GHz.由于该技术使用较 ...

  2. 开发一个大型后台管理系统,应该用前后端分离的技术方案吗?

    话说这天,我们团队开会讨论了一个问题,不,与其说"讨论",不如说"争吵"更合适. 背景是这样的: 我们要开发一个 xxx 后台管理系统,这个系统业务复杂.功能又 ...

  3. 极市电大 | 京东AI时尚挑战赛Top3技术方案

    一.京东AI时尚挑战赛Top3﹀ 北京时间2018年9月16日,由京东AI平台与研究部发起的从七月开始的京东AI时尚挑战赛正式在ChinaMM2018大会上圆满落幕! 大会现场 而经过两个多月的角逐, ...

  4. 2020年大学生电子设计竞赛,B题,单相在线式不间断电源,详细技术方案!

    点击上方"大鱼机器人",选择"置顶/星标公众号" 福利干货,第一时间送达! 概述 2020年全国大学生电子设计竞赛基本落下帷幕. 上一篇出了:「电赛分享」电源题 ...

  5. 被同事嘲笑说技术方案没深度?

    大家好,我是Z哥. 程序员群体中有个很好玩的现象. 工作年限短的程序员热衷于设计"高大上"的技术方案,而工作年限长的则对技术方案好像不太感冒,上手就撸代码. 然后呢,年限短的程序员 ...

  6. 开发一个大型后台管理系统,真的需要用前后端分离的技术方案吗?

    话说这天,我们团队开会讨论了一个问题,不,与其说"讨论",不如说"争吵"更合适. 背景是这样的: 我们要开发一个 xxx 后台管理系统,这个系统业务复杂.功能又 ...

  7. 搭建视频网站的技术方案

    一.视频网站和普通网站的区别 搭建视频网站和搭建普通网站,在技术实现方案上有很大的差别,因此,当有人问我是否可以采用搭建普通网站的方法搭建视频网站时,我会明确的告诉他们不可以,否者就贻笑大方了. 视频 ...

  8. 【Web技术】1159- 浅析 Web 录屏技术方案与实现

    前言 随着互联网技术飞速发展,网页录屏技术已趋于成熟.例如可将录屏技术运用到在线考试中,实现远程监考.屏幕共享以及录屏等:而在我们开发人员研发过程中,对于部分偶发事件,异常监控系统仅仅只能告知程序出错 ...

  9. Flowable工作流引擎技术方案

    应对越来越多的工作流使用场景,以及越来越灵活的业务情形,我们亟需对工作流引擎进行一次重构优化.目前市场上主流的工作流引擎,一种是我们熟知的activiti,另外一种就是flowable.众所周知,fl ...

最新文章

  1. Linux内核移植之三:内核配置选项
  2. 【机器学习】集成学习代码练习
  3. FastDFS_install_document_detail
  4. 【简便解法】1090 危险品装箱 (25分)_33行代码AC
  5. 引用和指针-内存的分配方式有几种
  6. 手把手教你使用CocoaPods管理你的iOS第三方开源类库
  7. 95-38-035-Buffer-AbstractByteBuf
  8. 千亿级照片,毫秒间匹配最佳结果,微软开源 Bing 搜索背后的关键算法
  9. kubernetes NodeIP、PodIP、ClusterIP的区别和联系
  10. windows10安装oracle10 g客户端
  11. 动态获取API函数地址
  12. C语言中callback回调函数,知识分享:C 语言函数指针之回调函数
  13. 灵感专题—2019年优秀网页设计作品赏析#5月
  14. 【175】Easy CHM的使用
  15. Linux下文件夹下子文件全部复制到多个文件夹中
  16. 小米路由器r2d_小米路由器二代R2D怎样设置无线中继模式
  17. mac安装正在计算机,出现“无法在计算机上安装macOS”错误时该怎么办?
  18. W3C(万维网联盟)
  19. react native 文本只显示两行
  20. Mysql之笛卡尔积

热门文章

  1. matlab 线性系统响应,MATLAB实验二线性系统时域响应分析.doc
  2. 工业网关下的智慧楼宇整体监测解决方案
  3. 大陆--护照正则表达式
  4. 使用Scrapy框架爬取微医H5数据
  5. 全球首个用青蛙细胞制造“活体机器人”诞生,遭破坏时可自愈!
  6. Sonar中的技术债务简要了解
  7. word2010如何生成目录
  8. 友情链接作用与方法详解
  9. 操作系统 内存管理机制
  10. J-Link Device Support Kit