2010-04-18 96 views
3

有沒有辦法回滾到特定的起點。我正在尋找這樣的東西。使用PostgreSQL回滾到特定時刻

啓動specific_point;

此後,與SAME登錄連接的其他應用程序將插入&刪除數據(具有crud操作的web服務) 約2分鐘進行測試。每個Web服務調用都被聲明爲Spring Ws的事務。

之後,我想回滾到specific_point有一個乾淨的數據庫到一個已知的以前的狀態。

我在想, ROLLBACK TO SAVEPOINT foo;是解決方案,但不幸的是?

有什麼想法?

配置:在PostgreSQL 8.4/Windows XP的

問候

回答

0

這是唯一可能的,如果所有的應用程序共享同一個數據庫連接。他們可能不會創建自己的連接。你可以使用連接池來做到這一點,只允許一個連接。如果有人可以創建自己的連接,遊戲結束。不同的連接不能共享相同的事務。

1

兩個快速選擇:

  1. 創建使用主數據庫作爲模板的臨時數據庫,完成測試之後刪除臨時數據庫。
  2. Table Log可能有助於實現某些東西。
+0

對於臨時數據庫+1,但對臨時數據庫進行測試 - 而不是對活動數據庫進行測試。 – Tometzky 2010-04-19 22:00:54

0

SAVEPOINT僅在一個事務內工作,這意味着一個連接。

你可以建立一些PITR,它可以讓你做一個恢復到一個特定的時間點。您需要使用基本備份以及歸檔日誌文件,但可以讓您前進到特定時間點。它並不像你看起來那麼「方便」,但它起作用。

相關問題