一、canal
在大数据学习中,我们不仅要把数据保存在数据库中,还要同步保存到Elastic Search、HBase、Redis等等
canal可以很方便地同步数据库的增量数据到其他的存储应用
canal概述
canal,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。
增量日志 增量数据订阅和消费。
工作原理:
把自己伪装成My SQL slave,模拟MySQL slave的交互协议向MySQL Mater发送 dump协议,MySQL mater收到canal发送过来的dump请求,开始推送binary log给canal,然后canal解析binary log,再发送到存储目的地,比如MySQL,Kafka,Elastic Search等等。
canal能做什么
基于binary log增量订阅和消费,数据同步不是全量的,而是增量
- 数据库镜像
- 数据库实时备份
- 索引构建和实时维护
- 业务cache(缓存)刷新
- 带业务逻辑的增量数据处理
二、CDC
Change Data Capture,变动数据获取的简称
与数据库迁徙工具对比
CDC ----> 增长型的数据库,并且修改较少(eg:订单表)
迁徙 ----> 增量 / 全量 时效性较差 (eg: 用户信息表)
四种方式:
基于时间戳的CDC、基于触发器的CDC、基于快照的CDC 和 基于日志的CDC,其中前三种是侵入式的。
binlog( 基于日志的CDC)
binglog概述
MySQL数据库的一种日志形式,作用是记录MySQL中DDL和DML
需要手动开启,但是对应MySQL有一定的性能损耗