婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 詳解監聽MySQL的binlog日志工具分析:Canal

詳解監聽MySQL的binlog日志工具分析:Canal

熱門標簽:申請外呼電話線路 廣東人工電話機器人 南通自動外呼系統軟件 湖南人工外呼系統多少錢 百度地圖圖標標注中心 芒果電話機器人自動化 石家莊電商外呼系統 信陽穩定外呼系統運營商 日照旅游地圖標注

Canal是阿里巴巴旗下的一款開源項目,利用Java開發。主要用途是基于MySQL數據庫增量日志解析,提供增量數據訂閱和消費,目前主要支持MySQL。

GitHub地址:https://github.com/alibaba/canal

在介紹Canal內部原理之前,首先來了解一下MySQL Master/Slave同步原理:

MySQL master啟動binlog機制,將數據變更寫入二進制日志(binary log, 其中記錄叫做二進制日志事件binary log events,可以通過show binlog events進行查看)MySQL slave(I/O thread)將master的binary log events拷貝到它的中繼日志(relay log)MySQL slave(SQL thread)重放relay log中事件,將數據變更反映它自己的數據中

Canal工作原理:

Canal模擬MySQL slave的交互協議,偽裝自己為MySQL slave,向MySQL master發送dump協議MySQL master收到dump請求,開始推送binary log給slave(也就是canal)Canal解析binary log對象(原始為byte流)

簡而言之,Canal是通過模擬成為MySQL的slave,監聽MySQL的binlog日志來獲取數據。當把MySQL的binlog設置為row模式以后,可以獲取到執行的每一個Insert/Update/Delete的腳本,以及修改前和修改后的數據,基于這個特性,Canal就能高效的獲取到MySQL數據的變更。 Canal架構:

說明: server代表一個Canal運行實例,對應于一個jvm instance對應于一個數據隊列(1個server對應1..n個instance)

EventParser:數據源接入,模擬slave協議和master進行交互,協議解析

EventSink:Parser和Store連接器,主要進行數據過濾,加工,分發的工作

EventStore:負責存儲

MemoryMetaManager:增量訂閱和消費信息管理器

Event Parser設計:

整個parser過程大致可分為以下幾步:

Connection獲取上一次解析成功的log position(如果是第一次啟動,則獲取初始指定的位置或者是當前數據庫的binlog log position)Connection建立連接,向MySQL master發送BINLOG_DUMP請求MySQL開始推送binary Log接收到的binary Log通過BinlogParser進行協議解析,補充一些特定信息。如補充字段名字、字段類型、主鍵信息、unsigned類型處理等將解析后的數據傳入到EventSink組件進行數據存儲(這是一個阻塞操作,直到存儲成功)定時記錄binary Log位置,以便重啟后繼續進行增量訂閱

如果需要同步的master宕機,可以從它的其他slave節點繼續同步binlog日志,避免單點故障。 Event Sink設計:

EventSink主要作用如下:

數據過濾:支持通配符的過濾模式,表名,字段內容等

數據路由/分發:解決1:n(1個parser對應多個store的模式)

數據歸并:解決n:1(多個parser對應1個store)

數據加工:在進入store之前進行額外的處理,比如join 數據1:n業務

為了合理的利用數據庫資源, 一般常見的業務都是按照schema進行隔離,然后在MySQL上層或者dao這一層面上,進行一個數據源路由,屏蔽數據庫物理位置對開發的影響,阿里系主要是通過cobar/tddl來解決數據源路由問題。所以,一般一個數據庫實例上,會部署多個schema,每個schema會有由1個或者多個業務方關注。

數據n:1業務

同樣,當一個業務的數據規模達到一定的量級后,必然會涉及到水平拆分和垂直拆分的問題,針對這些拆分的數據需要處理時,就需要鏈接多個store進行處理,消費的位點就會變成多份,而且數據消費的進度無法得到盡可能有序的保證。所以,在一定業務場景下,需要將拆分后的增量數據進行歸并處理,比如按照時間戳/全局id進行排序歸并。 Event Store設計:

支持多種存儲模式,比如Memory內存模式。采用內存環裝的設計來保存消息,借鑒了Disruptor的RingBuffer的實現思路。 RingBuffer設計:

定義了3個cursor:

put:Sink模塊進行數據存儲的最后一次寫入位置(同步寫入數據的cursor)

get:數據訂閱獲取的最后一次提取位置(同步獲取的數據的cursor)

ack:數據消費成功的最后一次消費位置

借鑒Disruptor的RingBuffer的實現,將RingBuffer拉直來看:

實現說明:

put/get/ack cursor用于遞增,采用long型存儲。三者之間的關系為put>=get>=ackbuffer的get操作,通過取余或者操作。(操作:cusor (size - 1) , size需要為2的指數,效率比較高)

Instance設計:

instance代表了一個實際運行的數據隊列,包括了EventPaser、EventSink、EventStore等組件。抽象了CanalInstanceGenerator,主要是考慮配置的管理方式:

manager方式:和你自己的內部web console/manager系統進行對接。(目前主要是公司內部使用)

spring方式:基于spring xml + properties進行定義,構建spring配置。 Server設計:

server代表了一個Canal運行實例,為了方便組件化使用,特意抽象了Embeded(嵌入式)/Netty(網絡訪問)的兩種實現。

增量訂閱/消費設計:

具體的協議格式,可參見:CanalProtocol.proto。數據對象格式:EntryProtocol.proto

Entry
  Header
    logfileName [binlog文件名]
    logfileOffset [binlog position]
    executeTime [binlog里記錄變更發生的時間戳]
    schemaName [數據庫實例]
    tableName [表名]
    eventType [insert/update/delete類型]
  entryType  [事務頭BEGIN/事務尾END/數據ROWDATA]
  storeValue [byte數據,可展開,對應的類型為RowChange]

RowChange
isDdl    [是否是ddl變更操作,比如create table/drop table]
sql   [具體的ddl sql]
rowDatas  [具體insert/update/delete的變更數據,可為多條,1個binlog event事件可對應多條變更,比如批處理]
beforeColumns [Column類型的數組]
afterColumns [Column類型的數組]

Column
index    [column序號]
sqlType   [jdbc type]
name    [column name]
isKey    [是否為主鍵]
updated   [是否發生過變更]
isNull   [值是否為null]
value    [具體的內容,注意為文本]

針對上述的補充說明:

1.可以提供數據庫變更前和變更后的字段內容,針對binlog中沒有的name、isKey等信息進行補全

2.可以提供ddl的變更語句

Canal HA機制:

Canal的HA實現機制是依賴zookeeper實現的,主要分為Canal server和Canal client的HA。 Canal server:為了減少對MySQL dump的請求,不同server上的instance要求同一時間只能有一個處于running狀態,其他的處于standby狀態。

Canal client:為了保證有序性,一份instance同一時間只能由一個Canal client進行get/ack/rollback操作,否則客戶端接收無法保證有序。 Canal Server HA架構圖:

大致步驟:

  • Canal server要啟動某個Canal instance時都先向Zookeeper進行一次嘗試啟動判斷 (實現:創建EPHEMERAL節點,誰創建成功就允許誰啟動)
  • 創建Zookeeper節點成功后,對應的Canal server就啟動對應的Canal instance,沒有創建成功的Canal instance就會處于standby狀態
  • 一旦Zookeeper發現Canal server A創建的節點消失后,立即通知其他的Canal server再次進行步驟1的操作,重新選出一個Canal server啟動instance
  • Canal client每次進行connect時,會首先向Zookeeper詢問當前是誰啟動了Canal instance,然后和其建立鏈接,一旦鏈接不可用,會重新嘗試connect

Canal Client的方式和Canal server方式類似,也是利用Zookeeper的搶占EPHEMERAL節點的方式進行控制。

到此這篇關于詳解監聽MySQL的binlog日志工具分析:Canal的文章就介紹到這了,更多相關MySQL的binlog日志內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • MySQL使用binlog日志做數據恢復的實現
  • MySQL的binlog日志使用詳解
  • 開啟MySQL的binlog日志的方法步驟
  • Mysql數據庫清理binlog日志命令詳解
  • MySQL讀取Binlog日志常見的3種錯誤
  • mysql binlog(二進制日志)查看方法
  • mysql 正確清理binlog日志的兩種方法
  • 解說mysql之binlog日志以及利用binlog日志恢復數據的方法
  • Mysql數據庫之Binlog日志使用總結(必看篇)
  • MySQL Binlog 日志處理工具對比分析

標簽:呼和浩特 公主嶺 惠州 天津 沈陽 阿里 牡丹江 合肥

巨人網絡通訊聲明:本文標題《詳解監聽MySQL的binlog日志工具分析:Canal》,本文關鍵詞  詳解,監聽,MySQL,的,binlog,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解監聽MySQL的binlog日志工具分析:Canal》相關的同類信息!
  • 本頁收集關于詳解監聽MySQL的binlog日志工具分析:Canal的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    色综合天天性综合| 欧美精品亚洲二区| 色婷婷亚洲精品| 欧美日韩视频不卡| 欧美四级电影网| 成人午夜激情片| 色999日韩国产欧美一区二区| 日韩一区二区三区电影在线观看| 亚洲日本va在线观看| 色就色 综合激情| 国产成人av电影在线| 欧美一区二区网站| 91在线观看成人| 亚洲女与黑人做爰| 欧美一区二区播放| 亚洲黄网站在线观看| 首页欧美精品中文字幕| 视频在线在亚洲| 成人午夜激情在线| 精品国产91久久久久久久妲己 | 欧美日韩精品一二三区| 久久精品二区亚洲w码| aaa国产一区| 色婷婷av一区| 色婷婷久久综合| 欧美三级日韩三级国产三级| 国产精品一区二区三区99| 精品粉嫩aⅴ一区二区三区四区| 国产精品不卡一区| 精品视频一区二区不卡| 洋洋成人永久网站入口| 91麻豆精品国产| 91精品国产全国免费观看| 日韩国产欧美一区二区三区| 欧美一区二区日韩| 国产蜜臀97一区二区三区| proumb性欧美在线观看| 风流少妇一区二区| 日产国产欧美视频一区精品| 成人黄页在线观看| 国产日韩欧美一区二区三区综合| 91精品国产综合久久精品性色| 福利一区二区在线观看| 久久精品国产精品亚洲红杏| 亚洲成人免费视| 欧洲视频一区二区| 久久精品国产77777蜜臀| 色综合婷婷久久| 亚洲欧美日韩成人高清在线一区| 国产东北露脸精品视频| 欧美精品一区二区三区高清aⅴ | 亚洲一区二区三区四区在线| 国产激情视频一区二区在线观看| 精品理论电影在线| 久久亚洲欧美国产精品乐播| 久久久午夜电影| 激情综合网天天干| 欧美精品一区二区在线观看| 日韩1区2区日韩1区2区| 久久99蜜桃精品| 欧美一区二区啪啪| 国产午夜一区二区三区| 一区二区三区在线播| 精品亚洲免费视频| 丁香婷婷综合网| 国产精品自拍av| 日韩一本二本av| 欧美日韩高清一区| 蜜桃av噜噜一区| 国产主播一区二区| 日本伊人色综合网| 欧美日韩国产色站一区二区三区| 国产成人精品一区二区三区四区 | 欧美国产成人在线| 日韩欧美中文字幕一区| 亚洲激情图片一区| 91精品视频网| 国产91丝袜在线播放0| 亚洲午夜精品在线| 久久精品亚洲精品国产欧美| 91小视频免费看| 国产精品传媒入口麻豆| 欧美精品久久一区| 不卡欧美aaaaa| 久久99蜜桃精品| 亚洲免费av在线| 日本一区二区三区电影| 在线电影欧美成精品| 国产综合成人久久大片91| 亚洲精品成人a在线观看| 欧美日韩精品福利| 亚洲va中文字幕| 久久日韩粉嫩一区二区三区| 91丝袜美腿高跟国产极品老师 | 99视频在线观看一区三区| 国产一区二区福利| 综合久久国产九一剧情麻豆| 99国产精品久久久久| 国产精品久久久久久久久图文区 | 一区二区三区日韩欧美精品| 91亚洲精品久久久蜜桃| 偷窥少妇高潮呻吟av久久免费| 欧美xingq一区二区| 91麻豆精品秘密| 高清视频一区二区| 激情欧美一区二区三区在线观看| 亚洲欧洲综合另类| 国产亚洲精久久久久久| 欧美xfplay| 制服丝袜中文字幕一区| 欧美日韩一级片在线观看| 成av人片一区二区| 国产精品一区二区在线观看网站| 日本vs亚洲vs韩国一区三区二区 | 国产欧美一区二区三区鸳鸯浴 | 日韩一区国产二区欧美三区| 欧美日韩午夜在线视频| 一区二区三国产精华液| 日韩理论片在线| 亚洲成人av在线电影| 日韩综合小视频| 久色婷婷小香蕉久久| 国产91丝袜在线观看| 成人久久久精品乱码一区二区三区| 国产精品99久久久久久久vr| 成人综合在线观看| 色悠久久久久综合欧美99| 欧美三级韩国三级日本一级| 久久亚洲一区二区三区明星换脸| 国产精品久久久久久久久晋中 | 亚洲成人tv网| 岛国精品在线观看| 欧美日韩一区二区三区在线| 国产精品乱码一区二三区小蝌蚪| 国产精品麻豆久久久| 久久精品av麻豆的观看方式| 91精品国产欧美一区二区成人| 天堂一区二区在线免费观看| 欧美自拍偷拍一区| 天堂一区二区在线免费观看| 日韩欧美国产小视频| 久久成人免费网| 国产欧美精品一区二区色综合| 久久精品久久久精品美女| 久久久国产一区二区三区四区小说| 久久国产剧场电影| 亚洲私人影院在线观看| 在线观看日韩一区| 蜜臀av国产精品久久久久| 久久综合视频网| 91麻豆免费观看| 蜜臀av性久久久久蜜臀av麻豆| 中文字幕乱码久久午夜不卡 | 中文字幕av一区二区三区高| 美女视频黄久久| 欧美xxxx在线观看| 国产精品资源在线观看| 国产日韩欧美精品在线| 国产成人综合亚洲网站| 国产精品天干天干在线综合| 91在线免费看| 亚洲电影视频在线| 日韩女优电影在线观看| 91小视频免费看| 久久国产精品色婷婷| 亚洲欧美日韩久久| 日韩视频免费观看高清完整版| 国产麻豆一精品一av一免费| 一区二区三区不卡视频| 国产欧美一二三区| 一本色道久久综合狠狠躁的推荐 | 精品视频在线看| 岛国一区二区三区| 久久国产精品色| 青青草视频一区| 亚洲国产精品一区二区久久恐怖片| 国产精品家庭影院| 日韩午夜在线观看视频| 日本一区二区三级电影在线观看| 97精品久久久久中文字幕| 日本vs亚洲vs韩国一区三区二区| 2023国产精品| 欧洲视频一区二区| 国产精品影视天天线| 久久99精品久久久| 美国十次综合导航| 午夜精品久久久久久久久久久 | 午夜精品123| 精品久久久久久亚洲综合网| av成人老司机| 国产丶欧美丶日本不卡视频| 自拍视频在线观看一区二区| 欧美精品第1页| 欧美日韩精品一区二区| 成人福利电影精品一区二区在线观看 | 欧美精品一区二区三区四区| 一本色道久久综合亚洲精品按摩| 国产真实乱子伦精品视频| 婷婷六月综合网| 亚洲第一综合色|