Canal配置

新增用户和权限

1
2
3
4
5
6
7
8
9
10
# 新增用户
CREATE USER canal IDENTIFIED BY 'canal';

# 授权REPLICATION权限
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
FLUSH PRIVILEGES;
# check
show grants for 'canal';
# 查看当前db binlog文件
show binary logs ;

编译包

编译

1
2
3
git 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服务的端口,默认11111

  • canal.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链接时默认schema

  • canal.instance.filter.regex
    mysql 数据解析关注的表,Perl正则表达式.
    多个正则之间以逗号(,)分隔,转义符需要双斜杠(\)
    常见例子:

    1. 所有表:. or .\..*
    2. canal schema下所有表: canal\..*
    3. canal下的以canal打头的表:canal\.canal.*
    4. canal schema下的一张表:canal\.test1

    5. 多个规则组合使用: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)

------ 本文结束------

本文标题:Canal配置

文章作者:Perkins

发布时间:2019年11月29日

原始链接:https://perkins4j2.github.io/posts/60983/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。