利用pgAgent建立定時任務

使用Postgresql自帶的pgAgent,能夠很方便地建立定時執行任務。如今網上的資料都比較舊,Postgresql版本更新得比較快,致使網上的一些教程都不合用了,如今我寫分享一下本身的經驗。 sql

Postgresql的版本是 9.X 數據庫

1.安裝pgAgent。pgAgent在之前舊的版本是pgAdmin自帶的,但新版本的pgAgent是須要經過Postgresql自帶的Application Stack Builder這個軟件來安裝的。具體流程以下: windows

*在這裏要填寫Postgresql的postgres的用戶名密碼,或者具備操做postgres這個數據庫權限的用戶帳號。由於pgAgent須要在postgres這個數據庫裏面建立相應的表,因此這裏填寫的用戶必須須要有操做postgres這個數據庫的權限,在這裏就用最大權限的postgres用戶。 post

*在這裏是埴寫執行pgAgent的windows用戶帳號,若是是域用戶,請填寫完整的域用戶名和密碼。由於pgAgent會在windows的服務裏面添加一個叫「PostgreSQL Scheduling Agent - pgAgent」的服務,而這個服務須要登陸後才能運行,因此這裏填寫的帳號必須是當前widnows能夠登陸的帳號。 ui

來到這裏,就表示pgAgent已經成功安裝了。能夠到windows的服務裏面看一下pgAgent的服務添加沒有,是否在運行: 教程

2.建立Job. 當成功安裝pgAgent,而且pgAgent已經在正常運行後,接下來的任務就是建立定時執行任務。Postgresql的定時任務的概念分爲兩個部分:Schedule和Step。 Schedule是定時器,配置這個Job何時執行。而Step是執行任務的內容。經過這兩部分結合,就能夠配置這個Job何時作什麼。一個Job能夠有多個Schedule和多個Step,他們是疊加的做用。 事務

具體操做以下: io

新建一個Job,命名爲Job1,設置Job Class爲Routine Maintenance,而且勾選前面的Enabled。 登錄

爲job1添加Schedule,命名爲schedule1,勾選Enabled,而後設置開始和結束時間。若是結束時間不填,就表示這個Job會無止境地運行下去。而後在Times這個Tab的Minutes部分,勾選 00 和 30 ,這裏表示這個job1會在每一個小時的整點(00),和半點(30)執行。也就是每隔30分鐘執行一次。若是隻勾選 30, 就表示每一個小時的30分鐘執行,例如 4:30,5:30,這就是每隔一個小時執行一次了。其它的Hours,Week Days,Month Days,Months的概念是相同的。 軟件

另外Exceptions Tab是例外的狀況,就是當這種狀況的時候就不會執行這個Job。

而後就是爲job1添加執行的內容。如今添加一個Step,命名爲step1。勾選Enabled。而後選擇須要執行這個job的數據庫。另外還須要注意Kind部分和On Error部分。Kind部分是指明執行這個job是SQL仍是batch類型。job除了能夠運行SQL,還能夠運行windows的batch命令。在這個例子中咱們選用SQL。在On Error部分,表示當執行這個job出現錯誤的時候,是中止(Fail),是正常(Succeed),仍是忽略(Ignore)。如今這個例子選用Fail,就表示當執行的內容一出錯,就中止運行,退出。

如今就是定義job1須要執行的SQL,通常建議把這些SQL寫在一個事務中,這樣就算job1運行失敗,都不會影響到數據。

到這一步,job1就基本建立完成了。

如今要監視job1的運行狀態,能夠經過pgAdmin,在job1的Properties Tab,能夠看到job1下次運行的時間,上次運行的時間,結果,當前是否在運行。還能夠經過 Statistics Tab,查看job1運行的次數。


好了,到這裏,如何用pgAgent建立定時任務的介紹就完了。之後再有更深刻的探討,再給你們介紹。

謝謝

相關文章
相關標籤/搜索