阿里Canal配置內容詳解

 

1、配置加載圖

核心配置文件canal.properties  加載spring實現配置以下mysql

 
 

2、配置文件canal.properties

2.1 common參數定義

好比能夠將instance.properties的公用參數,抽取放置到這裏,這樣每一個instance啓動的時候就能夠共享. 【instance.properties配置定義優先級高於canal.properties】正則表達式

參數名 含義 默認值
canal.id 每一個canal server實例的惟一標識,暫無實際意義 1
canal.ip canal server綁定的本地IP信息,若是不配置,默認選擇一個本機IP進行啓動服務
canal.port canal server提供socket服務的端口 11111
canal.zkServers canal server連接zookeeper集羣的連接信息,例子:127.0.0.1:2181,127.0.0.1:2182
canal.zookeeper.flush.period canal持久化數據到zookeeper上的更新頻率,單位毫秒 1000
canal.file.data.dir canal持久化數據到file上的目錄 ../conf (默認和instance.properties爲同一目錄,方便運維和備份),若是想要HA,不須要配置這個,由於沒法經過文件實現高可用
canal.file.flush.period canal持久化數據到file上的更新頻率,單位毫秒 1000
canal.instance.memory.batch.mode canal內存store中數據緩存模式:1. ITEMSIZE : 根據buffer.size進行限制,只限制記錄的數量;2. MEMSIZE : 根據buffer.size * buffer.memunit的大小,限制緩存記錄的大小 MEMSIZE
canal.instance.memory.buffer.size canal內存store中可緩存buffer記錄數,須要爲2的指數 16384
canal.instance.memory.buffer.memunit 內存記錄的單位大小,默認1KB,和buffer.size組合決定最終的內存使用大小 1024
canal.instance.transactionn.size 最大事務完整解析的長度支持,超過該長度後,一個事務可能會被拆分紅屢次提交到canal store中,沒法保證事務的完整可見性 1024
canal.instance.fallbackIntervalInSeconds canal發生mysql切換時,在新的mysql庫上查找binlog時須要往前查找的時間,單位秒。說明:mysql主備庫可能存在解析延遲或者時鐘不統一,須要回退一段時間,保證數據不丟 60
canal.instance.detecting.enable 是否開啓心跳檢查 false
canal.instance.detecting.sql 心跳檢查sql insert into retl.xdual values(1,now()) on duplicate key update x=now()
canal.instance.detecting.interval.time 心跳檢查頻率,單位秒 3
canal.instance.detecting.retry.threshold 心跳檢查失敗重試次數 3
canal.instance.detecting.heartbeatHaEnable 心跳檢查失敗後,是否開啓自動mysql自動切換。說明:好比心跳檢查失敗超過閥值後,若是該配置爲true,canal就會自動鏈到mysql備庫獲取binlog數據 false
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.query.dcl 是否忽略DCL的query語句,好比grant/create user等 false
canal.instance.filter.query.dml 是否忽略DML的query語句,好比insert/update/delete table.(mysql5.6的ROW模式能夠包含statement模式的query記錄) false
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類型) false
canal.instance.filter.druid.ddl v1.0.25版本新增,是否啓用druid的DDL parse的過濾,基於sql的完整parser能夠解決以前基於正則匹配補全的問題,默認爲true true
canal.instance.get.ddl.isolation ddl語句是否隔離發送,開啓隔離可保證每次只返回發送一條ddl數據,不和其餘dml語句混合返回.(otter ddl同步使用) false
canal.instance.binlog.format 支持的binlogFormat,若是設置會執行強校驗 無,能夠設置ROW,STATEMENT,MIXED
canal.instance.binlog.image 支持的binlogImage,若是設置會執行強校驗 無,能夠設置爲FULL,MINIMAL,NOBLOB

 

2.2 instance參數定義

參數名 含義 默認值
canal.destinations 當前server上部署的instance列表 無,若是要動態生效,不須要進行配置
canal.conf.dir conf/目錄所在的路徑 ../conf
canal.auto.scan 開啓instance自動掃描,若是開啓後,會掃描conf目錄下的文件,進行instance的自動重啓、新增、刪除等動做 true
canal.auto.scan.interval instance自動掃描的間隔時間,單位秒 5
canal.instance.global.mode 全局配置加載方式 spring
canal.instance.global.lazy 全局lazy模式 false
canal.instance.global.manager.address 全局的manager配置方式的連接信息 無,目前加載方式所有爲spring,此配置無用
canal.instance.global.spring.xml 全局的spring配置方式的組件文件 classpath:spring/file-instance.xml (spring目錄相對於canal.conf.dir),咱們應該使用default那個xml
canal.instance.example.mode;canal.instance.example.lazy;canal.instance.example.spring.xml;... instance級別的配置定義,若有配置,會自動覆蓋全局配置定義模式。命名規則:canal.instance.{name}.xxx
canal.instance.tsdb.spring.xml v1.0.25版本新增,全局的tsdb配置方式的組件文件 classpath:spring/tsdb/h2-tsdb.xml (spring目錄相對於canal.conf.dir),咱們應該用mysql那個

3、instance.properties

a. 在canal.properties定義了canal.destinations後,須要在canal.conf.dir對應的目錄下創建同名的文件spring

好比:sql

canal.destinations = example1,example2

這時須要建立example1和example2兩個目錄,每一個目錄裏各自有一份instance.properties.
ps. canal自帶了一份instance.properties demo,可直接複製conf/example目錄進行配置修改數據庫

cp -R example example1/
cp -R example example2/

b. 若是canal.properties未定義instance列表,但開啓了canal.auto.scan時緩存

server第一次啓動時,會自動掃描conf目錄下,將文件名作爲instance name,啓動對應的instance
server運行過程當中,會根據canal.auto.scan.interval定義的頻率,進行掃描網絡

  • 發現目錄有新增,啓動新的instance
  • 發現目錄有刪除,關閉老的instance
  • 發現對應目錄的instance.properties有變化,重啓instance
參數名 含義 默認值
canal.instance.mysql.slaveId mysql集羣配置中的serverId概念,須要保證和當前mysql集羣中id惟一 1234
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.master.gtid gtid的值
canal.instance.dbUsername mysql數據庫賬號 canal
canal.instance.dbPassword mysql數據庫密碼 canal
canal.instance.defaultDatabaseName mysql連接時默認schema
canal.instance.connectionCharset mysql 數據解析編碼 UTF-8
canal.instance.filter.regex mysql 數據解析關注的表,Perl正則表達式.多個正則之間以逗號(,)分隔,轉義符須要雙斜槓(\) 。注意:此過濾條件只針對row模式的數據有效。 所有表
canal.instance.tsdb.enable v1.0.25版本新增,是否開啓table meta的時間序列版本記錄功能 true
canal.instance.tsdb.dir v1.0.25版本新增,table meta的時間序列版本的本地存儲路徑,默認爲instance目錄 ${canal.file.data.dir:../conf}/${canal.instance.destination:}
canal.instance.tsdb.url v1.0.25版本新增,table meta的時間序列版本存儲的數據庫連接串,好比例子爲本地嵌入式數據庫 jdbc:h2:${canal.instance.tsdb.dir}/h2;CACHE_SIZE=1000;MODE=MYSQL;應該改成mysql
canal.instance.tsdb.dbUsername v1.0.25版本新增,table meta的時間序列版本存儲的數據庫連接帳號 canal
canal.instance.tsdb.dbUsername v1.0.25版本新增,table meta的時間序列版本存儲的數據庫連接密碼 canal
canal.instance.gtidon 是不是GTID模式 false
相關文章
相關標籤/搜索