2012-12-05 66 views
3

我正在從postgresql備份/恢復數據,用於我使用的pg_dump.exepg_restore.exe如何驗證由pg_dump歸檔生成的歸檔是否正確並有效?

爲了恢復備份文件我不得不刪除數據庫中的實際表什麼都可以「自殺任務」如果有事情和轉儲文件也不行。

我可以檢查其完整性與轉儲文件(比如說)「的7z牛逼mydump.gz」我不喜歡第一個測試。

但我想知道,因爲這個檔案原始PG歸檔並PostgreSQL的包含任何技術「廣州」,我可以刪除實際表之前採取存檔中籤呢?

如果這樣做,如何做一個適當的檢查?

編輯:這是我的傾倒實際的命令:

「C:\ Program Files文件(x86)的\ PostgreSQL的\ 9.1 \ BIN \ pg_dump.exe」 --host --port本地主機5432 - username「postgres」--no-password --verbose -F t --file「C:\ Users \ User 1 \ Desktop \ mydatabase.gz」「mydatabase」

+1

實際上,至少對於測試,您可以重命名數據庫,而不是將其清空。 –

回答

4

您似乎試圖驗證您剛剛創建的PostgreSQL轉儲的有效性和正確性。

您的重點誤解是您不必將轉儲恢復到您從創建的同一數據庫中。您可以恢復到同一集羣上的另一個數據庫,或者爲另一個集羣(服務器)上的數據庫增加偏執狂。驗證轉儲是否已正確恢復,並且數據是否與您預期的相同。

對於額外的偏執,停止PostgreSQL服務器,並在數據目錄中的文件複製。這樣你也有一個文件級的備份。請注意,PostgreSQL數據目錄的文件級副本只有可以在相同平臺上使用相同選項構建的同一個主要版本(8.1/8.2/...)版本的PostgreSQL讀取 - 因此,如果數據目標是從9.2 .x在Windows x64上,它只能被裝有9.2.x的另一臺Windows x64主機讀取。

如果你擔心你的原始數據庫,那麼你可能沒有備份。這是一個關鍵的問題。您需要緊急閱讀documentation chapter on backup and restore並獲得一個很好的自動化備份方案。看看barman。問題編輯後

更新:

-F t是一個奇怪的選擇;普通的SQL轉儲或-F c通常更有意義。

您製作的文件不是.gz(gzip壓縮)文件,無論如何,這是一個.tar存檔,未壓縮。它可以被解壓縮到一個完整的SQL文件目錄中。

要測試它,請使用pg_restore將其恢復到使用createdbCREATE DATABASE命令創建的新的空數據庫。

+0

嗨克雷格。我只轉儲/恢復一個表到現有和空的數據庫。現在你看到我的命令行。 –