Canal Java 入门与使用
在如今时代数据是最关键的,大的数据量势必会影响用户体验,在我的日常开发中遇到了一个类似的问题,由于数据库中数据量过于庞大造成查询效率低,决定采用redis来存取最新的数据,由于系统为其它语言编写本人并不擅长,便采取canal来通过增量的方式更新数据。下面让我们了解一下canal。
1、什么是canal
- canal 直译为管道、渠道、水道,主要用途是基于 MySQL 数据库 增量日志 解析,提供 增量数据订阅和消费 。
以上介绍来自于官网介绍。我们可以简单把canal理解为一个同步增量数据的工具。
上图为官方给出的示意图,可以看到canal把自己伪装成一个mysql的slave,架起了MySQL与其他软件之间的桥梁。
canal的工作原理就是 把自己伪装成MySQL slave,模拟MySQL slave的交互协议向MySQL Mater发送 dump协议,MySQL mater收到canal发送过来的dump请求,开始推送binary log给canal,然后canal解析binary log,再发送到存储目的地 ,比如MySQL,Kafka,Elastic Search等等。
2、canal能做什么
canal能做什么换个说法就是数据同步有什么用?
由于canal数据同步不是全量同步,而是增量同步。基于binary log增量订阅和消费,canal