[Canal] Canal簡(jiǎn)介

? ? ? ? canal是阿里巴巴開(kāi)源的mysql數(shù)據(jù)庫(kù)binlog的增量訂閱&消費(fèi)組件徘跪。當(dāng)前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x

基于日志增量訂閱和消費(fèi)的業(yè)務(wù)包括

1、數(shù)據(jù)庫(kù)鏡像

2厨钻、數(shù)據(jù)庫(kù)實(shí)時(shí)備份

3饮潦、索引構(gòu)建和實(shí)時(shí)維護(hù)(拆分異構(gòu)索引燃异、倒排索引等)

4、業(yè)務(wù) cache 刷新

5继蜡、帶業(yè)務(wù)邏輯的增量數(shù)據(jù)處理

項(xiàng)目github地址為:https://github.com/alibaba/canal

官方wiki:https://github.com/alibaba/canal/wiki

本文使用的版本是tag1.0.24

cancal模塊劃分


common模塊:主要是提供了一些公共的工具類和接口特铝。

client模塊:canal的客戶端暑中。核心接口為CanalConnector

example模塊:提供client模塊使用案例。

protocol模塊:client和server模塊之間的通信協(xié)議

deployer:部署模塊鲫剿。通過(guò)該模塊提供的CanalLauncher來(lái)啟動(dòng)canal server

server模塊:canal服務(wù)器端鳄逾。核心接口為CanalServer

instance模塊:一個(gè)server有多個(gè)instance。每個(gè)instance都會(huì)模擬成一個(gè)mysql實(shí)例的slave灵莲。instance模塊有四個(gè)核心組成部分:parser模塊雕凹、sink模塊、store模塊政冻,meta模塊枚抵。核心接口為CanalInstance

parser模塊:數(shù)據(jù)源接入,模擬slave協(xié)議和master進(jìn)行交互明场,協(xié)議解析汽摹。parser模塊依賴于dbsync、driver模塊苦锨。

driver模塊和dbsync模塊:從這兩個(gè)模塊的artifactId(canal.parse.driver逼泣、canal.parse.dbsync),就可以看出來(lái)舟舒,這兩個(gè)模塊實(shí)際上是parser模塊的組件拉庶。事實(shí)上parser 是通過(guò)driver模塊與mysql建立連接,從而獲取到binlog秃励。由于原始的binlog都是二進(jìn)制流氏仗,需要解析成對(duì)應(yīng)的binlog事件,這些binlog事件對(duì)象都定義在dbsync模塊中夺鲜,dbsync 模塊來(lái)自于淘寶的tddl(分布式數(shù)據(jù)庫(kù)中間件)皆尔。

sink模塊:parser和store鏈接器,進(jìn)行數(shù)據(jù)過(guò)濾币励,加工慷蠕,分發(fā)的工作。核心接口為CanalEventSink

store模塊:數(shù)據(jù)存儲(chǔ)榄审。核心接口為CanalEventStore

meta模塊:增量訂閱&消費(fèi)信息管理器砌们,核心接口為CanalMetaManager,主要用于記錄canal消費(fèi)到的mysql binlog的位置

工作原理

MySQL主備復(fù)制原理


1搁进、MySQL master 將數(shù)據(jù)變更寫(xiě)入二進(jìn)制日志( binary log, 其中記錄叫做二進(jìn)制日志事件binary log events浪感,可以通過(guò) show binlog events 進(jìn)行查看)

2、MySQL slave 將 master 的 binary log events 拷貝到它的中繼日志(relay log)

3饼问、MySQL slave 重放 relay log 中事件影兽,將數(shù)據(jù)變更反映它自己的數(shù)據(jù)

canal 工作原理


1、canal 模擬 MySQL slave 的交互協(xié)議莱革,偽裝自己為 MySQL slave 讹开,向 MySQL master 發(fā)送dump 協(xié)議

2、MySQL master 收到 dump 請(qǐng)求,開(kāi)始推送 binary log 給 slave (即 canal )

3、canal 解析 binary log 對(duì)象(原始為 byte 流)

canal各個(gè)模塊依賴


? ? ? ? 通過(guò)deployer模塊婶熬,啟動(dòng)一個(gè)canal-server尸诽,一個(gè)cannal-server內(nèi)部包含多個(gè)instance性含,每個(gè)instance都會(huì)偽裝成一個(gè)mysql實(shí)例的slave芝发。client與server之間的通信協(xié)議由protocol模塊定義格郁。client在訂閱binlog信息時(shí),需要傳遞一個(gè)destination參數(shù),server會(huì)根據(jù)這個(gè)destination確定由哪一個(gè)instance為其提供服務(wù)拇厢。

參考:

https://github.com/alibaba/canal

http://www.tianshouzhi.com/api/tutorials/canal/380

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市雨效,隨后出現(xiàn)的幾起案子徽龟,更是在濱河造成了極大的恐慌,老刑警劉巖唉地,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件据悔,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡耘沼,警方通過(guò)查閱死者的電腦和手機(jī)极颓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)群嗤,“玉大人菠隆,你說(shuō)我怎么就攤上這事】衩兀” “怎么了骇径?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)者春。 經(jīng)常有香客問(wèn)我破衔,道長(zhǎng),這世上最難降的妖魔是什么钱烟? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任晰筛,我火速辦了婚禮,結(jié)果婚禮上拴袭,老公的妹妹穿的比我還像新娘读第。我一直安慰自己,他們只是感情好稻扬,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布卦方。 她就那樣靜靜地躺著,像睡著了一般泰佳。 火紅的嫁衣襯著肌膚如雪盼砍。 梳的紋絲不亂的頭發(fā)上尘吗,一...
    開(kāi)封第一講書(shū)人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音浇坐,去河邊找鬼睬捶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛近刘,可吹牛的內(nèi)容都是我干的擒贸。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼觉渴,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼介劫!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起案淋,我...
    開(kāi)封第一講書(shū)人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤座韵,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后踢京,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體誉碴,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年瓣距,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了黔帕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蹈丸,死狀恐怖成黄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情白华,我是刑警寧澤慨默,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布贩耐,位于F島的核電站弧腥,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏潮太。R本人自食惡果不足惜管搪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望铡买。 院中可真熱鬧更鲁,春花似錦、人聲如沸奇钞。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)景埃。三九已至媒至,卻和暖如春顶别,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拒啰。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工驯绎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谋旦。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓剩失,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親册着。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拴孤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355