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