中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在PostgreSQL中定時執行job

發布時間:2021-01-18 15:11:59 來源:億速云 閱讀:593 作者:Leah 欄目:開發技術

這篇文章給大家介紹怎么在PostgreSQL中定時執行job,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

定時job可以使用一下兩種技術實現:

Linux的crontab功能

pgadmin的pgAgent功能

為了避免數據庫系統和操作系統的綁定,最后決定在數據庫層面實現自動清理功能,即使用pgAgent功能

介紹

pgAgent是pgAdmin III工具中的一個插件,它在pgAdmin III v1.4版本中引用。

主要用于PostgreSQL的作業調度代理,能夠在復雜的時間表上運行多步批處理shell和SQL任務。

需要注意的是,pgAgent需要一些數據庫表和其他對象的支持,因此需要先安裝pgAgent數據庫。

環境

PostgreSQL:

操作系統:CentOS Linux release 7.3.1611 (Core)
數據庫系統: PostgreSQL 9.5.8
IP: 192.168.230.134
port: 5432

安裝

安裝pgAdmin III

yum install pgadmin3_95.x86_64

輸入:

[root@localhost ~]# yum install pgadmin3_95.x86_64 
Loaded plugins: fastestmirror, langpacks
base                               | 3.6 kB 00:00:00   
epel/x86_64/metalink                       | 6.4 kB 00:00:00   
extras                              | 3.4 kB 00:00:00   
pgdg95                              | 4.1 kB 00:00:00   
updates                             | 3.4 kB 00:00:00   
Loading mirror speeds from cached hostfile
 * base: mirrors.163.com
 * epel: mirrors.tuna.tsinghua.edu.cn
 * extras: mirrors.163.com
 * updates: mirrors.163.com
Resolving Dependencies
--> Running transaction check
---> Package pgadmin3_95.x86_64 0:1.22.1-1.rhel7 will be installed
--> Processing Dependency: wxGTK for package: pgadmin3_95-1.22.1-1.rhel7.x86_64
--> Processing Dependency: libwx_gtk2u_xrc-2.8.so.0(WXU_2.8)(64bit) for package: pgadmin3_95-1.22.1-1.rhel7.x86_64
--> Processing Dependency: libwx_gtk2u_stc-2.8.so.0(WXU_2.8)(64bit) for package: pgadmin3_95-1.22.1-1.rhel7.x86_64
--> Processing Dependency: libwx_gtk2u_html-2.8.so.0(WXU_2.8)(64bit) for package: pgadmin3_95-1.22.1-1.rhel7.x86_64
--> Processing Dependency: libwx_gtk2u_core-2.8.so.0(WXU_2.8)(64bit) for package: pgadmin3_95-1.22.1-1.rhel7.x86_64
--> Processing Dependency: libwx_gtk2u_aui-2.8.so.0(WXU_2.8.5)(64bit) for package: pgadmin3_95-1.22.1-1.rhel7.x86_64
--> Processing Dependency: libwx_gtk2u_aui-2.8.so.0(WXU_2.8)(64bit) for package: pgadmin3_95-1.22.1-1.rhel7.x86_64
--> Processing Dependency: libwx_gtk2u_adv-2.8.so.0(WXU_2.8)(64bit) for package: pgadmin3_95-1.22.1-1.rhel7.x86_64
--> Processing Dependency: libwx_baseu_xml-2.8.so.0(WXU_2.8)(64bit) for package: pgadmin3_95-1.22.1-1.rhel7.x86_64
--> Processing Dependency: libwx_baseu_net-2.8.so.0(WXU_2.8)(64bit) for package: pgadmin3_95-1.22.1-1.rhel7.x86_64
--> Processing Dependency: libwx_baseu-2.8.so.0(WXU_2.8.5)(64bit) for package: pgadmin3_95-1.22.1-1.rhel7.x86_64
--> Processing Dependency: libwx_baseu-2.8.so.0(WXU_2.8)(64bit) for package: pgadmin3_95-1.22.1-1.rhel7.x86_64
--> Processing Dependency: libwx_gtk2u_xrc-2.8.so.0()(64bit) for package: pgadmin3_95-1.22.1-1.rhel7.x86_64
--> Processing Dependency: libwx_gtk2u_stc-2.8.so.0()(64bit) for package: pgadmin3_95-1.22.1-1.rhel7.x86_64
--> Processing Dependency: libwx_gtk2u_html-2.8.so.0()(64bit) for package: pgadmin3_95-1.22.1-1.rhel7.x86_64
--> Processing Dependency: libwx_gtk2u_core-2.8.so.0()(64bit) for package: pgadmin3_95-1.22.1-1.rhel7.x86_64
--> Processing Dependency: libwx_gtk2u_aui-2.8.so.0()(64bit) for package: pgadmin3_95-1.22.1-1.rhel7.x86_64
--> Processing Dependency: libwx_gtk2u_adv-2.8.so.0()(64bit) for package: pgadmin3_95-1.22.1-1.rhel7.x86_64
--> Processing Dependency: libwx_baseu_xml-2.8.so.0()(64bit) for package: pgadmin3_95-1.22.1-1.rhel7.x86_64
--> Processing Dependency: libwx_baseu_net-2.8.so.0()(64bit) for package: pgadmin3_95-1.22.1-1.rhel7.x86_64
--> Processing Dependency: libwx_baseu-2.8.so.0()(64bit) for package: pgadmin3_95-1.22.1-1.rhel7.x86_64
--> Running transaction check
---> Package wxBase.x86_64 0:2.8.12-20.el7 will be installed
---> Package wxGTK.x86_64 0:2.8.12-20.el7 will be installed
--> Processing Dependency: libSDL-1.2.so.0()(64bit) for package: wxGTK-2.8.12-20.el7.x86_64
--> Running transaction check
---> Package SDL.x86_64 0:1.2.15-14.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================
 Package        Arch       Version         Repository    Size
========================================================================================
Installing:
 pgadmin3_95      x86_64      1.22.1-1.rhel7      pgdg95      3.2 M
Installing for dependencies:
 SDL          x86_64      1.2.15-14.el7      base       204 k
 wxBase        x86_64      2.8.12-20.el7      epel       588 k
 wxGTK         x86_64      2.8.12-20.el7      epel       2.9 M

Transaction Summary
========================================================================================
Install 1 Package (+3 Dependent packages)

Total download size: 6.9 M
Installed size: 27 M
Is this ok [y/d/N]: y
Downloading packages:
(1/4): SDL-1.2.15-14.el7.x86_64.rpm               | 204 kB 00:00:00   
(2/4): wxBase-2.8.12-20.el7.x86_64.rpm              | 588 kB 00:00:00   
(3/4): wxGTK-2.8.12-20.el7.x86_64.rpm              | 2.9 MB 00:00:01   
(4/4): pgadmin3_95-1.22.1-1.rhel7.x86_64.rpm           | 3.2 MB 00:00:48   
----------------------------------------------------------------------------------------
Total                           147 kB/s | 6.9 MB 00:48   
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
 Installing : wxBase-2.8.12-20.el7.x86_64                     1/4 
 Installing : SDL-1.2.15-14.el7.x86_64                       2/4 
 Installing : wxGTK-2.8.12-20.el7.x86_64                      3/4 
 Installing : pgadmin3_95-1.22.1-1.rhel7.x86_64                  4/4 
 Verifying : SDL-1.2.15-14.el7.x86_64                       1/4 
 Verifying : wxGTK-2.8.12-20.el7.x86_64                      2/4 
 Verifying : wxBase-2.8.12-20.el7.x86_64                     3/4 
 Verifying : pgadmin3_95-1.22.1-1.rhel7.x86_64                  4/4 

Installed:
 pgadmin3_95.x86_64 0:1.22.1-1.rhel7                          

Dependency Installed:
 SDL.x86_64 0:1.2.15-14.el7 wxBase.x86_64 0:2.8.12-20.el7 wxGTK.x86_64 0:2.8.12-20.el7

Complete!

安裝pgAgent

yum install pgagent_95

輸入:

[root@localhost ~]# yum install pgagent_95
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.163.com
 * epel: mirrors.ustc.edu.cn
 * extras: mirrors.163.com
 * updates: mirrors.163.com
Resolving Dependencies
--> Running transaction check
---> Package pgagent_95.x86_64 0:3.4.0-9.rhel7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================
 Package       Arch       Version          Repository    Size
========================================================================================
Installing:
 pgagent_95      x86_64      3.4.0-9.rhel7       pgdg95      42 k

Transaction Summary
========================================================================================
Install 1 Package

Total download size: 42 k
Installed size: 151 k
Is this ok [y/d/N]: y
Downloading packages:
pgagent_95-3.4.0-9.rhel7.x86_64.rpm               | 42 kB 00:00:02   
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
 Installing : pgagent_95-3.4.0-9.rhel7.x86_64                   1/1 
 Verifying : pgagent_95-3.4.0-9.rhel7.x86_64                   1/1 

Installed:
 pgagent_95.x86_64 0:3.4.0-9.rhel7                           

Complete!

在數據庫上配置pgAgent

找到pgagent.sql和pgagent_upgrade.sql文件路徑,并在需要job功能的數據庫上執行

將會在數據庫中創建一個pgagent模式,并創建相應的功能表和函數

psql -U postgres
postgres=# \i /usr/share/pgagent_95-3.4.0/pgagent.sql
postgres=# \i /usr/share/pgagent_95-3.4.0/pgagent_upgrade.sql
postgres=# \q

輸入:

[root@localhost pgagent_95-3.4.0]# psql -U postgres
psql (9.5.9)
Type "help" for help.

postgres=# \i /usr/share/pgagent_95-3.4.0/pgagent.sql
BEGIN
CREATE SCHEMA
COMMENT
CREATE TABLE
COMMENT
CREATE TABLE
CREATE INDEX
COMMENT
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
CREATE TABLE
COMMENT
COMMENT
CREATE TABLE
CREATE INDEX
COMMENT
COMMENT
COMMENT
CREATE TABLE
CREATE INDEX
COMMENT
CREATE TABLE
CREATE INDEX
CREATE INDEX
COMMENT
CREATE TABLE
CREATE INDEX
COMMENT
COMMENT
CREATE TABLE
CREATE INDEX
COMMENT
COMMENT
COMMENT
CREATE FUNCTION
CREATE FUNCTION
COMMENT
CREATE FUNCTION
COMMENT
CREATE FUNCTION
COMMENT
CREATE TRIGGER
COMMENT
CREATE FUNCTION
COMMENT
CREATE TRIGGER
COMMENT
CREATE FUNCTION
COMMENT
CREATE TRIGGER
COMMENT
COMMIT
postgres=# \i /usr/share/pgagent_95-3.4.0/pgagent_upgrade.sql
CREATE FUNCTION
CREATE FUNCTION
COMMENT
psql:/usr/share/pgagent_95-3.4.0/pgagent_upgrade.sql:49: ERROR: column "jstconnstr" of relation "pga_jobstep" already exists
ALTER TABLE
ALTER TABLE
postgres=# \q

如果數據庫滿足以下條件:

* PostgreSQL 版本高于9.1

* pgAgent 版本高于3.4.0

可使用簡易安裝模式:

[root@localhost pgagent_95-3.4.0]# psql -U postgres
psql (9.5.9)
Type "help" for help.

postgres=# CREATE EXTENSION pgagent;

效果相同

啟動pgAgent守護程序

語法:

pgagent_95 [options] <connect-string>
options:
-f run in the foreground (do not detach from the terminal)
-t <poll time interval in seconds (default 10)>
-r <retry period after connection abort in seconds (>=10, default 30)>
-s <log file (messages are logged to STDOUT if not specified>
-l <logging verbosity (ERROR=0, WARNING=1, DEBUG=2, default 0)>

實例:

[root@localhost pgagent_95-3.4.0]# pgagent_95 hostaddr=192.168.230.134 dbname=postgres user=postgres password=oracle

執行計劃創建

使用pgadmin III工具連接目標庫(可以使用其他機器遠程連接目標庫)

配置如下:

怎么在PostgreSQL中定時執行job

進入pgadmin后可看到作業狀態,如下圖所示:

怎么在PostgreSQL中定時執行job

創建作業date_delete_new

怎么在PostgreSQL中定時執行job

然后在date_delete_new作業中添加執行計劃和步驟

創建計劃delete_date_new

計劃其實就是作業的執行時間表,可以在其中設置作業的運行時間,最小單位為min,設置方式與linux的cron控件類似

本次的業務要求是每月1號執行刪除操作,顧只需設置每月一日執行即可:

新建計劃:

怎么在PostgreSQL中定時執行job

設置日期為每月的1號

怎么在PostgreSQL中定時執行job

設置時間為00點00分

怎么在PostgreSQL中定時執行job

創建步驟delete_date_new

步驟是可以執行的SQL腳本或shell腳本,當計劃條件觸發時,作業的每個步驟將依次以字母數字名稱順序運行

本次的業務要求是刪除表中一年以前的數據,以test表為例

新建步驟:

需要指定操作的數據庫(postgres)

怎么在PostgreSQL中定時執行job

步驟1

在定義中寫入所要執行的腳本,如:

DELETE FROM "test"."test" 
where time < CURRENT_DATE-('1 year')::INTERVAL;

怎么在PostgreSQL中定時執行job

步驟2

到此執行計劃創建完成

關于怎么在PostgreSQL中定時執行job就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

凤冈县| 图木舒克市| 泾阳县| 城步| 衡阳县| 临武县| 平度市| 崇州市| 三门峡市| 漳州市| 澎湖县| 信丰县| 克什克腾旗| 嵩明县| 唐海县| 开平市| 贵阳市| 奇台县| 娱乐| 二连浩特市| 商水县| 阳西县| 密云县| 射阳县| 闽清县| 辽源市| 金坛市| 昌黎县| 贵南县| 汉川市| 枣庄市| 乌海市| 城固县| 理塘县| 开化县| 华池县| 兴业县| 五大连池市| 江西省| 兴仁县| 交城县|