Postgresql
Postgres 數據庫轉儲和恢復到不同的數據庫
我在同一台伺服器上有兩個 Postgres 數據庫,它們具有相同的模式。我們的目標是讓 DB1 作為生產,DB2 作為數據庫,它將接收從 MySQL 數據庫遷移的所有數據,然後使用遷移後在 DB2 上創建的轉儲來恢復 DB1。換言之,轉儲 DB2 並使用此轉儲在 DB1 上執行恢復。
這將允許生產 DB1“始終”可用,即使遷移過程發生在 DB2 上。
我的問題是,是否可以使用 DB2 轉儲來恢復 DB1?還是應該使用不同的策略——比如重命名數據庫?謝謝
聽起來您正在嘗試刷新一個數據庫,該數據庫是其他地方的另一個數據庫的快照,並且這樣做不會中斷對第一個數據庫的讀取訪問。
如果是這樣,最簡單的方法實際上是在快照數據庫中進行。只需開始一個事務,
truncate
所有表,並用新數據填充它們,然後送出。並發事務將在您送出之前看到舊數據,然後再看到新數據。如果由於某種原因您不能這樣做,您可能希望離線填充一個數據庫,然後
ALTER DATABASE ... RENAME
交換它們。這樣做需要一個短暫的時間,所有連接都被強制離線並且目前正在執行的事務被中止,這就是為什麼我建議使用上面的第一種方法來做。如果您的所有表都在主數據庫中的一個模式中,您可以改為填充模式的副本然後
ALTER SCHEMA ... RENAME
交換它們。這不需要斷開連接。