PostgreSQL 邏輯復制

2021-09-01 17:41 更新

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

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

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

邏輯復制的典型用法是:

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

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

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

  • 在PostgreSQL的不同主版本之間進行復制。

  • 在不同平臺上(例如Linux到Windows)的PostgreSQL實例之間進行復制。

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

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

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


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號