canal 配置文件介紹

https://camo.githubusercontent.com/3772f5e12fb46df1032685319c83c557b3f6a098/687474703a2f2f646c2e69746579652e636f6d2f75706c6f61642f6174746163686d656e742f303038312f383735392f34666161376332652d656439352d333633382d613365322d3862343831633865343036302e6a7067

CANAL 的配置方式有兩種:

  1. ManagerCanalInstanceGenerator: 基於manager管理的配置方式,目前alibaba內部配置使用這種方式。大家可以實現CanalConfigClient,連接各自的管理系統,即可完成接入
  2. SpringCanalInstanceGenerator:基於本地spring xml的配置方式,目前開源版本已經自帶該功能所有代碼,建議使用

我們使用 Spring 的配置方式,即

canal.instance.global.mode = spring

這種方式有三個配置文件,分別爲 canal.properties,xxx-instance.xml,instance.properties,這些配置文件將會由 spring 的 PropertyPlaceholderConfigurer 通過機制將其融合,生成一份 instance 實例對象,每個 instance 對應的組件都是相互獨立的,互不影響

xxx-instance.xml

位於 ${canal.conf.dir}/spring/ 下,這些配置可以使用下面的,也可自己定製,只需在 canal.properties 中通過 canal.instance.global.spring.xml 配置項指定,目前支持以下幾種:

  1. spring/memory-instance.xml
  2. spring/default-instance.xml
  3. spring/group-instance.xml

在介紹instance配置之前,先了解一下canal如何維護一份增量訂閱&消費的關係信息:

  • 解析位點 (parse模塊會記錄,上一次解析binlog到了什麼位置,對應組件爲:CanalLogPositionManager)
  • 消費位點 (canal server在接收了客戶端的ack後,就會記錄客戶端提交的最後位點,對應的組件爲:CanalMetaManager)

對應的兩個位點組件,目前都有幾種實現:

  • memory  (memory-instance.xml中使用)
  • zookeeper
  • mixed 
  • period   (default-instance.xml中使用,集合了zookeeper+memory模式,先寫內存,定時刷新數據到zookeeper上)

memory-instance.xml介紹:

   所有的組件(parser , sink , store)都選擇了內存版模式,記錄位點的都選擇了memory模式,重啓後又會回到初始位點進行解析 

   特點:速度最快,依賴最少(不需要zookeeper)

   場景:一般應用在quickstart,或者是出現問題後,進行數據分析的場景,不應該將其應用於生產環境

default-instance.xml介紹:

   store選擇了內存模式,其餘的parser/sink依賴的位點管理選擇了持久化模式,目前持久化的方式主要是寫入zookeeper,保證數據集羣共享. 

   特點:支持HA

   場景:生產環境,集羣化部署. 

group-instance.xml介紹:

    主要針對需要進行多庫合併時,可以將多個物理instance合併爲一個邏輯instance,提供客戶端訪問。

    場景:分庫業務。 比如產品數據拆分了4個庫,每個庫會有一個instance,如果不用group,業務上要消費數據時,需要啓動4個客戶端,分別鏈接4個instance實例。使用group後,可以在canal server上合併爲一個邏輯instance,只需要啓動1個客戶端,鏈接這個邏輯instance即可. 

canal.properties

CANAL 全局配置,該配置文件中除了 CANAL 基礎配置外,很多配置都可以被 instance.propeties 覆蓋,因此,可以將相對通用的配置置於該配置文件中,實例特殊配置置於實例配置文件中,《canal.properties參數》

instance.properties

CANAL 實例的配置文件,實例私有,存放實例的非共享配置,比如數據庫 IP,賬號,密碼等,《instance.properties參數》

注意:

  • canal.instance.master.journal.name +  canal.instance.master.position:精確指定一個 binlog 位點,進行啓動
  • canal.instance.master.timestamp:指定一個時間戳,canal會自動遍歷mysql binlog,找到對應時間戳的binlog位點後,進行啓動
  • 不指定任何信息:默認從當前數據庫的位點,進行啓動,可使用命令 show master status 查看
  • mysql 解析關注表定義:標準的Perl正則,注意轉義時需要雙斜槓:\\
  • 目前canal版本僅支持一個數據庫只有一種編碼,如果一個庫存在多個編碼,需要通過filter.regex配置,將其拆分爲多個canal instance,爲每個instance指定不同的編碼
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章