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

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


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

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

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

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



