CDC
2023-05-23 21:09:58 14 举报
AI智能生成
CDC
作者其他创作
大纲/内容
简介
是什么?
<b>CDC是(change data capture),翻译过来就是 捕获数据变更</b>。通常数据处理上,我们说的 CDC 技术主要面向 数据库的变更,是一种用于捕获数据库中数据变更的技术。
使用场景
<b>数据同步</b>, 用于备份容灾
<b>数据分发</b>,一个数据源分发给多个下游存储( mysql, kafka, rabbitMQ, rocketMQ, ElasticSearch,Hbase等)
<b>数据采集</b>,面向数据仓库 / 数据湖 的ETL数据集成
目前CDC技术分类
基于查询的 CDC实现
<b>离线调度查询作业,批处理</b>。把一张表同步到其他系统,每次通过查询去获取表中最新的数据
缺点<br>
<b>无法保障数据一致性</b>,查的过程中有可能数据已经发生了多次变更;
<b>无法保障实时性</b>,基于离线调度存在天然的延迟
<b>影响数据库性能</b>
基于日志的 CDC
<b>实时消费日志,流处理,</b>例如 MySQL 的 binlog 日志完整记录了数据库中的变更,可以把 binlog 文件当作流的数据源;
特点
<b>保障数据一致性</b>,因为 binlog 文件包含了所有历史变更明细;
<b>保障实时性</b>,因为类似 binlog 的日志文件是可以流式消费的,提供的是实时数据
<b>对数据库影响小</b>。由于它是读取binlog,对数据库或者业务来说,都不是侵入式的。
Canal
简介
canal [kə'næl],译意为水道/管道/沟渠,<b>主要用途是<font color="#e74f4c">基于MySQL数据库增量日志解析</font>,提供增量数据订阅和消费</b>
基于日志增量订阅和消费的业务
数据库镜像
数据库实时备份
索引构建和实时维护(拆分异构索引、倒排索引等)
业务 cache 刷新
带业务逻辑的增量数据处理
工作原理
Mysql工作原理
<br>
Canal的工作原理
- <b><font color="#e74f4c">canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议</font></b><br>- MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )<br>- canal 解析 binary log 对象(原始为 byte 流)
组件介绍
canal-server
采集源数据库的binlog,并发送到配置的目的存储。或者发送到指定的tcp端口等待客户端消费。
canal-adapt
集成的canal-client端。可以实现数据同步和ETL(数据仓储技术)功能。消费上游组件(包括canal-server,kafka,TCP)。同步到目的存储(包括关系型数据库(mysql,postgresql,oracle),ES,Hbase)。且可全量同步源数据库到目标存储系统(但不建议使用全量同步,我实践中全量同步Mysql到mysql时通常会发生锁获取失败)。<br>
canal-admin
提供webUI, 方便canal-server集群部署和日志查看
组件canal-server
架构:它负责采集数据库的binlog,并发送到配置的存储。那么它怎么采集多个数据库,发送到不同的存储地。它是由instance配置决定的。下图是canal-server的架构图,<b>一个erver可以有多个instance</b>,<b>每个nstance对应着一个数据队列</b>
instance模块
eventParser (数据源接入,模拟slave协议和master进行交互,协议解析)
eventSink (Parser和Store链接器,进行数据过滤,加工,分发的工作)
eventStore (数据存储)
metaManager (增量订阅&消费信息管理器)
主要参数介绍
canal.properties<br>
需要自己配置的参数
<br>
instance.properties
需要自己配置的参数
0 条评论
下一页
为你推荐
查看更多