阿里的canal的使用

2022-04-14  本文已影响0人  天道changzai

部署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

上一篇 下一篇

猜你喜欢

热点阅读