婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 詳解PostgreSQL 實現(xiàn)定時任務(wù)的 4 種方法

詳解PostgreSQL 實現(xiàn)定時任務(wù)的 4 種方法

熱門標簽:江西穩(wěn)定外呼系統(tǒng)供應(yīng)商 孝感銷售電銷機器人廠家 奧維地圖標注字體大小修改 無錫梁溪公司怎樣申請400電話 電話機器人錄音師薪資 北京智能外呼系統(tǒng)供應(yīng)商家 高德地圖標注電話怎么沒了 中國地圖標注省份用什么符號 智能電銷機器人教育

數(shù)據(jù)庫定時任務(wù)可以用于實現(xiàn)定期的備份、統(tǒng)計信息采集、數(shù)據(jù)匯總、數(shù)據(jù)清理與優(yōu)化等。PostgreSQL 沒有提供類似 Oracle、MySQL 以及 Microsoft SQL Sever 的內(nèi)置任務(wù)調(diào)度功能,因此本文給大家介紹一下 PostgreSQL 數(shù)據(jù)庫中實現(xiàn)定時任務(wù)的 4 種方法。

操作系統(tǒng)定時任務(wù)

Linux 定時任務(wù)(crontab)或者 Windows 任務(wù)計劃程序(Task Scheduler)為我們提供了一個實現(xiàn)定時任務(wù)傳統(tǒng)的方法。以 crontab 為例,我們可以使用以下命令編輯任務(wù)列表:

crontab -e

然后在打開的文件中使用以下格式增加一行數(shù)據(jù):

#分鐘 小時 月份中的某一天 月份 星期  命令
#(0-59) (0-23) (1-31)  (1-12) (0-7 [7 or 0 == Sunday])
minute> hour> day of month> month> day of week> command>

其中的前五個字段表示執(zhí)行命令的時間,可以使用星號(*)匹配所有的時間。例如,將 month> 設(shè)置為星號表示每個月都執(zhí)行命令。

舉例來說,輸入以下內(nèi)容表示每天零點執(zhí)行數(shù)據(jù)庫邏輯備份操作。

0 0 * * * pg_dump --no-password -U user db_name > backup.sql

為了安全起見不要直接輸入密碼,而是應(yīng)該將密碼加入 .pgpass 文件,并且將該文件的權(quán)限設(shè)置為僅當前用戶可見:

chmod 600 .pgpass

pgAgent

pgAgent 是一個用于 PostgreSQL 數(shù)據(jù)庫的任務(wù)調(diào)度代理,能夠基于復(fù)雜的調(diào)度計劃運行多步驟的批處理、shell 腳本以及 SQL 命令。對于 Unix/Linux 系統(tǒng),pgAgent 以后臺進程的方式運行;對于 Windows 系統(tǒng),pgAgent 以服務(wù)的形式運行。

安裝 pgAgent

PgAdmin 4 管理工具集成了 pgAgent 的功能,但是這兩者需要單獨安裝。我們可以通過官方網(wǎng)站下載 PgAdmin 4 以及 pgAgent。具體的安裝步驟和注意事項可以參考官網(wǎng)文檔。安裝完成之后,我們可以在 PgAdmin 4 左側(cè)導(dǎo)航樹中看到“pgAgent Jobs”節(jié)點。

創(chuàng)建定時任務(wù)

右鍵點擊“pgAgent Jobs”節(jié)點,選擇“Create” > “pgAgent Job”創(chuàng)建一個新的定時任務(wù)。

其中,“General”頁面可以輸入一些基本信息,包括任務(wù)的名稱。“Steps”頁面可以設(shè)置多個操作步驟,包括執(zhí)行的腳本或者 SQL 語句等。“Schedules”頁面用于定義任務(wù)執(zhí)行的時間計劃。“SQL”頁面可以顯示創(chuàng)建或者修改任務(wù)的語句。

點擊“Save”按鈕保存設(shè)置并創(chuàng)建任務(wù),然后我們就可以在“pgAgent Job”節(jié)點下看到創(chuàng)建的任務(wù)。

pg_cron

pg_cron 是由 citusdata 公司開發(fā)的一個 PostgreSQL 定時任務(wù)插件(類似于 Oracle 中的 DBMS_SCHEDULER)。pg_cron 作為一個后臺工作進程運行,使用類似 cron 的編輯語法,允許直接在數(shù)據(jù)庫中執(zhí)行定時任務(wù)。例如:

-- 每周六 3:30am (GMT) 刪除歷史記錄
SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time  now() - interval '1 week'$$);
 schedule
----------
 42

-- 每天 10:00am (GMT) 執(zhí)行清理作業(yè)
SELECT cron.schedule('nightly-vacuum', '0 10 * * *', 'VACUUM');
 schedule
----------
 43

-- 將清理作業(yè)修改為 3:00am (GMT)
SELECT cron.schedule('nightly-vacuum', '0 3 * * *', 'VACUUM');
 schedule
----------
 43

-- 停止計劃中的任務(wù)
SELECT cron.unschedule('nightly-vacuum' );
 unschedule 
------------
 t
(1 row)

SELECT cron.unschedule(42);
 unschedule
------------
  t

安裝 pg_cron

pg_cron 目前只支持 Linux 操作系統(tǒng)。對于 Red Hat、CentOS 以及 Fedora 等操作系統(tǒng)可以使用以下命令進行安裝(PostgreSQL 12):

sudo yum install -y pg_cron_12

對于 Debian 以及 Ubuntu 可以使用以下命令進行安裝(PostgreSQL 12):

sudo apt-get -y install postgresql-12-cron

另外,我們也可以使用源碼進行編譯安裝:

git clone https://github.com/citusdata/pg_cron.git
cd pg_cron
# Ensure pg_config is in your path, e.g.
export PATH=/usr/pgsql-12/bin:$PATH
make  sudo PATH=$PATH make install

配置 pg_cron

為了在啟動 PostgreSQL 時運行 pg_cron 后臺工作進程,我們需要將 pg_cron 添加到 postgresql.conf 文件中的 shared_preload_libraries配置項。 默認情況下,pg_cron 后臺進程使用 postgres 數(shù)據(jù)庫獲取所需的元數(shù)據(jù)。但是我們也可以使用 cron.database_name 配置參數(shù)進行設(shè)置。

shared_preload_libraries = 'pg_cron'
cron.database_name = 'postgres'

重啟 PostgreSQL:

sudo service postgresql-12 restart

然后我們可以使用以下命令創(chuàng)建 pg_cron 函數(shù)以及元數(shù)據(jù)相關(guān)的表:

-- 使用 superuser 運行以下命令
CREATE EXTENSION pg_cron;

-- 可選操作,為其他用戶授予訪問權(quán)限
GRANT USAGE ON SCHEMA cron TO username;

pg_timetable

pg_timetable 是由 CYBERTEC 公司開發(fā)的 PostgreSQL 作業(yè)調(diào)度程序,提供了靈活的配置方式和許多高級功能。包括由多個任務(wù)組成的任務(wù)鏈、支持 SQL 命令和可執(zhí)行程序、內(nèi)置任務(wù)(例如發(fā)送郵件)、完全基于數(shù)據(jù)庫的配置和日志功能、cron 風(fēng)格的計劃調(diào)度、并發(fā)執(zhí)行的保護等。

安裝 pg_timetable

首先,我們可以使用官方發(fā)布的二進制安裝程序安裝 pg_timetable,目前支持 Windows、Linux 以及 macOS 操作系統(tǒng)。

另外,官方的 docker 鏡像可以點此下載。

master 分支的 latest 標簽是最新版本,使用命令行的運行方式如下:

docker run --rm \

 cybertecpostgresql/pg_timetable:latest \

 -h 10.0.0.3 -p 54321 -c worker001

指定環(huán)境變量的方式如下:

docker run --rm \

 -e PGTT_PGHOST=10.0.0.3 \

 -e PGTT_PGPORT=54321 \

 cybertecpostgresql/pg_timetable:latest \

 -c worker001

除此之外,我們也可以使用源碼進行編譯安裝。首先下載并安裝 Go 語言環(huán)境,然后使用 go get 命令拷貝 pg_timetable 源碼:

$ env GIT_TERMINAL_PROMPT=1 go get github.com/cybertec-postgresql/pg_timetable/
Username for 'https://github.com': Github Username>
Password for 'https://cyberboy@github.com': Github Password>

運行 pg_timetable:

$ cd ~/go/src/github.com/cybertec-postgresql/pg_timetable/
$ go run main.go --dbname=dbname --clientname=worker001 --user=scheduler --password=strongpwd

或者,也可以編譯成二進制程序并運行:

$ go build
$ ./pg_timetable --dbname=dbname --clientname=worker001 --user=scheduler --password=strongpwd

如果想要運行項目中的所有測試,可以執(zhí)行以下命令:

$ cd ~/go/src/github.com/cybertec-postgresql/pg_timetable/
$ go get github.com/stretchr/testify/
$ go test ./...

也可以使用 postgres docker 鏡像運行測試:

$ RUN_DOCKER=true go test ./...

使用 pg_timetable

pg_timetable 獨立于 PostgreSQL 服務(wù)器運行,相當于一個客戶端進程。安裝完成之后,執(zhí)行以下命令運行 pg_timetable 程序:

# ./pg_timetable

Application Options:
 -c, --clientname=  Unique name for application instance
 -v, --verbose   Show verbose debug information [$PGTT_VERBOSE]
 -h, --host=   PG config DB host (default: localhost) [$PGTT_PGHOST]
 -p, --port=   PG config DB port (default: 5432) [$PGTT_PGPORT]
 -d, --dbname=   PG config DB dbname (default: timetable) [$PGTT_PGDATABASE]
 -u, --user=   PG config DB user (default: scheduler) [$PGTT_PGUSER]
 -f, --file=   SQL script file to execute during startup
 --password=   PG config DB password (default: somestrong) [$PGTT_PGPASSWORD]
 --sslmode=[disable|require] What SSL priority use for connection (default: disable)
 --pgurl=   PG config DB url [$PGTT_URL]
 --init   Initialize database schema and exit. Can be used with --upgrade
 --upgrade   Upgrade database to the latest version
 --no-program-tasks  Disable executing of PROGRAM tasks [$PGTT_NOPROGRAMTASKS]

源代碼的 sample 目錄中提供了大量的示例可以參考。以下命令可以創(chuàng)建一個 8 月份 00:05 運行“MyJob”的定時任務(wù):

SELECT timetable.job_add('MyJob', 'SELECT public.my_func()' , NULL, 'SQL', '5 0 * 8 *', live := TRUE);

以下命令表示從 0 點到 20 點,每兩個小時的 23 分時運行“MyJob”任務(wù):

SELECT timetable.job_add('MyJob', 'SELECT public.my_func()' , NULL, 'SQL', '23 0-20/2 * * *', live := TRUE);

pg_timetable 計劃任務(wù)的完整配置由 3 個階段組成:

  • 第一個階段用于配置 base_task,定義需要執(zhí)行的操作。包括 SQL 語句、外部程序以及內(nèi)置的操作。
  • 第二個階段用于配置 task_chain,定義一組順序執(zhí)行的基本任務(wù)。
  • 第三階段用于配置 chain_execution_config,定義任務(wù)鏈的執(zhí)行計劃。

此外,為了給基本任務(wù)傳遞控制參數(shù),任務(wù)鏈中的任務(wù)都可以附帶一個執(zhí)行參數(shù)。詳細的配置方法和案例可以參考官方網(wǎng)站。

總結(jié)

本文介紹了在 PostgreSQL 數(shù)據(jù)庫中實現(xiàn)定時任務(wù)的 4 種方法,包括操作系統(tǒng)定時任務(wù)、pgAgent 代理、pg_cron 插件以及 pg_timetable 工具。

到此這篇關(guān)于PostgreSQL 實現(xiàn)定時任務(wù)的 4 種方法的文章就介紹到這了,更多相關(guān)PostgreSQL 定時任務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • PostgreSQL查看正在執(zhí)行的任務(wù)并強制結(jié)束的操作方法

標簽:泰州 阜陽 海北 臨滄 荊州 齊齊哈爾 那曲 通化

巨人網(wǎng)絡(luò)通訊聲明:本文標題《詳解PostgreSQL 實現(xiàn)定時任務(wù)的 4 種方法》,本文關(guān)鍵詞  詳解,PostgreSQL,實現(xiàn),定時,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解PostgreSQL 實現(xiàn)定時任務(wù)的 4 種方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于詳解PostgreSQL 實現(xiàn)定時任務(wù)的 4 種方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产99精品国产| 亚洲视频网在线直播| 久久久久久久久久电影| 午夜视黄欧洲亚洲| 日本高清不卡aⅴ免费网站| 欧美激情在线观看视频免费| 蜜臀久久99精品久久久画质超高清 | 欧美亚男人的天堂| 亚洲第一成年网| 欧美视频一区二区三区在线观看| 欧美一区二区在线看| 香蕉成人伊视频在线观看| 欧美在线free| 视频一区二区中文字幕| 精品剧情v国产在线观看在线| 久草这里只有精品视频| 精品国产乱码久久久久久久久| 美女mm1313爽爽久久久蜜臀| 精品国产网站在线观看| 国产精品一区久久久久| 国产精品久99| 欧美亚洲高清一区二区三区不卡| 婷婷久久综合九色综合绿巨人| 欧美日韩国产电影| 激情六月婷婷久久| 久久久久久久久久电影| 91高清视频在线| 国产剧情一区二区| 亚洲欧美日韩一区| 精品国产免费人成电影在线观看四季| 国产美女精品一区二区三区| 亚洲色图一区二区三区| 日韩精品一区二区三区三区免费 | 国产精品18久久久| 国产精品视频一二| 欧美午夜在线观看| 成人免费观看av| 香蕉久久一区二区不卡无毒影院| 日韩欧美中文字幕精品| www.色精品| 毛片一区二区三区| 一级精品视频在线观看宜春院 | 色噜噜狠狠色综合中国| 日韩精品亚洲专区| 自拍偷自拍亚洲精品播放| 在线综合视频播放| 欧美综合在线视频| 蜜桃视频在线一区| 亚洲第一福利视频在线| 亚洲色大成网站www久久九九| 一本到高清视频免费精品| 毛片一区二区三区| 亚洲综合色婷婷| 国产精品国产三级国产普通话三级| 日韩女优av电影| 欧美日韩视频第一区| 91视频www| 麻豆精品在线播放| 日韩国产精品大片| 一区二区三区资源| 成人欧美一区二区三区视频网页 | 欧美电影免费观看高清完整版在线 | 亚洲综合精品久久| 中文字幕一区二区不卡| 国产欧美日韩三级| 欧美激情在线观看视频免费| 国产丝袜美腿一区二区三区| 久久久无码精品亚洲日韩按摩| 欧美大胆一级视频| 精品99999| 久久久久久久久久久久久女国产乱 | 在线亚洲高清视频| 欧美日韩一区二区在线视频| 欧美日韩在线精品一区二区三区激情| 欧美人妇做爰xxxⅹ性高电影| 91麻豆精品国产91| 26uuu国产在线精品一区二区| 欧美不卡在线视频| 欧美精品一区二区在线观看| 国产日本欧洲亚洲| 亚洲国产精华液网站w| 一区在线播放视频| 爽好多水快深点欧美视频| 男男视频亚洲欧美| 国内精品视频一区二区三区八戒 | aaa欧美大片| av高清不卡在线| 欧美天天综合网| 日韩欧美色综合网站| 日韩欧美黄色影院| 久久久久久亚洲综合| 亚洲人成网站精品片在线观看| 欧美一区二区视频观看视频| 欧美成人aa大片| 国产亚洲va综合人人澡精品| 精品国产不卡一区二区三区| 亚洲欧洲精品一区二区三区| 亚洲精品成a人| 亚洲成va人在线观看| 石原莉奈在线亚洲二区| 亚洲精品久久久蜜桃| 99免费精品视频| 春色校园综合激情亚洲| 欧美日韩卡一卡二| 欧美一区二区人人喊爽| 日韩一二在线观看| 亚洲精品亚洲人成人网| 中文字幕亚洲综合久久菠萝蜜| 国产精品一区二区三区乱码| 美女精品自拍一二三四| 欧美性淫爽ww久久久久无| 91黄色在线观看| 国产精品理论片在线观看| 久久久久国产精品麻豆| 日本不卡的三区四区五区| 亚洲一区影音先锋| 91麻豆swag| 亚洲伦理在线免费看| 国产成人亚洲综合a∨婷婷图片| 欧美日韩免费电影| 欧美日韩一区二区三区四区 | 国产精品自拍一区| 一区二区三区不卡视频| 亚洲一区二区在线免费看| 99精品国产91久久久久久| 日韩在线一二三区| 欧美三级一区二区| 9191久久久久久久久久久| 亚洲一区在线观看免费观看电影高清 | av日韩在线网站| 色悠久久久久综合欧美99| av日韩在线网站| 精品粉嫩超白一线天av| 国产凹凸在线观看一区二区| 欧美一区二区三区啪啪| 一区二区三区日韩精品视频| 亚洲图片有声小说| 91色.com| 日本久久一区二区| 亚洲在线观看免费视频| 亚洲欧美激情视频在线观看一区二区三区 | 国产乱妇无码大片在线观看| 91麻豆精品国产91久久久更新时间| 欧美日韩精品综合在线| 午夜视频久久久久久| 日本vs亚洲vs韩国一区三区二区 | 一区二区三区欧美激情| eeuss鲁一区二区三区| 色婷婷狠狠综合| 亚洲bdsm女犯bdsm网站| 久久电影网站中文字幕 | 精品处破学生在线二十三| 老司机午夜精品99久久| 国产一区二区三区四区在线观看| 欧美三级视频在线观看| 久久综合九色综合欧美就去吻| 美腿丝袜亚洲综合| 国产欧美一区二区精品婷婷| 一区二区三区日韩精品视频| 91麻豆精品国产91久久久久| 久久网这里都是精品| 国产91露脸合集magnet| 亚洲国产精品久久不卡毛片 | 亚洲电影激情视频网站| 国产精品第13页| 在线观看免费成人| 日韩网站在线看片你懂的| 午夜婷婷国产麻豆精品| 欧美日韩精品高清| 亚洲桃色在线一区| 日本高清不卡aⅴ免费网站| 久久女同互慰一区二区三区| 91麻豆精东视频| 日本一区二区视频在线| 欧美伊人久久久久久久久影院 | 色婷婷亚洲一区二区三区| www.色综合.com| 日韩精品一区国产麻豆| 成人福利电影精品一区二区在线观看| 26uuu精品一区二区| 成人动漫av在线| 欧美性三三影院| 99re66热这里只有精品3直播| 奇米精品一区二区三区在线观看一 | 欧美videos中文字幕| 成人aa视频在线观看| 一色屋精品亚洲香蕉网站| 欧美亚日韩国产aⅴ精品中极品| 亚洲精品中文在线观看| av不卡在线播放| 国产激情一区二区三区桃花岛亚洲| 日韩精品一区二区三区视频| 色欲综合视频天天天| 精品国产乱码久久久久久1区2区| 日本道在线观看一区二区| 成人精品免费网站| 亚洲激情欧美激情| 亚洲欧美日韩电影| 在线视频你懂得一区| 91国产成人在线|