Postgresql定时任务工具(转载)

PostgreSQL 没有内置的定时任务函数,如果想要定期执行一些脚本,需要需要配合其他工具执行。

1.第一种方法crontab,这个就不多说了,linux系统自带的定时任务,可以运行命令脚本。
crontab -e
打开文件,添加如下格式的命令

如:每天的00:00执行my.sql脚本

0 0 * * * psql -U username -d database < my.sql
1
每个星期一的2:00执行pg_dump备份

0 2 * * 1 pg_dump --no-password -U user database > backup.sql
1
如果想免密登陆,可以在.pgpass文件中添加相关密码

hostname:port:database:username:password
1
设置权限为600

chmod 600 .pgpass
1
2.使用pg_cron插件,此插件只支持linux平台
– 每个星期一的01:00删除log表一周前的记录

SELECT cron.schedule(‘0 1 * * 1’, D E L E T E F R O M l o g W H E R E c r e a t e d t i m e < n o w ( ) − i n t e r v a l ′ 1 w e e k ′ DELETE FROM log WHERE created_time < now() - interval '1 week' DELETEFROMlogWHEREcreatedtime<now()interval1week);

– 每天10:00执行vacuum

SELECT cron.schedule(‘0 10 * * *’, ‘VACUUM’);

– 取消所有任务

SELECT cron.unschedule(jobid) FROM cron.job;
1
2
3
4
5
6
7
8
9
10
11
PostgreSQL 11 on Red Hat, CentOS, Fedora, Amazon Linux安装过程如下:

Add Citus Data package repository

curl https://install.citusdata.com/community/rpm.sh | sudo bash

Install the pg_cron extension

sudo yum install -y pg_cron_11
1
2
3
4
5
6
7
For PostgreSQL 11 Debian 或者 Ubuntu 使用以下命令:

Install the pg_cron extension

sudo apt-get -y install postgresql-11-cron
1
2
3
然后数据库配置文件,添加如下

add to postgresql.conf:

shared_preload_libraries = ‘pg_cron’

cron.database_name = ‘postgres’
1
2
3
4
5
最后重启数据库

sudo /bin/systemctl restart postgresql-11

#or

sudo service postgresql-11 restart
1
2
3
4
5
创建pg_cron插件相关函数和元数据表

– run as superuser:

CREATE EXTENSION pg_cron;

– optionally, grant usage to regular users:

GRANT USAGE ON SCHEMA cron TO username;
1
2
3
4
5
6
7
参考:
https://github.com/citusdata/pg_cron
man crontab

原文链接:https://blog.csdn.net/dazuiba008/article/details/108219990?utm_medium=distribute.pc_feed.none-task-blog-personrec_tag-10.nonecase&depth_1-utm_source=distribute.pc_feed.none-task-blog-personrec_tag-10.nonecase&request_id=5f472741cea070620e9400a4

你可能感兴趣的:(Postgresql定时任务工具(转载))