新增用户和权限
1 | # 新增用户 |
编译包
编译1
2
3git clone git@github.com:alibaba/canal.git
git co canal-$version #切换到对应的版本上
mvn clean install -Denv=release
解压部署1
2
3
4# 启动
./startup.sh
# 关闭
./stop.sh
canal配置
文件:canal.properties
canal.destinations
当前server上部署的instance列表,多个以逗号隔开canal.ip
canal server绑定的本地IP信息,如果不配置,默认选择一个本机IP进行启动服务canal.register.ip
canal server注册到外部zookeeper、admin的ip信息 (针对docker的外部可见ip)canal.port
canal server提供socket服务的端口,默认11111canal.instance.memory.batch.mode
canal内存store中数据缓存模式- ITEMSIZE : 根据buffer.size进行限制,只限制记录的数量
- MEMSIZE : 根据buffer.size * buffer.memunit的大小,限制缓存记录的大小
canal.instance.memory.buffer.size
canal内存store中可缓存buffer记录数,需要为2的指数canal.instance.memory.buffer.memunit
内存记录的单位大小,默认1024即1KB,和buffer.size组合决定最终的内存使用大小canal.instance.filter.query.dcl
是否忽略dcl语句,默认false,比如grant/create user等canal.instance.filter.query.dml
是否忽略DML的query语句,比如insert/update/delete table。canal.instance.filter.query.ddl
是否忽略DDL的query语句,比如create table/alater table/drop table/rename table/create index/drop index。(目前支持的ddl类型主要为table级别的操作,create databases/trigger/procedure暂时划分为dcl类型)canal.instance.binlog.format
支持的binlogFormat,如果设置会执行强校验。默认无,可以设置ROW,STATEMENT,MIXED。canal.instance.filter.rows
是否忽略dml的数据变更事件(主要针对用户只订阅ddl/dcl的操作)canal.user
canal数据端口订阅的ACL配置;如果为空,代表不开启canal.passwd
canal数据端口订阅的ACL配置;如果为空,代表不开启
instance配置
文件:instance.properties参数列表:
canal.instance.master.address
mysql主库链接地址canal.instance.master.journal.name
mysql主库链接时起始的binlog文件canal.instance.master.position
mysql主库链接时起始的binlog偏移量canal.instance.master.timestamp
mysql主库链接时起始的binlog的时间戳canal.instance.dbUsername
mysql数据库帐号canal.instance.dbPassword
mysql数据库密码canal.instance.defaultDatabaseName
mysql链接时默认schemacanal.instance.filter.regex
mysql 数据解析关注的表,Perl正则表达式.
多个正则之间以逗号(,)分隔,转义符需要双斜杠(\)
常见例子:- 所有表:. or .\..*
- canal schema下所有表: canal\..*
- canal下的以canal打头的表:canal\.canal.*
canal schema下的一张表:canal\.test1
多个规则组合使用:canal\..*,mysql.test1,mysql.test2 (逗号分隔)
canal.instance.filter.black.regex
mysql数据解析表的黑名单,表达式规则见白名单的规则
起始位置
canal.instance.master.journal.name+canal.instance.master.position
精确指定一个binlog位点,进行启动
canal.instance.master.timestamp
指定一个时间戳,canal会自动遍历mysql binlog,找到对应时间戳的binlog位点后,进行启动。
不指定任何信息
默认从当前数据库的位点,进行启动。(show master status)