PostgreSQL 邏輯復(fù)制

2021-09-01 17:41 更新

邏輯復(fù)制是一種基于數(shù)據(jù)對象的復(fù)制標(biāo)識(通常是主鍵)復(fù)制數(shù)據(jù)對象及其更改的方法。我們使用術(shù)語“邏輯”來與物理復(fù)制加以區(qū)分,后者使用準(zhǔn)確的塊地址以及逐字節(jié)的復(fù)制方式。PostgreSQL兩種機(jī)制都支持,請見第 26 章。邏輯復(fù)制允許在數(shù)據(jù)復(fù)制和安全性上更細(xì)粒度的控制。

邏輯復(fù)制使用一種發(fā)布訂閱模型,其中有一個或者更多訂閱者訂閱一個發(fā)布者節(jié)點(diǎn)上的一個或者更多發(fā)布 。訂閱者從它們所訂閱的發(fā)布拉取數(shù)據(jù)并且可能后續(xù)重新發(fā)布這些數(shù)據(jù)以允許級聯(lián)復(fù)制或者更復(fù)雜的配置。

一個表的邏輯復(fù)制通常開始于對發(fā)布者服務(wù)器上的數(shù)據(jù)取得一個快照并且將快照拷貝給訂閱者。一旦這項(xiàng)工作完成,發(fā)布者上的更改會被實(shí)時(shí)發(fā)送給訂閱者。訂閱者以與發(fā)布者相同的順序應(yīng)用那些數(shù)據(jù),這樣在一個訂閱中能夠保證發(fā)布的事務(wù)一致性。這種數(shù)據(jù)復(fù)制的方法有時(shí)候也被稱為事務(wù)性復(fù)制。

邏輯復(fù)制的典型用法是:

  • 在一個數(shù)據(jù)庫或者一個數(shù)據(jù)庫的子集中發(fā)生更改時(shí),把增量的改變發(fā)送給訂閱者。

  • 在更改到達(dá)訂閱者時(shí)引發(fā)觸發(fā)器。

  • 把多個數(shù)據(jù)庫聯(lián)合到單一數(shù)據(jù)庫中(例如用于分析目的)。

  • 在PostgreSQL的不同主版本之間進(jìn)行復(fù)制。

  • 在不同平臺上(例如Linux到Windows)的PostgreSQL實(shí)例之間進(jìn)行復(fù)制。

  • 將復(fù)制數(shù)據(jù)的訪問給予不同的用戶組。

  • 在多個數(shù)據(jù)庫間共享數(shù)據(jù)庫的一個子集。

訂閱者數(shù)據(jù)庫的行為與任何其他PostgreSQL實(shí)例相同,并且可以被用作其他數(shù)據(jù)庫的發(fā)布者,只需要定義它自己的發(fā)布。當(dāng)訂閱者被應(yīng)用當(dāng)作只讀時(shí),單一的訂閱中不會有沖突。在另一方面,如果應(yīng)用或者對相同表集合的訂閱者執(zhí)行了其他的寫動作,沖突可能會發(fā)生。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號