Postgresql

是否可以使用 PostgreSQL 快速創建/恢復數據庫快照?

  • February 7, 2022

首先,我是一名開發人員,而不是 DBA 或系統管理員;請溫柔:)

我正在開發一個應用程序工作流程,其中單個使用者操作將觸發數據庫中的複雜更改 - 在某些表中創建數百條記錄,在其他表中更新數百條記錄等。總而言之,大約 12 個表(約 100 ) 被這個動作感動。由於復雜性,我很難在執行另一個測試之前手動還原所有更改。在我的大部分開發時間裡,我可以簡單地在工作流的末尾插入一個“ROLLBACK”語句,但是當我接近送出我的更改時,我需要測試真實的東西。

我有一個生產數據庫的本地副本可以使用。就我而言,在測試之間轉儲和恢復比編寫腳本來撤消所有更改要快。它更快,但它仍然讓我慢了很多(在我老化的筆記型電腦上恢復大約需要 20 分鐘)。有什麼辦法可以保存數據庫目前狀態的快照,然後快速恢復它?

我保證是系統上唯一的使用者,並且我有 root 訪問權限。tar’ed 和 gzip’ed 後,數據庫轉儲約為 100MB。PostgreSQL 版本是 8.3。

提前感謝您提供任何有用的想法。

您可以使用文件系統級別的快照,但這通常很麻煩,需要特殊的文件系統,而且並不總是可用,尤其是在老化的筆記型電腦上。;-)

您如何將基本狀態創建為數據庫,然後使用該CREATE DATABASE ... TEMPLATE功能從中創建一個新數據庫以進行測試執行。測試後,您將那個數據庫扔掉。那麼你的速度限制基本上只是到cp -R數據庫目錄的時間。這與您在沒有文件系統快照魔法的情況下獲得的速度差不多。

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