Canal服务端部署教程 | 大专栏

关注
Canal服务端部署教程 | 大专栏www.shan-machinery.com 安装

下载所需版本的Canal:下载地址

本文使用版本为canal.deployer-1.1.3 alpha3,接下来以部署2台基于Zookeeper HA模式Canal为例

解压下载的文件

tar -xzf canal.deployer-1.1.3-SNAPSHOT.tar.gz

解压

配置

进入conf目录(BASEINFO_MHA是之后新建的,后面的文档会提到)

canal服务端配置文件修改

canal.properties为canal服务端全局配置文件要修改的部分如下

配置项值备注canal.id自定义每个canal server实例的唯一标识,暂无实际意义canal.zkServers172.16.40.201:2181,172.16.40.202:2181,172.16.40.203:2181ZK服务地址,多个以英文逗号分隔canal.destinationsBASEINFO_MHACanal实例名称,多个实例用英文逗号分隔,例如BASEINFO_MHA1,BASEINFO_MHA2canal.serverModeRocketMQ支持tcp, kafka, RocketMQ。tcp模式需要自己写消费端消费canal server数据canal.instance.global.spring.xmlclasspath:spring/default-instance.xmlZookeeper HA模式所需配置文件canal.instance.parser.paralleltrue是否使用并行解析。在Canal1.1.0中并行解析+GTID模式有bug,会导致丢数据,之后的版本已修复。canal.instance.filter.query.dcltrue是否忽略dcl(数据库控制语言,包括GRANT,DENY,REVOKE等语句)canal.instance.filter.query.ddlfalse是否忽略ddl(数据库定义语言,比如说:CREATE、ALTER、DROP等)canal.mq.servers172.16.40.202:9876;172.16.40.203:9876RocketMQ nameserver地址canal.mq.retries0发送失败重试次数canal实例配置文件修改

如上表配置了2个实例,则在conf目录下分别建立两个与实例同名文件夹。在两个文件夹内新建instance.properties文件

配置项值备注canal.instance.gtidontrue是否开启GTID模式canal.instance.master.address172.16.40.99:7066监控mysql master的IP地址(本例中监控的是vip)canal.instance.defaultDatabaseNamebaseinfomysql链接时默认schemacanal.instance.dbUsernamerootmysql用户canal.instance.dbPasswordmysqladminmysql密码canal.instance.connectionCharsetUTF-8字符集canal.instance.filter.regexbaseinfo\.user_netcert_detail监控规则正则表达式,多个规则以逗号分隔。如canal\.w1代表监听canal库的w1表,.*\..*代表监控所有库所有表。canal.instance.filter.black.regex可不指定监控黑名单规则canal.mq.topicctidc-mha-testmq里的topic名canal.mq.partitionsNum4散列模式的分区数canal.mq.partitionHashbaseinfo.user_netcert_detail:netcert_id散列规则定义。库名.表名 : 唯一主键,比如mytest.person: id

==canal.mq.partition 和 canal.mq.partitionsNum 这两个只能用一个,要注释掉其中一个==1.1.3版本支持partitionHash新语法,支持动态topic规则,参考Canal-Kafka-RocketMQ-QuickStart如果新建用户,需要做为mysql slave的相关权限

CREATE USER canal IDENTIFIED BY '[email protected]';GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;FLUSH PRIVILEGES;启停

修改restart脚本进入canal bin目录

#!/bin/bashcurrent_dir=`readlink -f $0 | xargs dirname`sh $current_dir/stop.shsh $current_dir/startup.sh

通过以下脚本进行启停

启动

在另一台服务器同样执行以上操作

运行状态查看

进入zookeeper

./zkCli.sh -server 172.16.40.201:2181

查看BASEINFO_MHA实例正在运行的服务端

get /otter/canal/destinations/BASEINFO_MHA/running

查看Canal集群节点

ls /otter/canal/destinations/BASEINFO_MHA/cluster

查看BASEINFO_MHA实例当前消费位点

get /otter/canal/destinations/BASEINFO_MHA/1001/cursor

https://www.shan-machinery.com