实时采集Canal快速入门

目录

目录

目录

一. 简介

1. CDC是什么

2. CDC的使用场景有哪些?

3. 目前CDC的技术分类

基于查询的 CDC实现:

基于日志的 CDC:

4. Canal工作原理:

二 组件简介:

1. 组件canal-server

2.instance模块:

3. 主要参数介绍:

需要自己决定的必配项

2. 建议开启的可优化配置参数

三.快速入门示例:

四. 组件canal-adapt

配置介绍:


一. 简介

canal是一种面向 数据库 实时CDC(change data capture)技术。

1. CDC是什么

CDC是(change data capture),翻译过来就是 捕获数据变更。通常数据处理上,我们说的 CDC 技术主要面向 数据库的变更,是一种用于捕获数据库中数据变更的技术。

2. CDC的使用场景有哪些?

  1. 数据同步, 用于备份容灾
  2. 数据分发,一个数据源分发给多个下游存储( mysql, kafka, rabbitMQ, rocketMQ, ElasticSearch,Hbase等)
  3. 数据采集,面向数据仓库 / 数据湖 的ETL数据集成

3. 目前CDC的技术分类

根据实现机制可以分为两个方向,基于查询和基于日志。

  1. 基于查询是就是select进行全表扫描过滤出变更的数据
  2. 基于日志就是连续实时读取数据库的操作log,例如msyql的binlog
  • 基于查询的 CDC实现:

离线调度查询作业,批处理。把一张表同步到其他系统,每次通过查询去获取表中最新的数据

缺点:

  • 无法保障数据一致性,查的过程中有可能数据已经发生了多次变更;
  • 无法保障实时性,基于离线调度存在天然的延迟。

  • 影响数据库性能

  • 基于日志的 CDC:

实时消费日志,流处理。例如 MySQL 的 binlog 日志完整记录了数据库中的变更,可以把 binlog 文件当作流的数据源;

特点:

  • 保障数据一致性,因为 binlog 文件包含了所有历史变更明细;
  • 保障实时性,因为类似 binlog 的日志文件是可以流式消费的,提供的是实时数据。
  • 对数据库影响小。由于它是读取binlog,对数据库或者业务来说,都不是侵入式的。

FlinkCDC入门demo可以参考我的另一篇: FlinkCDC同步Mysql​​​​​​​ 
 

4. Canal工作原理:

canal是基于日志的CDC,实时性高,对数据库性能影响小(canal官网介绍大概有1%的影响)

它是连续实时读取mysql数据库的操作log(binlog)并解析发送到下游。大概过程如下

  • canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送 dump 协议
  • MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )
  • canal 解析 binary log 对象(原始为 byte 流)

 目前支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x、


二 组件简介:

  1. canal-server,采集源数据库的binlog,并发送到配置的目的存储。或者发送到指定的tcp端口等待客户端消费。。
  2. canal-adapt,集成的canal-client端。可以实现数据同步和ETL功能。消费上游组件(包括canal-server,kafka,TCP)。同步到目的存储(包括关系型数据库(mysql,postgresql,oracle),ES,Hbase)。且可全量同步源数据库到目标存储系统(但不建议使用全量同步,我实践中全量同步Mysql到mysql时通常会发生锁获取失败)。
  3. canal-admin,提供webUI, 方便canal-server集群部署和日志查看

将上图的细化

1. 组件canal-server

      架构:它负责采集数据库的binlog,并发送到配置的存储。那么它怎么采集多个数据库,发送到不同的存储地。它是由instance配置决定的。下图是canal-server的架构图,一个server可以有多个instance,每个instance对应着一个数据队列

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值