溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

POSTGRESQL CDC怎么用

發(fā)布時(shí)間:2021-11-26 09:44:51 來源:億速云 閱讀:232 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要為大家展示了“POSTGRESQL  CDC怎么用”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“POSTGRESQL  CDC怎么用”這篇文章吧。

首先 POSTGRESQL 本身的復(fù)制方式有流式復(fù)制和邏輯復(fù)制兩種,今天要說的就是邏輯復(fù)制中的CDC功能。而實(shí)施CDC POSTGRESQL 要具備兩個(gè)功能,1 獲取數(shù)庫的變更日志(WAL) 和  獲取變更日志前的數(shù)據(jù)一致性快照,最后要保存消費(fèi)者的偏移量。而提到邏輯復(fù)制,是從PG10開始的新功能。

1 先通過一個(gè)實(shí)踐來看看什么叫PG的 CDC (以忽略部分?jǐn)?shù)據(jù)庫基礎(chǔ)設(shè)置)

首先我們先要?jiǎng)?chuàng)建一個(gè)邏輯復(fù)制槽,并且使用系統(tǒng)給定的一個(gè)test_decoding的解碼插件。

POSTGRESQL  CDC怎么用

創(chuàng)建完復(fù)制槽后,我們開始一些相關(guān)的數(shù)據(jù)庫操作,從下圖可以看出想的DDL 操作并沒有解析,僅僅是記錄了begin commit  

POSTGRESQL  CDC怎么用

我們來在做做 DML操作,明顯相關(guān)的記錄可以被解碼并且可以看出數(shù)據(jù)庫剛才在操作了什么。

POSTGRESQL  CDC怎么用

當(dāng)然具體的使用我們還需要使用 pg_recvlogical 來進(jìn)行數(shù)據(jù)的捕捉和更多的應(yīng)用,如果直接將這些輸出output  到動(dòng)態(tài)的文件中,那一個(gè)數(shù)據(jù)庫的CDC的記錄就有了。以后在發(fā)現(xiàn)數(shù)據(jù)庫哪個(gè)表里面的記錄不對(duì),就可用這樣的方法早做日志進(jìn)行記錄。

POSTGRESQL  CDC怎么用

同時(shí)我們也可以更換邏輯復(fù)制槽中的解碼工具,我們看一下,在PG中輸入的數(shù)據(jù),經(jīng)過邏輯復(fù)制槽后,直接解碼為為 JSON 的數(shù)據(jù)

POSTGRESQL  CDC怎么用

當(dāng)然如果我們使用了其他的解析插件的情況下,還可以將語句直接翻譯過來,如果保留這些語句,可以自己做一個(gè)類似于UNDO 的東西,將已經(jīng)執(zhí)行的語句,進(jìn)行回滾,從中也更加理解了 data pipleline 中為什么對(duì)傳統(tǒng)數(shù)據(jù)庫要設(shè)置主鍵,這樣可能方便捕獲的數(shù)據(jù)進(jìn)行一個(gè)更新或者判斷插入或更新等等的操作。

POSTGRESQL  CDC怎么用

通過上圖,其實(shí)我們就可以建立一個(gè)自己簡易的CDC 系統(tǒng),通過記錄如果表的設(shè)計(jì)上在完整一些,CDC 的一個(gè)日志系統(tǒng)將會(huì)為POSTGRESQL 數(shù)據(jù)庫的數(shù)據(jù)任意時(shí)間點(diǎn)的數(shù)據(jù) UNDO ,作為一個(gè)強(qiáng)有力的支持。

以上是“POSTGRESQL  CDC怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI