簡體   English   中英

PostgreSQL 恢復拋出錯誤:復制槽不存在

[英]PostgreSQL restoration throwing error : replication slot does not exist

環境: Postgresql 13.x (碼頭化)

我試圖測試 PostgreSQL 個節點的 DR 設置。 pg_basebackup 和 wal_files 存檔是從備用模式中獲取的。

通過復制pg_basebackup並配置postgresql.conf以使用指向 walfiles 存檔的restore_command在新節點上完成恢復。

#----------------------- RECOVERY CONFIGS -----------------------
restore_command = 'cp /db-restore/mydb/walfiles/%f "%p"'
recovery_target_timeline = 'latest'
recovery_target_action = promote
  • 恢復似乎很好。 一些隨機select查詢返回正確的結果。
  • 但是日志文件經常拋出以下錯誤。
2022-04-19 10:19:53 UTC [291] rep_usr@[unknown] ERROR:  replication slot "slot_name" does not exist
2022-04-19 10:19:58 UTC [296] rep_usr@[unknown] ERROR:  replication slot "slot_name" does not exist
  • 由於我已經從備用節點進行了備份,因此此恢復是否將新節點作為備用節點並尋找它在上一代中使用的replication_slot

  • 如何將新節點設為主節點(刪除 replication_slot 信息)

  • 如果備份是從待機狀態進行的,恢復的正確步驟是什么?

  • 我有 1 個主節點和 2 個備用節點。 並計划從備用數據庫中進行備份。 那么在備節點上使用archive_modearchive_command時,是否需要做一些具體的改動呢? 當前命令:

archive_mode = always
archive_level = logical
archive_command = 'test ! -f /db-archives/walfiles/%f && cp %p /db-archives/walfiles/%f'"

有人可以幫忙嗎? 任何指針?

我敢肯定,db-backup 將包含有關 replication_slot 和 connection_info 的信息,因為pg_basebackup本身是整個數據庫的克隆。 要恢復配置,我在包含上述參數的main目錄中手動刪除postgresql.auto.conf

  • 那么,如果數據庫備份中有replication_slot的任何其他引用,我該如何刪除呢?

這些錯誤消息似乎不是由恢復引發的,而是由作為數據庫用戶rep_usr連接的其他一些工具引發的。

如果您的應用程序需要,請創建復制槽!

我刪除了所有配置並從新開始。

  • 刪除了備份中存在的main/postgresql.auto.conf
  • 當我們使用pg_basebackup時, main/postgresql.auto.conf存在於備用節點中。 包含用於備用節點中的 pg_basebackup 的配置。 (插槽名稱和連接信息)。

當我將備份從備用恢復到主時,我不需要那個postgresql.auto.conf

暫無
暫無

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

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