一,简介
有关canal的详细介绍可以到官网查看canal官网介绍。
二,工作原理
1,mysql的master-slave主从复制原理
2,canal的工作原理
canal模拟mysql的master-slave主从复制的交互协议,将自己伪装为一个slave节点,向mysql的master节点发送dump协议。
mysql的master节点接收到slave(canal)的dump请求,开始向slave(canal)推送 binary log 即binog。
caael将 binary log 对象解析成自己的数据类型(最初为字节流)。
3,canal的server-client交互
4,canal整体架构
5,canal部署模式
6,Springboot中集成canal
下载及配置canal server可从网上很多的其他博客中参考,这里就省略了。。。
pom文件中加入依赖
<dependency>
<groupId>com.alibaba.otter</groupId>
<artifactId>canal.client</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>com.alibaba.otter</groupId>
<artifactId>canal.protocol</artifactId>
<version>1.1.3</version>
</dependency>
yml中配置
canal:
server:
hostIp: 127.0.0.1
port: 11111
destination: example
username:
password:
batchSize: 1000
zkServers: 127.0.0.1:2181
定义一个canal client的基类,用于连接canal服务端,获取服务端监听到的binlog数据,对数据做基本的处理
package com.chen.microservice.canal;
import com.alibaba.otter.canal.client.CanalConnector;
import com.alibaba.otter.canal.protocol.CanalEntry;
import com.alibaba.otter.canal.protocol.Messa