Alibaba Canal 數據同步中間件


1、bat和sh文件區別

  A. .bat是在window系統上執行的批處理文件,批處理文件的擴展名是.bat或.cmd,啟動該文件可以在cmd命令提示符下輸入文件的名稱,也可以雙擊該文件;

  B. .sh是在Linux系統上執行的批處理文件,啟動該文件可以在目錄下輸入./fileName.sh,也可以sh fileName.sh。

 2、canal簡單介紹

  介紹canal之前,先說一下trigger觸發器,我曾經做過一個主從節點,分省建設項目,需要把管理節點的數據同步到業務節點,就是采用trigger觸發器做的client-server模式組件,后來發現很多問題,例如服務器時間不一致同步有問題、並發情況下觸發器偶爾不工作等,后來項目重構采用了業務節點存放數據,管理節點匯聚數據,多數據源來解決的,節點讀寫分離就是采用canal解決的。

  A. canal作為MySQL binlog增量獲取和解析工具,采用了client-server模式,首先啟動server端,再運行client端,server端直接下載使用,client端可采用不同的語言實現不同的消費邏輯;

  B. 基於日志的增量訂閱和消費的業務:數據庫鏡像、數據庫實時備份、索引構建和實時維護、業務cache刷新、帶業務邏輯的增量處理;

  C. canal和MySQL主從復制的工作原理比較:

  D. client的maven依賴:

<dependency>
    <groupId>com.alibaba.otter</groupId>
    <artifactId>canal.client</artifactId>
    <version>1.1.3</version>
</dependency>

  E. server啟動配置:普通快速啟動、docker模式快速啟動、kafka/rocket快速啟動等;

  F、client適配elasticsearch、redis等。

3. canal client數據對象(EntryProtocol.proto)格式含義:

Entry
header
version 協議的版本號,默認1
logfileName binlog的文件名
logfileOffset binlog position
serverId 服務端serverId
serverenCode 變更數據的編碼 
executeTime 變更數據的執行時間
sourceType 變更數據的來源,默認MySQL
schemaName 變更數據的數據庫名
tableName 變更數據的表名
eventType insert/update/delete類型,默認update
eventLength 每個event的長度
props 預留擴展
gtid 當前事務的gtid
entryType  事務頭begin/事務尾end/數據rowdata
storeValue  byte數據,對應的類型RowChange
RowChange  
tableId 由數據庫產生
eventType 數據變更類型,默認update
isDdl 標識是否是ddl語句,比如create table/drop table
sql ddl/query的語句
rowDatas
beforeColums 字段信息,增量數據(修改前,刪除前),Column類型的數組
afterColumns 字段信息,增量數據(修改后,新增后),Column類型的數組
props 預留擴展
ddlSchemaName ddl/quey的schemaName,會存在跨庫ddl,需要保留ddl執行的當前schemaName
props 預留擴展
Column  
index 字段下標
sqlType jdbc type
name 字段名稱,忽略大小寫
isKey 是否為主鍵
updated 是否發生過變更
isNull 值是否為null
value 字段值,timestamp/dateTime是一個時間格式的文本,其余為string
length 對應數據對象原始長度
mysqlType 字段mysql類型

   注意:insert只有afterColumns,delete只有beforeColumns,而update有afterColumns和beforeColumns兩個數據

 

  可參考canal中間件官網地址

      canal介紹

      canal服務端配置及代碼詳細配置

      canal client API介紹

https://www.cnblogs.com/javazhiyin/p/10836846.html

https://shift-alt-ctrl.iteye.com/blog/2399603

 


免責聲明!

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



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