簡體   English   中英

PostgreSQL 13.3 邏輯復制不在主服務器中創建復制槽

[英]PostgreSQL 13.3 Logical Replication doesn't create the replication slot in the master

我是 PostgreSQL 的新手。 我正在嘗試創建位於同一 localhost 和端口中的 2 個數據庫的邏輯復制(我不知道這是否是我遇到的問題的一部分)。 關鍵是,我創建發布沒有問題,但是,在我創建訂閱的那一刻,必須在主服務器中創建的復制槽不會創建。 我有wal_level = logical ,但我不知道是否需要在postgres.confpg_hba中進行其他配置

另一個細節是我無法通過代碼創建訂閱,Postgres 只是沒有響應,就像卡在那里一樣,沒有顯示任何錯誤消息或確認。 我可以創建訂閱的唯一方法是在 pgAdmin 4 中,但這里出現了它沒有創建復制槽的錯誤。

任何幫助建議都被接受。 順便說一句,對不起,如果我的英語有點糟糕,我希望我已經解釋過了。

您無法從代碼創建訂閱,因為當您使用 CREATE SUBSCRIPTION 創建復制槽(默認行為)時,無法在事務塊內執行。

現在,在創建連接到同一數據庫集群的訂閱時(例如,在同一集群中的數據庫之間進行復制或在同一數據庫內進行復制)只有在復制槽不是作為同一命令的一部分創建時才會成功。 否則,CREATE SUBSCRIPTION 調用將掛起。 為此,請單獨創建復制槽(使用 function pg_create_logical_replication_slot 和插件名稱 pgoutput)並使用參數 create_slot = false 創建訂閱。 這是一個實施限制,可能會在未來的版本中取消。

請參考https://www.postgresql.org/docs/current/sql-createsubscription.html的注釋部分

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM