目录
1 canal简介
1.1 canal是什么
1.2 canal有什么用
2 canal搭建部署
2.1 下载
2.2 安装
2.3 配置
2.4启动
1 canal简介
1.1 canal是什么
canal是阿里巴巴开源的一款 基于DB数据增量变更的日志解析工具,简单点就是能监控所有DB的变更操作。
例如:你往一张表插入一条数据成功,如果你使用了canal,那么你在canal-client中就立马会知道有这么一条数据插入了。
1.2 canal有什么用
阿里巴巴最开始是用来作为跨机房数据同步的,但很多小伙伴可能会说这么高大上的操作,估计没我什么事。那这么想就错了,实际上他还能做很多其他的事情。
例如:
- 监控数据变更,将变动数据通知更新Elasticsearch搜索引擎。
- 监控业务数据变更(库,表),然后针对这个变更进行一系列的业务操作,比如:充值赠送,用户充值成功后,赠送一些其他的小东西,这个时候用他就很适合,没必要引入特别复杂的机制去维护一致性,也不需要加入到充值代码中使业务变的不单一,能够很好的解耦。
- 内部不同系统之间的数据同步,不需要将数据同步方法写入业务代码,还能保证最终一致。
2 canal搭建部署
2.1 下载
github下载地址:https://github.com/alibaba/canal 当前最新版本1.15 ,当前基本处于不怎么更新状态,但没关系,不更新也能用,现有功能足够了。
如果准备独立部署可以下载:https://github.com/alibaba/canal/releases canal.deployer-1.1.4.tar.gz 独立安装包,放入linux环境目录解压即可。
2.2 安装
将源码包下载到你需要安装的地址,然后解压出来:tar -xvf canal.deployer-1.1.4.tar.gz
这时候可以看到4个目录:bin(执行程序),conf(配置文件),logs(日志文件),lib(依赖jar)
2.3 配置
这是一份集群式,数据写入zk的配置,一般都是使用此模式,下篇会详细介绍各种模式和具体配置细节。
打开config-> canal.properties 将其中:
canal.ip=自己ip 192.168.1.1
canal.register.ip=自己ip 192.168.1.1
canal.zkServers=你的zk集群,多个以逗号隔开 例如 :192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181
canal.destinations=example(目标实例,自己随便写,但要和之后的配置文件目录对应)
canal.instance.global.spring.xml = classpath:spring/default-instance.xml
mq,kafka相关的都可以注释掉。
目标实例配置:每一个目标实例对应一个对DB的监控,比如监控2个不同的DB就需要配置2个。
打开config->example(自己配的目标实例目录)->instance.properties
canal.instance.master.address=db地址 192.168.1.110:3306
canal.instance.mysql.slaveId=随便设置一个,别和其他集群重复 比如机器ip
canal.instance.dbUsername=db账号
canal.instance.dbPassword=db密码
canal.instance.defaultDatabaseName=默认监控库名
canal.instance.filter.regex=.*\\..* 监控什么库,什么表。具体表达式说明 配置文件备注上有,仔细看。
简单说明下:.*\\..* 所有库,所有表。 a.test 表示a库的test表,多个表 a.test,a.test2。a\\.t_.* a库t_开头的所有表
所有配置完成。
2.4启动
进入目录 bin,执行 ./startup.sh 然后查看启动日志:logs/canal/canal.log 和你的实例日志:logs/example/example.log.
发现canal.log出现日志:
the canal server is running now ...... 正在启动
com.alibaba.otter.canal.deployer.CanalController - auto notify start example successful. example实例启动成功,即可。
如果有错误,根据错误日志解决问题并重新启动。重启前需要先进入bin目录执行./stop.sh
集群的话就是在其他机器上在按照相同的方式部署即可。一般2台就够了。