阿里的canal的使用

部署canal.deployer

canal.deployer的作用就是监听binlog的变动,解释binlog分装成event

下载相应的jar包

canal的git:https://github.com/alibaba/canal

下载发布版本,我这里选择的是canal-1.1.5,地址:https://github.com/alibaba/canal/releases/tag/canal-1.1.5

配置

解压 canal.deployer-1.1.5.tar.gz

进入到canal.deployer-1.1.5目录下

canal.deployer

bib目录下放的是启动和停止的脚本,如果需要调整jvm的参数,可以修改

canal.deployer的启动类就是CanalLauncher

conf目录下放的就是相关的配置


canal的配置

这里accountUser目录是我自己重新建的

canal.properties 需要修改的就是destinations这块

修改配置
canal.destinations = example,accountUser


其他的zk、canal.admin、mq、kafka、rabbitmq、rocketmq有需要,可以配置,我这里没有用到就不配置

如果去需要新增一个自定义的监听,则需要在conf下新建一个目录,例如:order,再加order目录下,新增instance.properties的文件,最后再把刚才建立的目录名字配置在canal.properties文件的canal.destinations后面

例如:canal.destinations = example,accountUser,order


instance.properties文件的配置

#################################################

## mysql serverId , v1.0.26+ will autoGen

## canal是作为mysql的salve角色去连接mysql的,所以需要配置一个与mysql不一样的唯一的serverId

# 查看mysql的serverId

# SELECT @@server_id as SERVER_ID;

canal.instance.mysql.slaveId=123400000

# enable gtid use true/false

canal.instance.gtidon=false

# position info

# mysql master的地址

canal.instance.master.address=127.0.0.1:3306

canal.instance.master.journal.name=

canal.instance.master.position=

canal.instance.master.timestamp=

canal.instance.master.gtid=

# rds oss binlog

canal.instance.rds.accesskey=

canal.instance.rds.secretkey=

canal.instance.rds.instanceId=

# username/password

# 账号

canal.instance.dbUsername=root

canal.instance.dbPassword=12345678

canal.instance.connectionCharset = UTF-8

# enable druid Decrypt database password

# 是否启用druid数据池

canal.instance.enableDruid=false

# table regex

监听的库和表

canal.instance.filter.regex=.*\\..*

# table black regex

过滤的库和表

canal.instance.filter.black.regex=mysql\\.slave_.*

# table field filter(format: schema1.tableName1:field1/field2,schema2.tableName2:field1/field2)

#canal.instance.filter.field=test1.t_product:id/subject/keywords,test2.t_company:id/name/contact/ch

# table field black filter(format: schema1.tableName1:field1/field2,schema2.tableName2:field1/field2)

#canal.instance.filter.black.field=test1.t_product:subject/product_image,test2.t_company:id/name/contact/ch

#################################################

支持动态增加destination


启动

回到主目录下

执行

./bin/startup.sh

查看是否启动

tail -f logs/canal/canal.log


启动日志

canal.deployer的默认开放连接端口:11111

canal的数据保存,会在相应的destination增加两个文件

h2.mv.db和mate.dat


验证

自己建立一个maven项目

引入相应版本的canal-client

<dependency>

            <groupId>com.alibaba.otter</groupId>

            <artifactId>canal.protocol</artifactId>

            <version>1.1.5</version>

        </dependency>


拷贝📎UserCanalDemo.java

修改对于canal的连接信息

CanalConnector connector = CanalConnectors.newSingleConnector(new InetSocketAddress("127.0.0.1", 11111), "accountUser", "", "");


启动改类,

修改mysql数据,插入数据,删除数据,就可以看到相应的变化


文档

https://github.com/alibaba/canal/wiki/QuickStart

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容