31.4. 限制
邏輯複制目前有以下限制或缺少的功能。 這些可能會在未來的版本中解決。
- 不複制資料庫模式和DDL指令。初始模式可以使用
手動複制。後續的模式更改需要手動保持同步。(但是請注意, 兩端的架構不需要完全相同。)當實時資料庫中的模式定義更改時,邏輯複制是健壯的: 當模式在釋出者上發生更改并且複制的資料開始到達訂閱者但不符合表模式, 複制将錯誤,直到模式更新。在很多情況下, 間歇性錯誤可以通過首先将附加模式更改應用于訂閱者來避免。pg_dump --schema-only
- 不複制序列資料。序列支援的序列或辨別列中的資料當然會作為表的一部分被複制, 但序列本身仍然會顯示訂閱者的起始值。如果訂閱者被用作隻讀資料庫, 那麼這通常不成問題。但是,如果打算對訂閱者資料庫進行某種切換或故障切換, 則需要将序列更新為最新值,方法是從釋出者複制目前資料 (可能使用
)或者從表中确定足夠高的值。pg_dump
- 不複制
指令。當然,可以通過使用TRUNCATE
來解決。為了避免意外的DELETE
調用,可以撤銷表的TRUNCATE
權限。TRUNCATE
- 不複制大對象(參閱 第 34 章 )。 沒有什麼解決辦法,除非在普通表中存儲資料。
- 複制隻能從基表到基表。也就是說,釋出和訂閱端的表必須是普通表,而不是視圖, 物化視圖,分區根表或外部表。對于分區,您可以一對一地複制分區層次結構, 但目前不能複制到不同的分區設定。嘗試複制基表以外的表将導緻錯誤。
本文轉自PostgreSQL中文社群,原文連結: