第一步

从github上下载。
https://github.com/alibaba/canal/releases/
在这里插入图片描述

注:Mysql不用低于5.6

第二步

查看mysql的log_bin是否开启。因为canal是通过logbin监听更新的
在mysql中执行:
show variables like ‘%log_bin%’;
如果未开启,则出现以下内容:
log_bin off

如果未开启,找到mysql的my.ini文件。
打开文件后,添加以下内容
server_id=1 ###代表集群模式第一台机器
binlog_format=ROW ###行模式
log_bin=mysql_bin.log ###binlog的文件名称
expire-logs-days=14 ###失效日期为14天(可不配置)
max-binlog-size=500M ###最大存储500MB(可不配置)

配置完成后,重启Mysql。执行验证语句后得到以下结果
log_bin on

log_bin = ON 表示开启了

在这里插入图片描述

第三步

在mysql创建canal用户并赋予replication权限。创建用户赋予权限执行以下两条语句
#创建canal用户
create user canal identified by ‘canal’;
#授权
grant select,replication slave,replication client on*.* to ‘canal’@’%’;
grant all privileges on . TO ‘canal’@’%’;
flush privileges
注:如果授权语句执行报错。需要检查root有没有grant的权限

配置canal,打开canal.properties文件。
这里可以配置端口号、集群(集群依赖zk,需要配置zk地址)

第四步

配置监听数据库的信息。
首先将example 复制一份。比如复制后,名字改为book。

打开book下的instance.properties文件

可修改数据库地址
可配置用户名和密码(Canal的)
可设置监听的表

#################################################
## mysql serverId , v1.0.26+ will autoGen
# canal.instance.mysql.slaveId=0

# enable gtid use true/false
canal.instance.gtidon=false

# position info
canal.instance.master.address=127.0.0.1:3307
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=

# table meta tsdb info
canal.instance.tsdb.enable=true
#canal.instance.tsdb.url=jdbc:mysql://127.0.0.1:3306/canal_tsdb
#canal.instance.tsdb.dbUsername=canal
#canal.instance.tsdb.dbPassword=canal

#canal.instance.standby.address =
#canal.instance.standby.journal.name =
#canal.instance.standby.position =
#canal.instance.standby.timestamp =
#canal.instance.standby.gtid=

# username/password
canal.instance.dbUsername=canal
canal.instance.dbPassword=canal
canal.instance.connectionCharset = UTF-8
# enable druid Decrypt database password
canal.instance.enableDruid=false
#canal.instance.pwdPublicKey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALK4BUxdDltRRE5/zXpVEVPUgunvscYFtEip3pmLlhrWpacX7y7GCMo2/JM6LeHmiiNdH1FWgGCpUfircSwlWKUCAwEAAQ==

# 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

# mq config
canal.mq.topic=example
# dynamic topic route by schema or table regex
#canal.mq.dynamicTopic=mytest1.user,mytest2\\..*,.*\\..*
canal.mq.partition=0
# hash partition config
#canal.mq.partitionsNum=3
#canal.mq.partitionHash=test.table:id^name,.*\\..*
#canal.mq.dynamicTopicPartitionNum=test.*:4,mycanal:6
#################################################

五步

启动Canal,在bin目录下的startup.bat 文件

如果启动报错
可编辑startup.bat 文件,删除@rem
在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐