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

29.8. 架構 #

邏輯複製首先複製發布者資料庫上資料的快照。完成後,發布者上的變更會即時傳送給訂閱者。 訂閱者按照提交在發布者上進行的順序套用資料,以便保證任何單一訂閱中發布的交易一致性。

邏輯複製是使用與實體串流複製類似的架構建構的 (請參閱第 26.2.5 節)。它由 walsenderapply 處理程序實作。 walsender 處理程序啟動 WAL 的邏輯解碼(請參閱第 47 章),並載入標準邏輯解碼輸出外掛程式 (pgoutput)。此外掛程式會將從 WAL 讀取的變更轉換為邏輯複製協定 (請參閱第 53.5 節),並根據發布規格篩選資料。然後使用串流複製協定持續將資料傳輸到 apply 工作者,apply 工作者將資料對應到本地資料表,並以正確的交易順序套用收到的個別變更。

訂閱者資料庫上的 apply 處理程序始終以設定為 replicasession_replication_role 執行。這表示根據預設,觸發程序和規則不會在訂閱者上觸發。使用者可以選擇使用 ALTER TABLE 命令和 ENABLE TRIGGERENABLE RULE 子句,選擇性地在資料表上啟用觸發程序和規則。

邏輯複製 apply 處理程序目前僅觸發列觸發程序,而不觸發語句觸發程序。但是,初始資料表同步化的實作方式類似於 COPY 命令,因此會針對 INSERT 觸發列觸發程序和語句觸發程序。

29.8.1. 初始快照 #

現有訂閱資料表中的初始資料會以特殊 apply 處理程序的平行執行個體建立快照並複製。此處理程序將建立自己的複製槽並複製現有資料。資料表內容一旦複製完成,就會對其他後端可見。複製現有資料後,工作者會進入同步模式,以確保資料表透過串流標準邏輯複製的初始資料複製期間發生的任何變更,與主要 apply 處理程序同步。在此同步階段中,變更會按照與發布者上發生的順序相同的順序套用和提交。完成同步後,資料表複製的控制權將返回主要 apply 處理程序,複製將繼續正常進行。

注意

發布 publish 參數僅影響將複製的 DML 作業。複製現有資料時,初始資料同步不會將此參數納入考量。

提交更正

如果您在文件中發現任何不正確、與特定功能的使用體驗不符或需要進一步澄清的內容,請使用此表單來報告文件問題。