MySql的Binlog日志工具分析:Canal、Maxwell、Databus、DTS
點(diǎn)擊上方藍(lán)色字體,選擇“設(shè)為星標(biāo)”

Canal
定位:基于數(shù)據(jù)庫增量日志解析,提供增量數(shù)據(jù)訂閱&消費(fèi),目前主要支持了mysql。
原理:
canal模擬mysql slave的交互協(xié)議,偽裝自己為mysql slave,向mysql master發(fā)送dump協(xié)議
mysql master收到dump請求,開始推送binary log給slave(也就是canal)
canal解析binary log對象(原始為byte流)


?Connection獲取上一次解析成功的位置(如果第一次啟動,則獲取初始制定的位置或者是當(dāng)前數(shù)據(jù)庫的binlog位點(diǎn))
Connection建立連接,發(fā)生BINLOG_DUMP命令
Mysql開始推送Binary Log
接收到的Binary Log通過Binlog parser進(jìn)行協(xié)議解析,補(bǔ)充一些特定信息
傳遞給EventSink模塊進(jìn)行數(shù)據(jù)存儲,是一個阻塞操作,直到存儲成功
存儲成功后,定時記錄Binary Log位置

數(shù)據(jù)過濾:支持通配符的過濾模式,表名,字段內(nèi)容等
數(shù)據(jù)路由/分發(fā):解決1:n (1個parser對應(yīng)多個store的模式)
數(shù)據(jù)歸并:解決n:1 (多個parser對應(yīng)1個store)
數(shù)據(jù)加工:在進(jìn)入store之前進(jìn)行額外的處理,比如join
Maxwell

源與消費(fèi)者之間的隔離
保證按順序和至少一次交付具有高可用性
從更改流中的任意時間點(diǎn)開始消耗,包括整個數(shù)據(jù)的完全引導(dǎo)功能。
分區(qū)消費(fèi)
源一致性保存

文章不錯?點(diǎn)個【在看】吧!??



