cron插件是PostgreSQL數據庫一個好用的定時任務管理的插件。
注:以下命令均在debian linux bookworm版本系統上驗證通過。
apt安裝cron插件
#獲取軟件包驗證的公鑰
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
#創建軟件包下載來源
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
#pgdg.list如果已經存在的,可以嘗試檢查里面的操作系統版本($(lsb_release -cs)代表的值),直接修改成正確的版本號,比如,bulleye修改為bookworm,再進行apt update
#
sudo apt update
先看下真正要安裝的軟件包
apt list |grep cron
anacron/stable,now 2.3-30 amd64 [installed,automatic]
cron/stable,now 3.0pl1-137 amd64 [installed]
postgresql-13-cron/now 1.5.2-1.pgdg110+1 amd64 [installed,upgradable to: 1.6.2-1.pgdg110+1]
第三條為pg_cron的擴展,所以軟件包的名稱是postgresql-13-cron
。
#執行apt安裝
sudo apt install postgresql-13-cron #或(根據具體數據庫版本來選擇安裝)
sudo apt install postgresql-15-cron
修改時區配置及擴展
#編輯配置文件postgresql.conf,修改或增加以下配置
#重啟數據庫后可以修改一個job的schedule為本地timezone的時間,測試一下時區配置是否成功shared_preload_libraries = 'pg_cron'
cron.timezone = 'Asia/Shanghai'
cron.database_name = 'v1db'
重啟數據庫實例
sudo systemctl list-units |grep postgres
#先羅列安裝的postgresql服務
sudo systemctl restart postgresql
安裝庫內擴展
登錄數據庫
psql -U dbuser -p 5433 -h 192.168.122.1 -d v1db
安裝庫內擴展
v1db=# DROP EXTENSION IF EXISTS pg_cron;
v1db=# CREATE EXTENSION IF NOT EXISTS pg_cron;
CREATE EXTENSION
v1db=# GRANT ALL ON TABLE cron.job TO dbuser;
GRANT
v1db=# GRANT SELECT, USAGE, UPDATE ON SEQUENCE cron.jobid_seq TO dbuser;
GRANT
v1db=# GRANT USAGE ON SCHEMA cron TO dbuser;
GRANT