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 |
|
||||||||||||||||||||||||||||||||
RowChange |
|
||||||||||||||||||||||||||||||||
Column |
|
注意:insert只有afterColumns,delete只有beforeColumns,而update有afterColumns和beforeColumns兩個數據
可參考:canal中間件官網地址
https://www.cnblogs.com/javazhiyin/p/10836846.html
https://shift-alt-ctrl.iteye.com/blog/2399603