抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

同步实例配置详情

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#################################################
## 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:3306
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=
# 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,.*\\..*
#################################################

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\\..*,.*\\..*

注意点:

  1. mysql链接时的起始位置

    canal.instance.master.journal.name + canal.instance.master.position : 精确指定一个binlog位点,进行启动

    canal.instance.master.timestamp : 指定一个时间戳,canal会自动遍历mysql binlog,找到对应时间戳的binlog位点后,进行启动

    不指定任何信息:默认从当前数据库的位点,进行启动。(show master status)

  2. mysql解析关注表定义

    标准的Perl正则,注意转义时需要双斜杠:\

  3. mysql链接的编码

    目前canal版本仅支持一个数据库只有一种编码,如果一个库存在多个编码,需要通过filter.regex配置,将其拆分为多个canal instance,为每个instance指定不同的编码

评论