Windows下實(shí)現(xiàn)PostgreSQL自動(dòng)備份
本文介紹怎樣創(chuàng)建一個(gè)Windows批處理文件來(lái)自動(dòng)備份PostgreSQL數(shù)據(jù)庫(kù)。
背景
在我工作上一個(gè)使用PostgreSQL數(shù)據(jù)庫(kù)的項(xiàng)目上需要一個(gè)自動(dòng)化系統(tǒng)來(lái)每天執(zhí)行備份。經(jīng)過(guò)一番研究決定通過(guò)創(chuàng)建一個(gè)Windows批處理文件并添加到Windows計(jì)劃任務(wù)中來(lái)實(shí)現(xiàn)。
下面是具體步驟:
***步:
下載批處理文件。
第二步:
你可以通過(guò)一個(gè)簡(jiǎn)單的命令(schtasks /?查看幫助)或者使用圖形界面(開(kāi)始-控制面板-系統(tǒng)和安全-管理工具-任務(wù)計(jì)劃程序)運(yùn)行任務(wù)計(jì)劃管理工具,還可以在%SYSTEMROOT%\System32目錄下雙擊Taskschd.msc來(lái)啟動(dòng)它。
第三步:
你可以通過(guò)向?qū)Щ蛲ㄟ^(guò)XML文件導(dǎo)入信息來(lái)創(chuàng)建基本任務(wù)。向?qū)Х绞絼?chuàng)建方法見(jiàn)任務(wù)計(jì)劃程序幫助,下面介紹下命令行語(yǔ)法:
- schtasks /Create [/S <system> [/U <username> [/P [<password>]]]]
- [/RU <username> [/RP <password>]] /SC <schedule> [/MO <modifier>] [/D <day>]
- [/M <months>] [/I <idletime>] /TN <taskname> /TR <taskrun> [/ST <starttime>]
- [/RI <interval>] [ {/ET <endtime> | /DU <duration>} [/K] [/XML <xmlfile>] [/V1]]
- [/SD <startdate>] [/ED <enddate>] [/IT] [/Z] [/F]
查看此命令幫助:
- schtasks /Create /?
如果在Windows防火墻中遠(yuǎn)程任務(wù)計(jì)劃管理被禁用而文件和打印共享被啟用并且遠(yuǎn)程注冊(cè)表服務(wù)正在運(yùn)行,遠(yuǎn)程計(jì)算機(jī)上將會(huì)被創(chuàng)建一個(gè)V1任務(wù)即使沒(méi)有使用參數(shù)V1。參數(shù)V1表明一個(gè)任務(wù)對(duì)下層系統(tǒng)可見(jiàn)。
使用代碼
腳本:
- <a href="http://my.oschina.net/echolee1987" target="_blank" rel="nofollow">@ECHO</a> OFF
- @setlocal enableextensions<a href="http://my.oschina.net/duini" target="_blank" rel="nofollow">@cd</a> /d "%~dp0"
- SET PGPATH=C:\"Program Files"\PostgreSQL\9.1\bin\
- SET SVPATH=f:\
- SET PRJDB=demo
- SET DBUSR=postgres
- FOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN ('DATE /T') DO SET d=%%i-%%j-%%k
- FOR /F "TOKENS=1,2,3 DELIMS=: " %%i IN ('TIME /T') DO SET t=%%i%%j%%k
- SET DBDUMP=%PRJDB%_%d%_%t%.sql<a href="http://my.oschina.net/echolee1987" target="_blank" rel="nofollow">@ECHO</a> OFF
- %PGPATH%pg_dump -h localhost -p 5432 -U postgres %PRJDB% > %SVPATH%%DBDUMP%
- echo Backup Taken Complete %SVPATH%%DBDUMP%
初始值
- PGPATH - PostgreSQL路徑
- SVPATH - 備份文件路徑
- PRJDB - 要備份的數(shù)據(jù)庫(kù)名
- DBUSR - 數(shù)據(jù)庫(kù)用戶名