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