postgresql使用pgagent來實現job功能

lusklusklusk發表於2020-11-13

postgresql本身沒有job的功能,可以使用第三方pgagent來實現,postgresql本身的官方文件中找不到pgagent的相關資訊,安裝配置好pgagent後,使用pgAdmin圖形介面工具來操作job比較方便

pgagent的原始碼https://www.pgadmin.org/download/pgagent-source-code/
pgagent的文件https://www.pgadmin.org/docs/pgadmin4/latest/pgagent.html


pgagent安裝方法
yum list |grep pgagent
yum -y install pgagent_11.x86_64
--如果postgresql資料庫版本是11,則可以選擇安裝pgagent_11.x86_64版本
su - postgres
psql
postgres=# create extension pgagent ;
--此時在postgres資料庫建立了pgagent的schema,在paadmin圖形介面工具中就是postgres/Catalogs/pgAgent job scheduler
postgres=# \c DB1
DB1=# CREATE EXTENSION pgagent;
--此時在DB1資料庫建立了pgagent的schema,在paadmin圖形介面工具中就是DB1/Catalogs/pgAgent job scheduler


pgagent啟動方法,如下的postgres使用者是OS使用者,在root使用者下執行需要輸入postgres的密碼
[root@pgserver log]#/usr/bin/pgagent_11 host=localhost port=5432 dbname=postgres user=root password=123456

如果不想輸入密碼,修改pg_hba.conf檔案增加,並使用postgres使用者執行/usr/bin/pgagent_11
[root@pgserver log]# vi pg_hba.conf
host    all             all             127.0.0.1/32           trust
備註:因為/usr/bin/pgagent_11不是psql,所以不能使用pg_hba.conf中的"local" is for Unix domain socket connections only,只能使用IPv4 local connections
[root@pgserver log]# su - postgres
Last login: Tue Nov 10 00:01:01 PST 2020
-bash-4.2$ /usr/bin/pgagent_11 host=localhost port=5432 dbname=postgres user=postgres &


設定pgagent開機啟動
[root@pgserver log]# chmod 777 /etc/rc.d/rc.local
[root@pgserver log]# cat /etc/rc.d/rc.local
su - postgres -c  "/usr/bin/pgagent_11 host=localhost port=5432 dbname=postgres user=postgres &"



pgagent只要安裝成功後,不管pgagent有沒有執行,pgagent的相關表和schema都存在,也可以建立job,但是建立的job無法執行,pgagent必須執行後job才可以正常執行

pgagent的相關表都位於DB/Catalogs/pgAgent job scheduler下
pgagent.pga_exception : 記錄作業執行異常資訊
pgagent.pga_job: 作業定義的基本資訊,作業起止時間,最後執行時間等
pgagent.pga_jobagent:pgAgent的配置資訊,伺服器上pgAgent的地址和啟動時間
pgagent.pga_jobclass: pgAgent的配置資訊,定義作業型別
pgagent.pga_joblog:每個作業的執行日誌,包含啟動時間、執行時長。
pgagent.pga_jobstep:每個job步驟的定義在這個表裡。
pgagent.pga_jobsteplog:每個job步驟的執行日誌,包含步驟的開始時間,執行時長。
pgagent.pga_schedule:job排程的定義在這個表裡。


備註:
建立job,使用pgAdmin圖形介面工具一步步操作即可,如果需要每小時、每分鐘都執行,則需要勾選每一個小時和每一分鐘








來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2734107/,如需轉載,請註明出處,否則將追究法律責任。

相關文章