下載吧 - 綠色安全的游戲和軟件下載中心

          軟件下載吧

          當(dāng)前位置:軟件下載吧 > 技術(shù)開發(fā) > 數(shù)據(jù)庫 > postgresql流復(fù)制原理以及流復(fù)制和邏輯復(fù)制的區(qū)別說明

          postgresql流復(fù)制原理以及流復(fù)制和邏輯復(fù)制的區(qū)別說明

          時間:2024-02-13 10:22作者:下載吧人氣:35

          流復(fù)制的原理:

          物理復(fù)制也叫流復(fù)制,流復(fù)制的原理是主庫把WAL發(fā)送給備庫,備庫接收WAL后,進行重放。

          邏輯復(fù)制的原理:

          邏輯復(fù)制也是基于WAL文件,在邏輯復(fù)制中把主庫稱為源端庫,備庫稱為目標(biāo)端數(shù)據(jù)庫,源端數(shù)據(jù)庫根據(jù)預(yù)先指定好的邏輯解析規(guī)則對WAL文件進行解析,把DML操作解析成一定的邏輯變化信息(標(biāo)準(zhǔn)SQL語句),源端數(shù)據(jù)庫把標(biāo)準(zhǔn)SQL語句發(fā)給目標(biāo)端數(shù)據(jù)庫,目標(biāo)端數(shù)據(jù)庫接收到之后進行應(yīng)用,從而實現(xiàn)數(shù)據(jù)同步。

          流復(fù)制和邏輯復(fù)制的區(qū)別:

          流復(fù)制主庫上的事務(wù)提交不需要等待備庫接收到WAL文件后的確認(rèn),邏輯復(fù)制相反。

          流復(fù)制要求主備庫的大版本一致,邏輯復(fù)制可以跨大版本的數(shù)據(jù)同步,也可以實現(xiàn)異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步。

          流復(fù)制的主庫可讀寫,從庫只允許讀,邏輯復(fù)制的目標(biāo)端數(shù)據(jù)庫要求可讀寫

          流復(fù)制是對實例級別的復(fù)制(整個postgresql數(shù)據(jù)庫),邏輯復(fù)制是選擇性的復(fù)制一些表,所以是對表級別的復(fù)制。

          流復(fù)制有主庫的DDL、DML操作,邏輯復(fù)制只有DML操作。

          補充:PostgreSQL 同步流復(fù)制原理和代碼淺析

          背景

          數(shù)據(jù)庫ACID中的持久化如何實現(xiàn)

          數(shù)據(jù)庫ACID里面的D,持久化。 指的是對于用戶來說提交的事務(wù),數(shù)據(jù)是可靠的,即使數(shù)據(jù)庫crash了,在硬件完好的情況下,也能恢復(fù)回來。

          PostgreSQL是怎么做到的呢,看一幅圖,畫得比較丑,湊合看吧。

          假設(shè)一個事務(wù),對數(shù)據(jù)庫做了一些操作,并且產(chǎn)生了一些臟數(shù)據(jù),首先這些臟數(shù)據(jù)會在數(shù)據(jù)庫的shared buffer中。

          同時,產(chǎn)生這些臟數(shù)據(jù)的同時也會產(chǎn)生對應(yīng)的redo信息,產(chǎn)生的REDO會有對應(yīng)的LSN號(你可以理解為REDO 的虛擬地址空間的一個唯一的OFFSET,每一筆REDO都有),這個LSN號也會記錄到shared buffer中對應(yīng)的臟頁中。

          walwriter是負(fù)責(zé)將wal buffer flush到持久化設(shè)備的進程,同時它會更新一個全局變量,記錄已經(jīng)flush的最大的LSN號。

          bgwriter是負(fù)責(zé)將shared buffer的臟頁持久化到持久化設(shè)備的進程,它在flush時,除了要遵循LRU算法之外,還要通過LSN全局變量的比對,來保證臟頁對應(yīng)的REDO記錄已經(jīng)flush到持久化設(shè)備了,如果發(fā)現(xiàn)還對應(yīng)的REDO沒有持久化,會觸發(fā)WAL writer去flush wal buffer。 (即確保日志比臟數(shù)據(jù)先落盤)

          當(dāng)用戶提交事務(wù)時,也會產(chǎn)生一筆提交事務(wù)的REDO,這筆REDO也攜帶了LSN號。backend process 同樣需要等待對應(yīng)LSN flush到磁盤后才會返回給用戶提交成功的信號。(保證日志先落盤,然后返回給用戶)

          數(shù)據(jù)庫同步復(fù)制原理淺析

          同步流復(fù)制,即保證standby節(jié)點和本地節(jié)點的日志雙雙落盤。

          PostgreSQL使用另一組全局變量,記錄同步流復(fù)制節(jié)點已經(jīng)接收到的XLOG LSN,以及已經(jīng)持久化的XLOG LSN。

          用戶在發(fā)起提交請求后,backend process除了要判斷本地wal有沒有持久化,同時還需要判斷同步流復(fù)制節(jié)點的XLOG有沒有接收到或持久化(通過synchronous_commit參數(shù)控制)。

          如果同步流復(fù)制節(jié)點的XLOG還沒有接收或持久化,backend process會進入等待狀態(tài)。

          數(shù)據(jù)庫同步復(fù)制代碼淺析

          對應(yīng)的代碼和解釋如下:

          CommitTransaction @ src/backend/access/transam/xact.c
          RecordTransactionCommit @ src/backend/access/transam/xact.c

          標(biāo)簽[db:關(guān)鍵字]

          相關(guān)下載

          查看所有評論+

          網(wǎng)友評論

          網(wǎng)友
          您的評論需要經(jīng)過審核才能顯示

          熱門閱覽

          最新排行

          公眾號

          主站蜘蛛池模板: 国内精品视频一区二区三区八戒| 无码毛片一区二区三区中文字幕 | 久久se精品一区二区影院| 亚洲国产高清在线精品一区| 美女毛片一区二区三区四区| 久久久老熟女一区二区三区| 亚洲狠狠狠一区二区三区| 中文精品一区二区三区四区| 国产一区在线视频观看| 亚洲成a人一区二区三区| 色窝窝无码一区二区三区| 日韩国产免费一区二区三区| 国产在线观看精品一区二区三区91 | 四虎永久在线精品免费一区二区| 亚洲熟妇av一区二区三区漫画| 亚洲第一区视频在线观看 | 久久se精品一区二区影院| 中文字幕日韩一区二区三区不卡| 国产成人午夜精品一区二区三区| 国模丽丽啪啪一区二区| 香蕉久久一区二区不卡无毒影院| 日韩中文字幕精品免费一区| 无码人妻一区二区三区免费视频 | 亚州AV综合色区无码一区| 中文字幕一区二区三区乱码| 中文字幕人妻第一区| 夜夜添无码一区二区三区| 久久久久久人妻一区二区三区| 亚洲老妈激情一区二区三区| 精品免费国产一区二区| 中文字幕一区二区三区久久网站| 午夜福利国产一区二区| 亚洲午夜一区二区电影院| 红杏亚洲影院一区二区三区| 在线播放精品一区二区啪视频| 国产av一区二区三区日韩| 亚洲国产一区二区三区| 国产福利电影一区二区三区,日韩伦理电影在线福 | 久久国产精品最新一区| 国产吧一区在线视频| 亚洲国产精品无码久久一区二区|