我們每晚對我們的數據庫進行完整備份,然後使用該轉儲創建我自己的開發數據庫。 dev-db的創建時間大約需要10分鐘,所以每天早晨在我上班前通過cron安排。所以我現在可以使用幾乎 live db。如何恢復/倒帶我的PostgreSQL數據庫
但是,當我測試的東西有時會方便回滾完全數據庫或只是一些特定的表到初始備份。當然,我可以完全重新開發dev-db,但這會讓我再等10分鐘才能再次運行測試。
那麼有沒有一種簡單的方法來恢復/回捲數據庫/表到特定時間點或從轉儲?
我曾嘗試使用pg_restore
這樣恢復特定的表:
pg_restore -d my-dev-db -n stuff -t tableA -t tableB latest-live-db.dump
我也象-c
和--data-only
也選擇嘗試。但似乎有幾個問題在這裏,我沒有預見到:
- 舊的數據時,恢復的數據複製回不會自動刪除。
- 有幾個外鍵約束使得這不可能(糾正我,如果我錯了)沒有明確地刪除FK之前恢復,然後再次添加回來。
- 在這一點上,失序的PK序列根本不關心我,但這可能也是一個問題。
編輯:我測試了更多的東西/看着:
pg_basebackup
- 更強力的替代
pg_basebackup
是停止數據庫服務器,複製DB-文件,然後啓動數據庫服務器。
上述兩種替代方法都失敗了,因爲我有幾個本地數據庫在同一個集羣中運行,並且總計大量磁盤上的數據。這種方式無法分離數據庫!所以這裏的文件複製操作不會給我任何速度增益。
也不能有這幫助你嗎? http://stackoverflow.com/questions/876522/creating-a-copy-of-a-database-in-postgres它詢問有關pgAdmin,但由於該命令是常規的SQL,它應該是足夠的。使用您的開發數據庫作爲模板,並在每次需要時從其創建一個新的數據庫。 – DrColossos 2014-09-04 09:26:54
PITR和WAL歸檔? – 2014-09-04 09:31:38