canal的資料傳輸有兩塊,一塊是進行binlog訂閱時,binlog轉換為我們所定義的message,第二塊是client與server進行tcp互動時,傳輸的tcp協議。
這塊是binlog的乙個儲存。主要的格式如下:
entry
header
version
[協議的版本號,default = 1]
logfilename
[binlog檔名]
logfileoffset
[binlog position]
serverid
[服務端serverid]
serverencode
[變更資料的編碼]
executetime
[變更資料的執行時間]
sourcetype
[變更資料的**,default = mysql]
schemaname
[變更資料的schemaname]
tablename
[變更資料的tablename]
eventlength
[每個event的長度]
eventtype
[insert/update/delete型別,default = update]
props
[預留擴充套件]
gtid
[當前事務的gitd]
entrytype
[事務頭begin/事務尾end/資料rowdata/heartbeat/gtidlog]
storevalue
[byte資料,可展開,對應的型別為rowchange]
rowchange
tableid
[tableid,由資料庫產生]
eventtype
[資料變更型別,default = update]
isddl
[標識是否是ddl語句,比如create table/drop table]
sql[ddl/query的sql語句]
rowdatas
[具體insert/update/delete的變更資料,可為多條,1個binlog event事件可對應多條變更,比如批處理]
beforecolumns
[字段資訊,增量資料(修改前,刪除前),column型別的陣列]
aftercolumns
[字段資訊,增量資料(修改後,新增後),column型別的陣列]
props
[預留擴充套件]
props
[預留擴充套件]
ddlschemaname
[ddl/query的schemaname,會存在跨庫ddl,需要保留執行ddl的當前schemaname]
column
index
[字段下標]
sqltype
[jdbc type]
name
[欄位名稱(忽略大小寫),在mysql中是沒有的]
iskey
[是否為主鍵]
updated
[是否發生過變更]
isnull
[值是否為null]
props
[預留擴充套件]
value
[字段值,timestamp,datetime是乙個時間格式的文字]
length
[對應資料物件原始長度]
mysqltype
[欄位mysql型別]
這塊主要定義了client和server互動的協議。
packet
magic_number [default = 17]
version [default = 1]
type [packettype,型別]
compression [壓縮,default = none]
body [具體內容]
主要的型別和對應的body,都可以在canalprotocal.proto裡面檢視到。
enum
packettype
//心跳
message heartbeat
//握手
message handshake
// client authentication
message clientauth
//服務端響應
message ack
//客戶端提交
message clientack
// subscription
message sub
// unsubscription
message unsub
// pullrequest
message get
//訊息
message messages
// tbd when new packets are required
message dump
// 客戶端回滾
message clientrollback
Flume資料傳輸事務分析
本文基於thriftsource,memorychannel,hdfssink三個元件,對flume資料傳輸的事務進行分析,如果使用的是其他元件,flume事務具體的處理方式將會不同。一般情況下,用memorychannel就好了,我們公司用的就是這個,filechannel速度慢,雖然提供日誌級別...
原始碼分析Canal專欄
canal 是阿里開源的基於 mysql binlog 資料同步元件,是網際網路架構中資料異構的重磅元件,本專欄將從原始碼的角度 其實現原理 實現細節,有利於更好的駕馭好canal。1 資料異構之 canal 初探 技巧篇 2 一文詳解 canal instance 設計理念與定製開發思路 3 ca...
C SFTP資料傳輸
我們有些客戶公司的資料比較重要,為了安全集團公司內部都使用的是區域網,但是有時候又不得不予外界網際網路做資料互動,所以有些不重要的系統是放在外界網際網路的,這樣以來內部系統和外部系統的資料互動就成為了問題,這樣以來就使用到了sftp伺服器來作為資料傳輸的中介。下面不說了,直接上c 此處使用了第三方動...