同步实例配置详情
1 | ################################################# |
instance.properties介绍:
instance.properties参数列表:
参数名字 | 参数说明 | 默认值 |
---|---|---|
canal.instance.mysql.slaveId | mysql集群配置中的serverId概念,需要保证和当前mysql集群中id唯一 (v1.1.x版本之后canal会自动生成,不需要手工指定) | 无 |
canal.instance.master.address | mysql主库链接地址 | 127.0.0.1:3306 |
canal.instance.master.journal.name | mysql主库链接时起始的binlog文件 | 无 |
canal.instance.master.position | mysql主库链接时起始的binlog偏移量 | 无 |
canal.instance.master.timestamp | mysql主库链接时起始的binlog的时间戳 | 无 |
canal.instance.gtidon | 是否启用mysql gtid的订阅模式,详细见:【源码分析】Canal之Binlog的寻找过程 | false |
canal.instance.standby.gtid | mysql备库链接时对应的gtid位点 | 无 |
canal.instance.dbUsername | mysql数据库账户 | canal |
canal.instance.dbPassword | mysql数据库密码 | canal |
canal.instance.defaultDatabaseName | mysql链接时默认schema | |
canal.instance.connectionCharset | mysql数据解析编码 | UTF-8 |
canal.instance.enableDruid | 增加 目标数据库密码加密解密,采用druid方式进行加密解密 | false |
canal.instance.pwdPublicKey | 加密的公钥 | 无 |
canal.instance.tsdb.enable | 是否开启tablemeta的tsdb能力 | true |
canal.instance.tsdb.url | jdbc url的配置 | jdbc:mysql://127.0.0.1:3306/canal_tsdb |
canal.instance.tsdb.dbUsername | tsdb用户名 | canal |
canal.instance.tsdb.dbPassword | tsdb密码 | canal |
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.filter.field | 字段白名单 | ex:test1.t_product:id/subject/keywords,test2.t_company:id/name/contact/ch |
canal.instance.filter.black.field | 字段黑名单 | ex:test1.t_product:subject/product_image,test2.t_company:id/name/contact/ch |
canal.instance.rds.instanceId | aliyun rds对应的实例id信息 (如果不需要在本地binlog超过18小时被清理后自动下载oss上的binlog,可以忽略该值) |
无 |
canal.instance.rds.accesskey | aliyun rds对应的实例 accessKey | 无 |
canal.instance.rds.secretkey | aliyun rds对应的实例 secretKey | 无 |
canal.mq.topic | 消息队列所对应的topic名称(单topic时使用) | Example |
canal.mq.partitionHash | 散列规则定义,库名.表名:唯一主键,比如schema.table.id。多个表之间需要用, 隔开 |
test.table:id^name,.*\\..* |
canal.mq.partitionsNum | 散列模式下的分区数 | 3 |
canal.mq.partition | 单队列模式的分区下标 | 0 |
canal.mq.dynamicTopic | 针对库名或者表明发送动态的topic,需要kafka设置自动创建topic(多topic时使用) | mytest1.user,mytest2\\..*,.*\\..* |
注意点:
mysql链接时的起始位置
canal.instance.master.journal.name + canal.instance.master.position : 精确指定一个binlog位点,进行启动
canal.instance.master.timestamp : 指定一个时间戳,canal会自动遍历mysql binlog,找到对应时间戳的binlog位点后,进行启动
不指定任何信息:默认从当前数据库的位点,进行启动。(show master status)
mysql解析关注表定义
标准的Perl正则,注意转义时需要双斜杠:\
mysql链接的编码
目前canal版本仅支持一个数据库只有一种编码,如果一个库存在多个编码,需要通过filter.regex配置,将其拆分为多个canal instance,为每个instance指定不同的编码