1、配置加載圖
核心配置文件canal.properties 加載spring實現配置以下mysql
![](http://static.javashuo.com/static/loading.gif)
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 |