Canal和Otter介紹和使用


 

Canal

Canal原理

 

 

 

 

原理相對比較簡單:

  1. canal模擬mysql slave的交互協議,偽裝自己為mysql slave,向mysql master發送dump協議
  2. mysql master收到dump請求,開始推送binary logslave(也就是canal)
  3. canal解析binary log對象(原始為byte)

 

 

Canal架構

  

 

 

Canal集群

 

 

 

 

大致步驟:

  1. canal server要啟動某個canal instance時都先向zookeeper進行一次嘗試啟動判斷 (實現:創建EPHEMERAL節點,誰創建成功就允許誰啟動)
  2. 創建zookeeper節點成功后,對應的canal server就啟動對應的canal instance,沒有創建成功的canal instance就會處於standby狀態
  3. 一旦zookeeper發現canal server A創建的節點消失后,立即通知其他的canal server再次進行步驟1的操作,重新選出一個canal server啟動instance.
  4. canal client每次進行connect時,會首先向zookeeper詢問當前是誰啟動了canal instance,然后和其建立鏈接,一旦鏈接不可用,會重新嘗試connect.

 

Canal數據流程

 

 

相關問題:

canal過濾數據的單位是數據庫,可以過濾到表:

參數名字

參數說明

默認值

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

(黑名單)

mysql 數據解析表的黑名單,表達式規則見白名單的規則

 

Canal單實例和多實例:instance對應於一個數據隊列(1個server對應1..n個instance)(canal官方文檔--簡介)

 

Canal集群僅僅是為了可靠性:為了減少對mysql dump的請求,不同server上的instance要求同一時間只能有一個處於running,其他的處於standby狀態。(針對同一主備)

(canal官方文檔--簡介)

 

Otter

Otter原理

 

 

 

 

原理描述:

1. 基於Canal開源產品,獲取數據庫增量日志數據。

2. 典型管理系統架構,manager(web管理)+node(工作節點)

    a. manager運行時推送同步配置到node節點

    b. node節點將同步狀態反饋到manager

3. 基於zookeeper,解決分布式狀態調度的,允許多node節點之間協同工作.

 

Otter架構

 

 

 

 

名詞解釋

  • Pipeline:從源端到目標端的整個過程描述,主要由一些同步映射過程組成
  • Channel:同步通道,單向同步中一個Pipeline組成,在雙向同步中有兩個Pipeline組成
  • DataMediaPair:根據業務表定義映射關系,比如源表和目標表,字段映射,字段組等
  • DataMedia : 抽象的數據介質概念,可以理解為數據表/mq隊列定義
  • DataMediaSource : 抽象的數據介質源信息,補充描述DateMedia
  • ColumnPair : 定義字段映射關系
  • ColumnGroup : 定義字段映射組
  • Node : 處理同步過程的工作節點,對應一個jvm

Otter分布式架構

 

 

 

 

 

由於單節點容易導致宕機時數據丟失,所以可以將多個Node綁定到同一Zookeeper集群,在宕機時重新選舉工作節點,實現高可用。

 

Otter完整搭建圖

 

 

 

Otter完整搭建需要otter數據庫,zookeeper集群,Manager管理組件和Node工作組件。otter運行時數據保存在單獨的otter數據庫,zookeeper實現高可用,Node完成同步數據的工作。

 

 

 

Otter操作

安裝完成后打開manager地址例如:http://172.16.0.3:8080,默認用戶名密碼是admin/admin

 

 

 

 

 

單向同步配置:

 

前提條件: 數據庫表結構相同

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM