目錄
邏輯複製是一種基於其複製標識(通常是主鍵)來複制資料物件及其更改的方法。我們使用“邏輯”一詞來區別於物理複製,後者使用精確的塊地址和逐位元組複製。PostgreSQL 同時支援這兩種機制,請參閱 第 26 章。邏輯複製允許對資料複製和安全進行精細控制。
邏輯複製使用一個釋出(publish)和訂閱(subscribe)模型,其中一個或多個訂閱者(subscribers)在釋出者(publisher)節點上訂閱一個或多個釋出(publications)。訂閱者從它們訂閱的釋出中拉取資料,並可以隨後重新發布資料以實現級聯複製或更復雜的配置。
當邏輯複製表通常開始時,PostgreSQL 會在釋出者資料庫中獲取表的初始資料快照,並將其複製到訂閱者。完成後,釋出者自初始複製以來的更改將持續傳送給訂閱者。訂閱者按照與釋出者相同的順序應用資料,因此在一個訂閱內的釋出可以保證事務一致性。這種資料複製方法有時被稱為事務複製。
邏輯複製的典型用例是
在單個數據庫或資料庫子集發生更改時,將增量更改傳送給訂閱者。
當更改到達訂閱者時,為單個更改觸發觸發器。
將多個數據庫合併到一個數據庫中(例如用於分析目的)。
在不同主版本的 PostgreSQL 之間進行復制。
在不同平臺上的 PostgreSQL 例項之間進行復制(例如 Linux 到 Windows)。
允許不同使用者組訪問複製的資料。
在多個數據庫之間共享資料庫的子集。
訂閱者資料庫的行為與其他任何 PostgreSQL 例項一樣,並且可以透過定義自己的釋出來作為其他資料庫的釋出者。當應用程式將訂閱者視為只讀時,單個訂閱不會產生衝突。另一方面,如果應用程式或其他訂閱者對同一組表進行了其他寫入操作,則可能產生衝突。
如果您在文件中發現任何不正確、與您對特定功能的體驗不符或需要進一步澄清的內容,請使用此表單報告文件問題。