亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > 詳解PostgreSQL 實現定時任務的 4 種方法

詳解PostgreSQL 實現定時任務的 4 種方法

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

數據庫定時任務可以用于實現定期的備份、統計信息采集、數據匯總、數據清理與優化等。PostgreSQL 沒有提供類似 Oracle、MySQL 以及 Microsoft SQL Sever 的內置任務調度功能,因此本文給大家介紹一下 PostgreSQL 數據庫中實現定時任務的 4 種方法。

操作系統定時任務

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

crontab -e

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

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

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

舉例來說,輸入以下內容表示每天零點執行數據庫邏輯備份操作。

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

為了安全起見不要直接輸入密碼,而是應該將密碼加入 .pgpass 文件,并且將該文件的權限設置為僅當前用戶可見:

chmod 600 .pgpass

pgAgent

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

安裝 pgAgent

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

創建定時任務

右鍵點擊“pgAgent Jobs”節點,選擇“Create” > “pgAgent Job”創建一個新的定時任務。

其中,“General”頁面可以輸入一些基本信息,包括任務的名稱。“Steps”頁面可以設置多個操作步驟,包括執行的腳本或者 SQL 語句等?!癝chedules”頁面用于定義任務執行的時間計劃?!癝QL”頁面可以顯示創建或者修改任務的語句。

點擊“Save”按鈕保存設置并創建任務,然后我們就可以在“pgAgent Job”節點下看到創建的任務。

pg_cron

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

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

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

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

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

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

安裝 pg_cron

pg_cron 目前只支持 Linux 操作系統。對于 Red Hat、CentOS 以及 Fedora 等操作系統可以使用以下命令進行安裝(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 數據庫獲取所需的元數據。但是我們也可以使用 cron.database_name 配置參數進行設置。

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

重啟 PostgreSQL:

sudo service postgresql-12 restart

然后我們可以使用以下命令創建 pg_cron 函數以及元數據相關的表:

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

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

pg_timetable

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

安裝 pg_timetable

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

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

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

docker run --rm \

 cybertecpostgresql/pg_timetable:latest \

 -h 10.0.0.3 -p 54321 -c worker001

指定環境變量的方式如下:

docker run --rm \

 -e PGTT_PGHOST=10.0.0.3 \

 -e PGTT_PGPORT=54321 \

 cybertecpostgresql/pg_timetable:latest \

 -c worker001

除此之外,我們也可以使用源碼進行編譯安裝。首先下載并安裝 Go 語言環境,然后使用 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

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

$ 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 服務器運行,相當于一個客戶端進程。安裝完成之后,執行以下命令運行 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 目錄中提供了大量的示例可以參考。以下命令可以創建一個 8 月份 00:05 運行“MyJob”的定時任務:

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

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

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

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

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

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

總結

本文介紹了在 PostgreSQL 數據庫中實現定時任務的 4 種方法,包括操作系統定時任務、pgAgent 代理、pg_cron 插件以及 pg_timetable 工具。

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

您可能感興趣的文章:
  • PostgreSQL查看正在執行的任務并強制結束的操作方法

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

巨人網絡通訊聲明:本文標題《詳解PostgreSQL 實現定時任務的 4 種方法》,本文關鍵詞  詳解,PostgreSQL,實現,定時,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解PostgreSQL 實現定時任務的 4 種方法》相關的同類信息!
  • 本頁收集關于詳解PostgreSQL 實現定時任務的 4 種方法的相關信息資訊供網民參考!
  • 推薦文章
    精品国产亚一区二区三区| 国产成人啪精品| 99热精品在线| 久久国产一区二区| 国产成人精品影视| 精品视频一区二区三区免费| 一级片片| 美国一区二区三区| 黄色免费网站在线| 欧美一级视频高清片| 韩国三级香港三级日本三级la| 超级乱淫黄漫画免费| 日韩在线观看免费| 黄色福利片| 午夜激情视频在线观看| 日本免费看视频| 久久99中文字幕久久| 午夜欧美成人香蕉剧场| 国产视频一区在线| 91麻豆国产| 在线观看成人网 | 国产美女在线一区二区三区| 可以免费看污视频的网站| 精品国产三级a| 可以免费看毛片的网站| 国产一区精品| 欧美爱爱网| 欧美一级视频高清片| 久久国产精品自线拍免费| 毛片成人永久免费视频| 久久精品免视看国产成人2021| 精品视频一区二区| 精品久久久久久综合网| 国产精品1024永久免费视频| 四虎久久精品国产| 国产精品自拍一区| 亚洲天堂免费| 午夜激情视频在线播放| 久久国产精品自线拍免费| 欧美激情在线精品video| 一 级 黄 中国色 片| 亚洲女初尝黑人巨高清在线观看| 欧美1区2区3区| 免费的黄视频| 四虎影视库| 日韩在线观看视频网站| 国产麻豆精品视频| 亚欧视频在线| 欧美激情一区二区三区在线播放 | 欧美另类videosbestsex高清 | 国产91精品一区| 国产91精品一区二区| 高清一级片| 国产不卡高清| 青草国产在线| 国产91丝袜高跟系列| 成人免费一级纶理片| 深夜做爰性大片中文| 亚洲 国产精品 日韩| 欧美a级片免费看| 成人高清护士在线播放| 麻豆网站在线看| 精品久久久久久中文字幕一区| 日韩在线观看视频免费| 夜夜操网| 精品久久久久久中文| 日日夜人人澡人人澡人人看免| 毛片成人永久免费视频| 久久精品免视看国产成人2021| 国产成人精品综合在线| 国产极品精频在线观看| 成人a大片高清在线观看| 可以免费看毛片的网站| 日韩中文字幕一区| 亚洲精品久久玖玖玖玖| 成人免费网站视频ww| 日本特黄特黄aaaaa大片| 成人影视在线播放| 日本特黄一级| 国产不卡福利| 国产不卡在线观看视频| 亚飞与亚基在线观看| 青青青草影院 | 日韩免费在线视频| 深夜做爰性大片中文| 欧美大片a一级毛片视频| 久久国产影视免费精品| 青青青草视频在线观看| 成人影视在线播放| 国产高清在线精品一区a| 一本高清在线| 国产一级生活片| 91麻豆高清国产在线播放| 精品国产亚洲人成在线| 精品国产亚洲人成在线| 久久久久久久久综合影视网| 精品视频在线观看视频免费视频| 99久久精品国产高清一区二区| 日韩av片免费播放| 99久久精品国产麻豆| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 91麻豆精品国产高清在线| 欧美国产日韩在线| 欧美激情影院| 久久精品道一区二区三区| 欧美1区| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 日韩一级黄色大片| 国产不卡在线观看| 亚洲www美色| 国产伦精品一区二区三区在线观看| 日日夜夜婷婷| 午夜在线影院| 国产极品精频在线观看| 麻豆污视频| 一级女性大黄生活片免费| 精品视频在线观看免费| 国产一区精品| 九九久久99| 韩国三级香港三级日本三级| 日韩av东京社区男人的天堂| 在线观看成人网 | 久久国产精品永久免费网站| 午夜久久网| 日本免费看视频| 亚洲精品久久玖玖玖玖| 国产网站免费| 精品视频在线看| 亚洲女初尝黑人巨高清在线观看| 国产成a人片在线观看视频| 国产不卡精品一区二区三区| 一级女人毛片人一女人| 九九九网站| 日韩在线观看网站| 日韩专区亚洲综合久久| 国产麻豆精品视频| 国产综合成人观看在线| 日韩专区亚洲综合久久| 四虎影视久久久| 日本免费乱理伦片在线观看2018| 99久久精品国产国产毛片| 久久成人亚洲| 欧美18性精品| 韩国三级视频在线观看| 中文字幕97| 亚洲第一页色| 韩国三级香港三级日本三级| 欧美α片无限看在线观看免费| 国产一级生活片| 91麻豆精品国产综合久久久| 久草免费在线视频| 91麻豆tv| 一级女性大黄生活片免费| 国产91丝袜在线播放0| 亚飞与亚基在线观看| 欧美激情中文字幕一区二区| 四虎论坛| 精品国产一区二区三区久| 成人免费网站久久久| 国产视频一区在线| 免费一级片在线| 国产91丝袜在线播放0| 美女免费毛片| 亚洲 男人 天堂| 九九精品在线| 91麻豆精品国产综合久久久| 欧美大片a一级毛片视频| 国产一区精品| 国产麻豆精品hdvideoss| 精品国产一级毛片| 国产网站在线| 国产麻豆精品高清在线播放| 亚洲第一页乱| 日韩中文字幕在线亚洲一区 | 日本免费乱理伦片在线观看2018| 欧美大片a一级毛片视频| 一级毛片视频播放| 国产一区国产二区国产三区| 日本特黄特色aa大片免费| 亚洲天堂在线播放| 韩国三级一区| 日韩欧美一二三区| 亚洲天堂在线播放| 欧美大片a一级毛片视频| 欧美国产日韩精品| 免费国产在线观看| 色综合久久天天综线观看| 久久久成人网| 国产成人精品影视| 色综合久久天天综合| 欧美日本二区| 青草国产在线| 四虎论坛| 二级特黄绝大片免费视频大片| 成人免费观看的视频黄页| 国产亚洲免费观看| 久草免费在线色站| 欧美激情一区二区三区在线| 日本免费乱人伦在线观看| 免费的黄视频|