部署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目录下
bib目录下放的是启动和停止的脚本,如果需要调整jvm的参数,可以修改
canal.deployer的启动类就是CanalLauncher
conf目录下放的就是相关的配置
这里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>
修改对于canal的连接信息
CanalConnector connector = CanalConnectors.newSingleConnector(new InetSocketAddress("127.0.0.1", 11111), "accountUser", "", "");
启动改类,
修改mysql数据,插入数据,删除数据,就可以看到相应的变化
文档
https://github.com/alibaba/canal/wiki/QuickStart