PostgreSQL9.2的WINDOWS下備份與還原


這次在項目中需要利用工具pg_dump.exe來實現對PostgresQL數據庫的備份,之前的命令如下:

pg_dump --host localhost --port 5432 --username

"postgres" --format custom --blobs --verbose --file "C:\20111209pm-xfserver.backup" pipeline

但是,在測試的過程中,發現命令行下,需要輸入Password:才能繼續執行,這樣實現不了自動備份,而參數里也沒有象設置username這樣 --password,網上說為了安全不提供這種參數。

 

后來,經過查閱資料,找到了一個方法,就是在命令前添加一行:

set PGPASSWORD=<password>

就可以了。

 

這樣,把命令集中在批處理文件中執行,整個文件看起來就像這個樣子:

備份:

@echo off
c:

cd C:\Program Files\PostgreSQL\9.2\bin

set PGPASSWORD=dsideal

pg_dump --host localhost --port 5432 --username "postgres" --format custom --blobs --verbose --file "C:\%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2%-%time:~6,2%.dump" dsideal
pause

 

 還原 

恢復數據庫實例dsideal

 為了演示好實驗,我們首先要刪除掉這個數據庫:dsideal

然后馬上:

cd C:\Program Files\PostgreSQL\9.2\bin

psql -U postgres

以迅雷不及掩耳盜鈴的速度快速執行:

drop database dsideal;

如果你的運氣好,那么刪除成功,否則就需要再次重啟一下WINDOWS 服務。

 

還原的指令:

pg_restore.exe -hlocalhost -Upostgres -ddsideal -v "C:\2013-04-22-15-57-52.dump"

當然,前提是你的數據庫 dsideal需要提前創建好,它不負責創建數據庫的。

 

如果是在LINUX環境中,那么簡單了:

.另一種是查詢出使用數據庫的服務進程,接着將服務進程殺死,最后刪除數據庫

圖1

圖1中,數據庫“test_db”不能被刪除,原因就是有其他用戶正在使用它,那要做的就是利用“ps -ef|grep test_db|grep -v grep”查出使用它的服務進程,見圖2

                                                               圖2

這時只要將圖2中三個服務進程殺死,然后再執行數據庫的刪除操作,見圖3、圖4

圖3

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM