数据同步中间件Canal
2020-04-30 本文已影响0人
养一只tom猫
使用canal可以实现对数据进行收集,同步到NoSQL数据库等操作。
Canal简介
Canal是一个用于数据同步的中间件。
基于Java语言开发的,主要支持MySQL数据库,Canal会伪装成MySQL主库的从库,MySQL进行了增删改操作时,会把操作记录再binlog日志,而Canal会监听MySQL的binlog,在业务代码中可以指定监听哪一张表的数据变动(MySQL主库需要开启binlog日志)。
Canal基本执行流程:
MySQL----->binlog----->canal-server----->canal-client
可以在连接到canal-server服务的canal-client中获取MySQL数据,对数据进行操作。
简单理解Canal:
会对MySQL数据进行异步监控,是一款软件。
如何使用Canal
需要下载Canal的jar包,github:https://github.com/chenqian56131/spring-boot-starter-canal
在Spring Boot启动引导类上添加@EnableCanalClent
注解声明该服务是Canal的客户端。
需要在配置文件中指定canal的连接信息:
canal.client.instances.example.host=你canal服务的host
canal.client.instances.example.port=11111 #canal默认端口为11111
canal.client.instances.example.batchSize=1000
监听代码:
@CanalEventListener
public class CanalListener{
//设置监听的库名与表名
@ListenPoint(schema = "dbName", table = {"tableName"})
public void listener(CanalEntry.EventType eventType, CanalEntry.RowData rowData) {
System.err.println("广告数据发生变化");
//获取修改前行数据
rowData.getBeforeColumnsList();
//获取修改后行数据
rowData.getAfterColumnsList();
}
}
当你指定的那张表数据发生改变时,都会被canal监听到。