pg_dump實現命令列下自動備份
這次在項目中需要利用工具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
這次在項目中需要利用工具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