国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

CDC工具之Canal

這篇具有很好參考價值的文章主要介紹了CDC工具之Canal。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、CDC概述

1.1 什么是CDC

CDC 的全稱是 Change Data Capture ,在廣義的概念上,只要能捕獲數(shù)據(jù)變更的技術(shù),我們都可以稱為 CDC 。我們通常所描述的CDC 技術(shù)主要是指面向數(shù)據(jù)庫的變更,是一種用于捕獲數(shù)據(jù)庫中數(shù)據(jù)變更的技術(shù)。

1.2 應(yīng)用場景

  • 數(shù)據(jù)同步,用于備份,容災(zāi)

  • 數(shù)據(jù)分發(fā),一個數(shù)據(jù)源分發(fā)給多個下游系統(tǒng)

  • 數(shù)據(jù)采集,面向數(shù)據(jù)倉庫/數(shù)據(jù)湖的 ETL 數(shù)據(jù)集成,是非常重要的數(shù)據(jù)源

1.3 主要實(shí)現(xiàn)機(jī)制分類

  • 基于查詢的 CDC

  • 基于日志的 CDC

差異點(diǎn)對比:

CDC工具之Canal

總結(jié):

經(jīng)過以上對比,我們可以發(fā)現(xiàn)基于日志的 CDC 有以下幾種優(yōu)勢:

  • 能夠捕獲所有數(shù)據(jù)的變化,捕獲完整的變更記錄。在異地容災(zāi),數(shù)據(jù)備份等場景中得到廣泛應(yīng)用,如果是基于查詢的 CDC 有可能導(dǎo)致兩次查詢的中間一部分?jǐn)?shù)據(jù)丟失

  • 每次 DML 操作均有記錄無需像查詢 CDC 這樣發(fā)起全表掃描進(jìn)行過濾,擁有更高的效率和性能,具有低延遲,不增加數(shù)據(jù)庫負(fù)載的優(yōu)勢

  • 無需入侵業(yè)務(wù),業(yè)務(wù)解耦,無需更改業(yè)務(wù)模型

  • 捕獲刪除事件和捕獲舊記錄的狀態(tài),在查詢 CDC 中,周期的查詢無法感知中間數(shù)據(jù)是否刪除

二、CDC?工具介紹

簡單了解了CDC的概念以及一些基本的CDC工具之后,下面我們就針對個別CDC工具來進(jìn)行詳細(xì)介紹,以便幫助大家了解下CDC的具體工作原理。

2.1 canal

CDC工具之Canal

Canal 是用 Java 開發(fā)的基于數(shù)據(jù)庫增量日志解析,提供增量數(shù)據(jù)訂閱&消費(fèi)的中間件。

舉個例子:假設(shè)我們有一個需要同步數(shù)據(jù)的數(shù)據(jù)庫product_source,還有一個用來存儲product_source中數(shù)據(jù)的數(shù)據(jù)庫product_sink,若product_source中有10條數(shù)據(jù),那么此時我們就可以啟動canal,將product_source中后續(xù)更新的數(shù)據(jù)同步到product_sink這個數(shù)據(jù)庫中。不過,這同時也體現(xiàn)出了canal的一個缺點(diǎn)——不支持?jǐn)?shù)據(jù)的全量同步,也就是說之前的10條數(shù)據(jù)是無法通過canal同步過去的。

目前,Canal 主要支持了 MySQL 的 Binlog 解析。

可能有些同學(xué)對于MySQL的Binlog不太熟悉,這里簡單介紹一下:

Binlog概述:

MySQL 的二進(jìn)制日志記錄了所有的 DDL 和 DML(除了數(shù)據(jù)查詢語句)語句,以事件形式記錄,還包含語句執(zhí)行時所消耗的時間,MySQL 的二進(jìn)制日志是事務(wù)安全型的。

一般來說開啟二進(jìn)制日志大概會有 1%的性能損耗。二進(jìn)制有兩個最重要的使用場景:

其一:MySQL Replication 在 Master 端開啟 Binlog,Master 把它的二進(jìn)制日志傳遞給 Slaves,來達(dá)到 Master-Slave 數(shù)據(jù)一致的目的。

其二:自然就是數(shù)據(jù)恢復(fù)了,通過使用 MySQL Binlog 來使數(shù)據(jù)恢復(fù)。

二進(jìn)制日志包括兩類文件:二進(jìn)制日志索引文件(文件名后綴為.index),用于記錄所有的二進(jìn)制文件;二進(jìn)制日志文件(文件名后綴為.00000*),用于記錄數(shù)據(jù)庫所有的 DDL 和 DML(除了數(shù)據(jù)查詢語句)語句事件。

Binlog分類:

MySQL Binlog 的格式有三種,分別是 STATEMENT,MIXED和ROW。在配置文件中可以選擇配置:

binlog_format= statement|mixed|row。?

三種格式的區(qū)別:

1)statement:語句級,binlog 會記錄每次執(zhí)行寫操作的語句。相較于 row 模式更節(jié)省空間,但是可能會產(chǎn)生不一致性,比如“update tt set create_date=now()”,如果用 binlog 日志進(jìn)行恢復(fù),由于執(zhí)行時間不同可能產(chǎn)生的數(shù)據(jù)就不同。

優(yōu)點(diǎn):節(jié)省空間。

缺點(diǎn):有可能造成數(shù)據(jù)不一致。

2)row:行級, binlog 會記錄每次操作后每行記錄的變化。

優(yōu)點(diǎn):保持?jǐn)?shù)據(jù)的絕對一致性。因?yàn)椴还?sql 是什么,引用了什么函數(shù),他只記錄執(zhí)行后的效果。

缺點(diǎn):占用較大空間。

3)mixed:statement 的升級版,一定程度上解決了因?yàn)橐恍┣闆r而造成的 statement模式不一致問題,默認(rèn)還是 statement,但在某些情況下譬如:當(dāng)函數(shù)中包含 UUID() 時;包含AUTO_INCREMENT 字段的表被更新時;執(zhí)行 INSERT DELAYED 語句時;用 UDF 時,會按照ROW 的方式進(jìn)行處理。

優(yōu)點(diǎn):節(jié)省空間,同時兼顧了一定的一致性。

缺點(diǎn):還有極個別情況依舊會造成不一致,另外 statement 和 mixed 對于那種需要對binlog進(jìn)行監(jiān)控的情況來說都不方便。

Canal工作原理

MySQL主備復(fù)制原理:?

CDC工具之Canal

?

  • MySQL master 將數(shù)據(jù)變更寫入二進(jìn)制日志( binary log,其中的記錄叫做二進(jìn)制日志事件binary log events,可以通過 show binlog events 進(jìn)行查看)

  • MySQL slave 將 master 的 binary log events 拷貝到它的中繼日志(relay log)里面

  • MySQL slave 重放 relay log 中的事件,將數(shù)據(jù)變更反映成它自己的數(shù)據(jù)

canal 工作原理:

  • canal 模擬 MySQL slave 的交互協(xié)議,把自己偽裝成?MySQL slave ,向 MySQL master 發(fā)送dump 協(xié)議

  • MySQL master 收到 dump 請求,開始推送 binary log 給 slave (即 canal )

  • canal 解析 binary log 對象(原始為 byte 流)

思路梳理:

現(xiàn)在,我們知道了Mysql Binlog的基本情況:記錄了所有的 DDL 和 DML(除了數(shù)據(jù)查詢語句)語句。那么當(dāng)canal獲取到這些DDL和DML語句時,就需要針對這些語句進(jìn)行解析,然后可以按照配置過濾掉不需要的數(shù)據(jù),最后將數(shù)據(jù)分發(fā)到下游,完成同步。那么我們就帶著這個思路來了解下canal的架構(gòu)。

??

canal架構(gòu):

CDC工具之Canal

  • server 代表一個 canal 運(yùn)行實(shí)例,對應(yīng)一個 jvm。既然有server,那么自然就有client。server端主要負(fù)責(zé)同步mysql消息,client負(fù)責(zé)訪問server端消費(fèi)消息。

  • instance 對應(yīng)一個數(shù)據(jù)隊(duì)列 (1個 canal server 對應(yīng) 1..n 個 instance )

  • instance 下的子模塊

–?eventParser: 數(shù)據(jù)源接入,模擬 slave 協(xié)議和 master 進(jìn)行交互,協(xié)議解析

–?eventSink: Parser 和 Store 鏈接器,進(jìn)行數(shù)據(jù)過濾,加工和分發(fā)的工作

–?eventStore: 數(shù)據(jù)存儲

–?metaManager: 增量訂閱 & 消費(fèi)信息管理器

Canal的Server端本身根據(jù)配置啟動了很多個Instance對象,所謂的Instance對象就是模擬的數(shù)據(jù)庫slave和master進(jìn)行連接,換句話說就是假設(shè)canal同時成為N個數(shù)據(jù)庫的slave,那么就會有N個Instance實(shí)例。

同步的數(shù)據(jù)流是按照eventParser->eventSink->eventStore進(jìn)行傳輸?shù)摹?/p>

eventParser:

最基本的組件,類似于mysql從庫的dump線程,負(fù)責(zé)從master中獲取bin_log并解析

CDC工具之Canal

從圖中可以看出,eventParser負(fù)責(zé)記錄binlog解析位置、偽裝slave端獲取binlog、解析binlog并傳遞。

eventSink :

使用設(shè)置的filter對bin log進(jìn)行過濾、路由/分發(fā)等。?

CDC工具之Canal

eventStore :

用來存儲filter過濾后的數(shù)據(jù),目前實(shí)現(xiàn)了 memory 模式,支持按照內(nèi)存大小和內(nèi)存記錄數(shù)進(jìn)行存儲大小限制。

canal整體架構(gòu):

CDC工具之Canal

?

總結(jié):

canal server代表一個canal運(yùn)行實(shí)例,該實(shí)例可以同時監(jiān)控多個數(shù)據(jù)庫的binlog,那么想要同時監(jiān)控多個數(shù)據(jù)庫的binlog,就需要開啟多個instance實(shí)例,數(shù)據(jù)庫與instance一般是一一對應(yīng)的關(guān)系。那么我們可以理解為一個instance就是用來同步某個數(shù)據(jù)庫的一條龍服務(wù):即需要包含獲取該數(shù)據(jù)庫的binlog、解析binlog、對binlog進(jìn)行過濾分發(fā),將處理完的數(shù)據(jù)暫時存儲,等待消費(fèi)端獲取數(shù)據(jù),同時需要記錄自己的binlog日志解析的位置,所以每個instance實(shí)例又包含parser、sink、store以及metamanager服務(wù)。

注意:如果沒有client消費(fèi)數(shù)據(jù),server是不會從mysql中去獲取日志的。同樣的,由于event store是將數(shù)據(jù)存儲在內(nèi)存隊(duì)列中的,當(dāng)隊(duì)列滿了之后,server就會阻塞從而無法繼續(xù)獲取binlog。

Canal特性:

  1. 支持所有平臺。

  2. 支持細(xì)粒度的系統(tǒng)監(jiān)控,由Prometheus提供支持。

  3. 支持通過GTID等不同方式解析和訂閱MySQL binlog。

  4. 支持高性能、實(shí)時的數(shù)據(jù)同步。

  5. Canal Server 和 Canal Client 都支持 HA/Scalability。

  6. 支持docker。

了解canal的工作原理后,其實(shí)應(yīng)該對所有的CDC工具的基本實(shí)現(xiàn)有了初步的了解。譬如第一點(diǎn):如果獲取源數(shù)據(jù)庫的日志變更信息,譬如mysql是將這些信息保存在binlog,但是sqlserver、oracle等并沒有binlog的概念,但是有類似的東西,所以基于日志的CDC工具必然需要支持獲取這些日志并解析(類似于canal偽裝成slave去獲取binlog)。然后將解析的數(shù)據(jù)經(jīng)過轉(zhuǎn)換分發(fā),最后供給下游消費(fèi)。差異點(diǎn)無非是支持的功能可能各不相同,比如增量同步、全量同步、全量+增量同步模式的支持,再比如數(shù)據(jù)轉(zhuǎn)換方面的支持,有些工具可以針對表字段進(jìn)行聚合、計(jì)算等操作之后再同步到目標(biāo)表。

本期主要依據(jù)canal簡單介紹CDC工具的大致工作原理,具體業(yè)務(wù)選擇還需要根據(jù)具體的業(yè)務(wù)目標(biāo)進(jìn)行調(diào)研和考察。

本期主要內(nèi)容就先到這里,感謝閱讀。

* 部分素材來源于網(wǎng)絡(luò),版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系刪除。文章來源地址http://www.zghlxwxcb.cn/news/detail-427295.html

到了這里,關(guān)于CDC工具之Canal的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SIFT 算法和SURF(Speeded Up Robust Features)算法的全稱是什么,分別是什么意思,分別是用來干什么的?

    問題描述:SIFT 算法和SURF(Speeded Up Robust Features)算法的全稱是什么,分別是什么意思,分別是用來干什么的? 問題解答: SIFT 算法: 全稱: 尺度不變特征變換(Scale-Invariant Feature Transform)。 意義: SIFT 算法用于檢測圖像中的關(guān)鍵點(diǎn),并提取這些關(guān)鍵點(diǎn)的特征描述子,具有尺度

    2024年01月20日
    瀏覽(23)
  • 【Flink-CDC】Flink CDC 介紹和原理概述

    【Flink-CDC】Flink CDC 介紹和原理概述

    CDC是( Change Data Capture 變更數(shù)據(jù)獲取 )的簡稱。 核心思想是, 監(jiān)測并捕獲數(shù)據(jù)庫的變動(包括數(shù)據(jù) 或 數(shù)據(jù)表的插入INSERT、更新UPDATE、刪除DELETE等),將這些變更按發(fā)生的順序完整記錄下來,寫入到消息中間件中以供其他服務(wù)進(jìn)行訂閱及消費(fèi)。 CDC 主要分為基于查詢和基于

    2024年01月20日
    瀏覽(25)
  • Maxwell與canal工具對比

    Maxwell和Canal是兩種不同的數(shù)據(jù)同步工具,都是在數(shù)據(jù)遷移、數(shù)據(jù)同步、數(shù)據(jù)分發(fā)等領(lǐng)域發(fā)揮作用的工具,但是它們之間存在一些差異。 Maxwell是一種開源的MySQL數(shù)據(jù)庫同步工具,它可以將MySQL數(shù)據(jù)庫的binlog轉(zhuǎn)化為JSON格式,并將其發(fā)送到消息隊(duì)列中。Maxwell有以下幾個特點(diǎn): -易于

    2024年02月13日
    瀏覽(17)
  • 什么是廣義無線網(wǎng)絡(luò)?WPAN、WLAN、WWAN區(qū)別介紹

    廣義的無線網(wǎng)絡(luò)是什么? 一說到廣義無線網(wǎng)絡(luò),相信有很多讀者朋友不太明白,什么是廣義無線網(wǎng)絡(luò)呢?所謂廣義無線網(wǎng)絡(luò),它包含3個方面:WPAN、WLAN、WWAN,如圖1-5所示。 分別來看一看這三者的區(qū)別,具體如下: 1.WPAN ??? WPAN是Wireless Personal Area NetworkCommunication Technologi

    2024年02月08日
    瀏覽(15)
  • 數(shù)據(jù)同步工具DataX、Sqoop、Maxwell、Canal

    數(shù)據(jù)同步工具DataX、Sqoop、Maxwell、Canal

    常見的數(shù)據(jù)庫同步同步主要有:DataX、Sqoop、Maxwell、Canal 數(shù)據(jù)同步工具種類繁多,大致可分為兩類,一類是以DataX、Sqoop為代表的基于Select查詢的離線、批量同步工具,另一類是以Maxwell、Canal為代表的基于數(shù)據(jù)庫數(shù)據(jù)變更日志(例如MySQL的binlog,其會實(shí)時記錄所有的insert、upda

    2024年02月11日
    瀏覽(32)
  • 什么是Flink CDC,以及如何使用

    什么是Flink CDC,以及如何使用

    數(shù)據(jù)庫中的CDC(Change Data Capture,變更數(shù)據(jù)捕獲)是一種用于實(shí)時跟蹤數(shù)據(jù)庫中數(shù)據(jù)變化的技術(shù)。CDC的主要目的是在數(shù)據(jù)庫中捕獲增量數(shù)據(jù),以便在需要時可以輕松地將這些數(shù)據(jù)合并到其他系統(tǒng)或應(yīng)用程序中。CDC在數(shù)據(jù)庫管理、數(shù)據(jù)同步、數(shù)據(jù)集成和數(shù)據(jù)備份等方面具有廣泛的

    2024年02月11日
    瀏覽(19)
  • gpt全稱

    您是否曾經(jīng)好奇過GPT的全稱是什么?GPT代表\\\"Generative Pre-trained Transformer\\\",是一種基于Transformer模型的生成式預(yù)訓(xùn)練模型。而GPT4則是最新一代的GPT模型,它在自然語言處理領(lǐng)域取得了巨大的突破。 GPT4是由OpenAI開發(fā)的一種自然語言處理模型,它以其卓越的生成能力和語義理解能

    2024年02月12日
    瀏覽(22)
  • html學(xué)習(xí)筆記11-標(biāo)簽簡寫及全稱、XHTML

    https://www.runoob.com/html/html-tag-name.html XHTML 是以 XML 格式編寫的 HTML。可擴(kuò)展超文本標(biāo)記語言 XML 是一種必須正確標(biāo)記且格式良好的標(biāo)記語言。 XML 指可擴(kuò)展標(biāo)記語言(eXtensible Markup Language)。

    2024年02月11日
    瀏覽(25)
  • 數(shù)據(jù)同步工具調(diào)研選型:SeaTunnel 與 DataX 、Sqoop、Flume、Flink CDC 對比

    數(shù)據(jù)同步工具調(diào)研選型:SeaTunnel 與 DataX 、Sqoop、Flume、Flink CDC 對比

    Apache SeaTunnel 是一個非常易用的超高性能分布式數(shù)據(jù)集成產(chǎn)品,支持海量數(shù)據(jù)的離線及實(shí)時同步。每天可穩(wěn)定高效同步萬億級數(shù)據(jù),已應(yīng)用于數(shù)百家企業(yè)生產(chǎn),也是首個由國人主導(dǎo)貢獻(xiàn)到 Apache 基金會的數(shù)據(jù)集成頂級項(xiàng)目。 SeaTunnel 主要解決數(shù)據(jù)集成領(lǐng)域的常見問題: * 數(shù)據(jù)源

    2024年02月04日
    瀏覽(28)
  • 相機(jī)專業(yè)模型詳解,各個參數(shù)作用,專業(yè)模式英文全稱和縮寫

    ISO(感光度) 全稱: International Organization for Standardization 縮寫: ISO Shutter Speed(快門速度) 全稱: Shutter Speed 縮寫: SS Aperture(光圈大?。?全稱: Aperture 縮寫: A White Balance(白平衡) 全稱: White Balance 縮寫: WB Exposure Compensation(曝光補(bǔ)償) 全稱: Exposure Compensation 縮寫:

    2024年02月03日
    瀏覽(34)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包