canal配置加载方式
配置加载的两种方式
- ManagerCanalInstanceGenerator:通过网络读取canal的相关配置信息
SpringCanalInstanceGenerator:基于本地spring的xml文件获取配置
ManagerCanalInstanceGenerator方式
SpringCanalInstanceGenerator方式
这种方式的配置抽象为2个部分:
- xxx-instance.xml:多个instance共享
- instance.properties:每个instance独占一份
通过Spring的PropertyPlaceholderConfigurer通过机制将其融合,生成一份instance实例对象。
properties文件的分类
- canal.properties:系统根配置文件,定义canal-server的配置以及每个instance的一些公共配置
instance.properties:每个instance一份,定义各自instance的配置信息
canal.properties介绍
一份canal.properties分为两大块定义:
- instance列表定义:列出canal-server上有哪些instance以及每个instance的加载方式
- common参数定义:每个instance.properties的公用参数配置在这里
instance列表配置项
| 配置项 | 参数说明 | 默认值 | 配置方式 | | —- | —- | —- | —- | | canal.destinations | 指定当前server上部署的instance列表 | 无 | accont,xxxx,xxx, | | canal.conf.dir | 配置文件所在的目录 | ../conf | | | canal.auto.scan | 开启自动扫描conf中的目录,并将conf/${目录名}中的目录名作为instance的名称,并监听相关目录信息变动 | true | true/false | | canal.auto.scan.interval | 自动扫描的间隔时间
单位s | 5 | | | canal.instance.global.mode | 全局加载的方式 | spring | | | canal.instance.global.lazy | 懒加载是否开启 | | true/false | | canal.instance.global.manager.address | mode=spring时用不到 | | | | canal.instance.global.spring.xml | 全局的spring配置方式的组件文件 | spring/memory-instance.xml | | | canal.instance.example.mode
canal.instance.example.lazy
canal.instance.example.spring.xml
…. | 标橙色的配置对全部instance有效。想要单独某个instance配置需要以
canal.instance.{name}.配置项 这种方式指定 | | | | canal.instance.tsdb.spring.xml | 全局的tsdb配置方式的组件文件 | spring/tsdb/h2-tsdb.xml | 这个默认配置就好,目前我不清楚其作用 |
common参数配置项
instance.properties的参数优先级高于common中的参数
参数名字 | 参数说明 | 默认值 | 配置方式 |
---|---|---|---|
canal.id | 每个canal server实例的唯一标识,暂无实际意义 | 1 | |
canal.ip | canal server绑定的本地IP信息,如果不配置,默认选择一个本机IP进行启动服务 | ||
canal.register.ip | canal注册到外部的ip信息(如注册到zk的地址) | ||
canal.port | canal server提供socket服务的端口 | ||
canal.zkServers | canal server链接zookeeper集群的链接信息 | ||
canal.zookeeper.flush.period | canal持久化数据到zookeeper上的更新频率,单位毫秒 | ||
canal.instance.memory.batch.mode | canal内存store中数据缓存模式 1. ITEMSIZE : 根据buffer.size进行限制,只限制记录的数量 2. MEMSIZE : 根据buffer.size * buffer.memunit的大小,限制缓存记录的大小 |
MEMSIZE | |
canal.instance.memory.buffer.size | mode=ITEMSIZE | ||
canal.instance.memory.buffer.memunit | mode=MEMSIZE | ||
canal.instance.fallbackIntervalInSeconds | canal发生mysql切换时,在新的mysql库上查找binlog时需要往前查找的时间,单位秒 说明:mysql主备库可能存在解析延迟或者时钟不统一,需要回退一段时间,保证数据不丢 |
||
canal.instance.detecting.enable canal.instance.detecting.sql canal.instance.detecting.interval.time canal.instance.detecting.retry.threshold canal.instance.detecting.heartbeatHaEnable |
canal检测instance的一些配置 |
| | |
| | | |
| | | |
| | | |
| | | |
| canal.instance.network.receiveBufferSize
canal.instance.network.sendBufferSize
canal.instance.network.soTimeout | 网络连接参数
| | |
| canal.instance.binlog.format | 支持的binlog format格式列表 | | |
| canal.instance.binlog.image | 支持的binlog image格式列表 | | |
| canal.admin.manager | canal链接canal-admin的地址 (v1.1.4新增) | | |
| canal.admin.port |
admin管理指令链接端口 (v1.1.4新增) | | |
| canal.admin.user | admin管理指令链接的ACL配置 (v1.1.4新增) | | |
| canal.admin.passwd |
admin管理指令链接的ACL配置 (v1.1.4新增) | 密码默认值为admin的密文 | |
| canal.user |
canal数据端口订阅的ACL配置 (v1.1.4新增)
如果为空,代表不开启 | | |
| canal.passwd |
canal数据端口订阅的ACL配置 (v1.1.4新增)
如果为空,代表不开启 | | |
instance.properties介绍
在canal.properties中指定了instance后,需要到conf文件夹下创建同名的目录,目录内放入instance.properties。
若canal.properties中未定义instance列表,但是开启了canal.auto.scan时,canal会将conf目录下的所有目录名作为instance,若目录下真的有instanc.properties文件,将会自动启动这个instance。conf目录下的目录的删除与新增都会触发instance的启停。
配置项 | 说明 | 默认值 | 配置方式 |
---|---|---|---|
canal.instance.mysql.slaveId | mysql集群配置中的serverId概念,需要保证和当前mysql集群中id唯一 (v1.1.x版本之后canal会自动生成,不需要手工指定) |
会自动生成 | |
canal.instance.master.address canal.instance.master.journal.name canal.instance.master.position canal.instance.master.timestamp canal.instance.master.gtid |
MySQL主库相关配置 | ||
canal.instance.gtidon | 是否启用mysql gtid的订阅模式 | ||
canal.instance.dbUsername canal.instance.dbPassword canal.instance.defaultDatabaseName canal.instance.connectionCharset |
指定数据库用户名密码默认连接库名 | ||
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 | 不同步哪些表,规则同上 | | |