Postgresql

Postgres 數據庫轉儲和恢復到不同的數據庫

  • May 29, 2014

我在同一台伺服器上有兩個 Postgres 數據庫,它們具有相同的模式。我們的目標是讓 DB1 作為生產,DB2 作為數據庫,它將接收從 MySQL 數據庫遷移的所有數據,然後使用遷移後在 DB2 上創建的轉儲來恢復 DB1。換言之,轉儲 DB2 並使用此轉儲在 DB1 上執行恢復。

這將允許生產 DB1“始終”可用,即使遷移過程發生在 DB2 上。

我的問題是,是否可以使用 DB2 轉儲來恢復 DB1?還是應該使用不同的策略——比如重命名數據庫?謝謝

聽起來您正在嘗試刷新一個數據庫,該數據庫是其他地方的另一個數據庫的快照,並且這樣做不會中斷對第一個數據庫的讀取訪問。

如果是這樣,最簡單的方法實際上是在快照數據庫中進行。只需開始一個事務,truncate所有表,並用新數據填充它們,然後送出。並發事務將在您送出之前看到舊數據,然後再看到新數據。

如果由於某種原因您不能這樣做,您可能希望離線填充一個數據庫,然後ALTER DATABASE ... RENAME交換它們。這樣做需要一個短暫的時間,所有連接都被強制離線並且目前正在執行的事務被中止,這就是為什麼我建議使用上面的第一種方法來做。

如果您的所有表都在主數據庫中的一個模式中,您可以改為填充模式的副本然後ALTER SCHEMA ... RENAME交換它們。這不需要斷開連接。

引用自:https://dba.stackexchange.com/questions/66053