支援的版本:目前 (17) / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本:12 / 11 / 10

第 29 章. 邏輯複製

邏輯複製是一種複製資料物件及其變更的方法,它基於它們的複製身分(通常是主鍵)。我們使用「邏輯」一詞,以區別於物理複製,後者使用精確的區塊位址和逐位元組的複製。PostgreSQL 同時支援這兩種機制,請參閱第 26 章。邏輯複製允許對資料複製和安全性進行細粒度的控制。

邏輯複製使用發布訂閱模型,其中一個或多個訂閱者訂閱發布者節點上的一個或多個發布。訂閱者從他們訂閱的發布中提取資料,並且可以隨後重新發布資料,以允許階層式複製或更複雜的組態。

表的邏輯複製通常從取得發布者資料庫上的資料快照並將其複製到訂閱者開始。完成後,發布者上的變更會以即時方式傳送到訂閱者。訂閱者以與發布者相同的順序套用資料,因此可以保證單一訂閱中發布的交易一致性。這種資料複製方法有時稱為交易複製。

邏輯複製的典型使用案例為:

  • 將單一資料庫或資料庫子集的增量變更,在發生時傳送到訂閱者。

  • 在個別變更到達訂閱者時觸發觸發器。

  • 將多個資料庫整合到單一資料庫中(例如,用於分析目的)。

  • 在不同 PostgreSQL 主要版本之間進行複製。

  • 在不同平台(例如 Linux 到 Windows)上的 PostgreSQL 執行個體之間進行複製。

  • 讓不同的使用者群組可以存取複製的資料。

  • 在多個資料庫之間共享資料庫的子集。

訂閱者資料庫的行為與任何其他 PostgreSQL 執行個體相同,並且可以透過定義自己的發布來用作其他資料庫的發布者。當應用程式將訂閱者視為唯讀時,單一訂閱不會產生衝突。另一方面,如果應用程式或其他訂閱者對同一組表進行其他寫入,則可能會發生衝突。

提交更正

如果您在文件中看到任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的地方,請使用此表格來報告文件問題。