canal deployer 包 & canal adapter 包 参数详解(一)

1. 使用场景

  • canal deployer canal 标准包,可将其看做 canal server。它负责伪装成 mysql 从库,接收、解析 binlog 并投递到指定的目标端(RDSMQ canal adapter
  • canal adapter canal 的客户端,可将其看作 canal client。其中 RDB 包括 OracleMySQLPostgreSQLSQLServer 等数据库

2. canal deployer 包参数详解

2.1. canal deployer 包目录结构

tree canal 展开源码

  • bin —— 存放启动、重启、停止脚本
  • conf —— 配置文件目录
  • lib —— 存放库文件,不用操作该目录
  • logs —— 存放日志目录

2.2. conf 目录

tree canal conf 展开源码

  • canal.properties —— canal 程序主配置文件

argument

说明

默认值

示例(--为保持默认)

canal.ip

canal server绑定的本地IP信息,如果不配置,默认选择一个本机IP进行启动服务

canal.register.ip

canal server 向 zk 集群中注册的 ip

canal.port

canal server提供socket服务的端口

11111

--

canal.metrics.pull.port

监控接口端口(配合Prometheus使用)

11112

--

canal.admin.port

canal admin 的访问端口

11110

--

canal.admin.user

canal admin 的登陆用户

admin

--

canal.admin.passwd

canal admin 的登陆用户密码

--

canal.zkServers

zookeeper 服务器集群地址

--

canal.zookeeper.flush.period

canal持久化数据到zookeeper上的更新频率,单位毫秒

1000

--

canal.withoutNetty

是否关闭server端的netty服务

false

--

canal.serverMode

tcp:客户端通过tcp方式从Canal服务端拉取增量数据

kafka:Canal服务端将增量数据同步到kafka中,客户端从kafka消费数据,此时客户端感知不到Canal的存在,只需要跟kafka交互

RocketMQ:同kafka,增量数据同步到RocketMQ中

tcp

--

canal.file.data.dir

flush meta cursor/parse position to file。记录消费位点到文件,当使用spring/file-instance.xml配置文件时

${canal.conf.dir}

--

canal.file.flush.period

canal持久化数据到文件上的更新频率,单位毫秒

1000

--

canal.instance.memory.buffer.size

canal内存store中可缓存buffer记录数,需要为2的指数

16384

--

canal.instance.memory.buffer.memunit

内存记录的单位大小,默认1KB,和buffer.size组合决定最终的内存使用大小

1024

--

canal.instance.memory.batch.mode

canal内存store中数据缓存模式
1. ITEMSIZE :根据buffer.size进行限制,只限制记录的数量数
2. MEMSIZE : 根据buffer.size * buffer.memunit 的大小,限制缓存记录的大小

MEMSIZE

--

canal.instance.memory.rawEntry

batch.mode 相关参数,默认即可

true

--

canal.instance.detecting.enable

是否开启心跳检查

false

--

canal.instance.detecting.sql

心跳检查sql

select 1

--

canal.instance.detecting.interval.time

心跳检查频率,单位秒

3

--

canal.instance.detecting.retry.threshold

心跳检查失败重试次数

3

--

canal.instance.detecting.heartbeatHaEnable

心跳检查失败后,是否开启自动mysql自动切换
说明:比如心跳检查失败超过阀值后,如果该配置为true,canal就会自动链到mysql备库获取binlog数据

false

--

canal.instance.transaction.size

最大事务完整解析的长度支持。超过该长度后,一个事务可能会被拆分成多次提交到canal store中,无法保证事务的完整可见性

1024

--

canal.instance.fallbackIntervalInSeconds

canal发生mysql切换时,在新的mysql库上查找binlog时需要往前查找的时间,单位秒
说明:mysql主备库可能存在解析延迟或者时钟不统一,需要回退一段时间,保证数据不丢

60

--

canal.instance.network.receiveBufferSize

网络链接参数,SocketOptions.SO_RCVBUF

16384

--

canal.instance.network.sendBufferSize

网络链接参数,SocketOptions.SO_SNDBUF

16384

--

canal.instance.network.soTimeout

网络链接参数,SocketOptions.SO_TIMEOUT

30

--

canal.instance.filter.druid.ddl

是否使用druid处理所有的ddl解析来获取库和表名

true

--

canal.instance.filter.query.dcl

是否忽略dcl语句

false

--

canal.instance.filter.query.dml

是否忽略dml语句

false

--

canal.instance.filter.query.ddl

是否忽略ddl语句

false

--

canal.instance.filter.table.error

是否忽略binlog表结构获取失败的异常
(主要解决回溯binlog时,对应表已被删除或者表结构和binlog不一致的情况)

false

--

canal.instance.filter.rows

是否忽略dml的数据变更事件
(主要针对用户只订阅ddl/dcl的操作)

false

--

canal.instance.filter.transaction.entry

是否忽略事务头和尾,比如针对写入kakfa的消息时,不需要写入TransactionBegin/Transactionend事件

false

--

canal.instance.binlog.format

支持的binlog/format格式列表
(otter会有支持format格式限制)

ROW,STATEMENT,MIXED

--

canal.instance.binlog.image

支持的binlog/image格式列表
(otter会有支持format格式限制)

FULL,MINIMAL,NOBLOB

--

canal.instance.get.ddl.isolation

ddl语句是否单独一个batch返回
(比如下游dml/ddl如果做batch内无序并发处理,会导致结构不一致)

false

--

canal.instance.parser.parallel

是否开启binlog并行解析模式
(串行解析资源占用少,但性能有瓶颈, 并行解析可以提升近2.5倍+)

true

--

canal.instance.parser.parallelBufferSize

binlog并行解析的异步ringbuffer队列
(必须为2的指数)

256

--

canal.instance.tsdb.enable

是否开启tablemeta的 tsdb 功能

true

false

canal.instance.tsdb.dir

主要针对h2-tsdb.xml时对应h2文件的存放目录,默认为conf/xx/h2.mv.db

[Math Processing Error]�����.����.����.���:../����/{canal.instance.destination:}

--

canal.instance.tsdb.url

jdbc url的配置
(h2的地址为默认值,如果是mysql需要自行定义)

jdbc:h2:${canal.instance.tsdb.dir}/h2;CACHE_SIZE=1000;MODE=MYSQL;

--

canal.instance.tsdb.dbUsername

tsdb用户名

canal

--

canal.instance.tsdb.dbPassword

tsdb密码

canal

--

canal.instance.tsdb.snapshot.interval

导出快照间隔,默认24小时

24

--

canal.instance.tsdb.snapshot.expire

清理快照时间间隔,默认360小时

360

--

canal.aliyun.accessKey

阿里云 access key(如果不需要在本地binlog超过18小时被清理后自动下载oss上的binlog,可以忽略该值)

--

canal.aliyun.secretKey

阿里云 secret key(如果不需要在本地binlog超过18小时被清理后自动下载oss上的binlog,可以忽略该值)

--

  • logback.xml —— 日志功能配置文件,一般不用修改
  • metrics —— 监控项配置文件目录
  • spring —— spring 框架配置文件目录,其中 *-instance.xml 文件用于指定 binlog 的位点信息存放于文件、内存、zk 等位置
    • default-instance.xml store选择了内存模式,其余的parser/sink依赖的位点管理选择了持久化模式,目前持久化的方式主要是写入zookeeper,保证数据集群共享。
      • 特点:支持HA
      • 场景:生产环境,集群化部署.
    • memory-instance.xml:所有的组件(parser , sink , store)都选择了内存版模式,记录位点的都选择了memory模式,重启后又会回到初始位点进行解析。
      • 特点:速度最快,依赖最少(不需要zookeeper)
      • 场景:一般应用在quickstart,或者是出现问题后,进行数据分析的场景,不应该将其应用于生产环境
    • group-instance.xml:主要针对需要进行多库合并时,可以将多个物理instance合并为一个逻辑instance,提供客户端访问。
    • file-instance.xmlstore选择了内存模式,其余的parser/sink依赖的位点管理选择了持久化模式,目前持久化的方式主要是写入文件,文件位置在instance目录下meta.dat,当前Canal节点重启会从该文件读取解析位置,无法在数据集群共享。
  • mid_db —— canal 实例配置文件,主要配置 mysql binlog 的起始位置、表过滤、MQ 目标 topic 等信息

2.3. canal.properties 文件详解

  • canal.properties 文件分为了4大部分
    • common argument
    • destinations
    • MQ
    • Kafka Kerberos Info

2.3.1. common argument 部分

2.3.2. destinations 部分

argument

说明

默认值

示例

canal.destinations

当前server上部署的instance列表,多个实例用逗号分隔

mysql_mysql

canal.conf.dir

conf 目录所在的路径

../conf

--

canal.auto.scan

开启instance自动扫描
如果配置为true,canal.conf.dir目录下的instance配置变化会自动触发:
a. instance目录新增:触发instance配置载入,lazy为true时则自动启动
b. instance目录删除:卸载对应instance配置,如已启动则进行关闭
c. instance.properties文件变化:reload instance配置,如已启动自动进行重启操作

true

--

canal.auto.scan.interval

instance自动扫描的间隔时间,单位秒

5

--

canal.instance.tsdb.spring.xml

tsdb 的 xml 配置文件

classpath:spring/tsdb/h2-tsdb.xml

--

canal.instance.global.mode

全局配置加载方式

spring

--

canal.instance.global.lazy

全局lazy模式

false

--

canal.instance.global.manager.address

全局的manager配置方式的连接信息

${canal.admin.manager}

--

canal.instance.global.spring.xml

全局的spring配置方式的组件文件,连接 zk 使用 default 文件

classpath:spring/file-instance.xml

classpath:spring/default-instance.xml

2.3.3. MQ 部分

argument

说明

默认值

示例

canal.mq.servers

kafka为bootstrap.servers
rocketMQ中为nameserver列表

127.0.0.1:6667

--

canal.mq.retries

发送失败重试次数

0

--

canal.mq.batchSize

kafkaProducerConfig.BATCH_SIZE_CONFIG
rocketMQ无意义

16384

--

canal.mq.maxRequestSize

kafkaProducerConfig.MAX_REQUEST_SIZE_CONFIG
rocketMQ无意义

1048576

--

canal.mq.lingerMs

kafkaProducerConfig.LINGER_MS_CONFIG , 如果是flatMessage格式建议将该值调大, 如: 200
rocketMQ无意义

100

--

canal.mq.bufferMemory

kafkaProducerConfig.BUFFER_MEMORY_CONFIG
rocketMQ无意义

33554432

--

canal.mq.canalBatchSize

Canal的batch size, 默认50K, 由于kafka最大消息体限制请勿超过1M(900K以下)

50

--

canal.mq.canalGetTimeout

Canal get数据的超时时间, 单位: 毫秒, 空为不限超时

100

--

canal.mq.flatMessage

是否为flat json格式对象

true

--

canal.mq.compressionType

压缩类型

none

--

canal.mq.acks

kafkaProducerConfig.ACKS_CONFIG
rocketMQ无意义

all

--

canal.mq.producerGroup

kafka无意义
rocketMQ为ProducerGroup名

Canal-Producer

--

canal.mq.accessChannel

kafka无意义
rocketMQ为channel模式,如果为aliyun则配置为cloud

local

--

2.3.4. Kafka Kerberos Info 部分

argument

说明

默认值

示例(--为保持默认)

canal.mq.kafka.kerberos.enable

kafkaProducerConfig.ACKS_CONFIG
rocketMQ无意义

false

--

canal.mq.kafka.kerberos.krb5FilePath

kafka kerberos认证
rocketMQ无意义

"../conf/kerberos/krb5.conf"

--

canal.mq.kafka.kerberos.jaasFilePath

kafka kerberos认证
rocketMQ无意义

"../conf/kerberos/jaas.conf"

--

猜你喜欢

转载自blog.csdn.net/2301_76957510/article/details/129872083