暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

pg_cron 实现定时任务功能

原创 岳麓丹枫 2023-04-15
326

安装

git clone https://github.com/citusdata/pg_cron.git
cd pg_cron
export PATH=/usr/local/pgsql/bin:$PATH
make && make install
复制

使用

  • 修改配置文件
vim postgresql.auto.conf
[postgres@node01 data]$ tail -2 postgresql.auto.conf
shared_preload_libraries = ‘pg_cron’
cron.database_name = ‘test’ # 根据实际情况, 修改指定为你想要创建定时任务的的数据库

# 可选
cron.use_background_workers = on
max_worker_processes = 20
复制
  • 设置 本地免密登录
vim pg_hba.conf
local all all trust # 主要是第一行配置是必须的
…

复制
  • 创建扩展
psql -U postgres -d test create extension pg_cron; SELECT * FROM cron.job; test=# create extension pg_cron; CREATE EXTENSION test=# SELECT * FROM cron.job; jobid | schedule | command | nodename | nodeport | database | username | active | jobname -------±---------±--------±---------±---------±---------±---------±-------±-------- (0 rows)
复制
  • 测试
create table test(id int);
SELECT cron.schedule(’* * * * *’,‘insert into test values(1);’); – 配置定时任务
select * from cron.job; – 查看当前定时任务配置
select * from cron.job_run_details ; – 查看运行过的定时任务

jobid | runid | job_pid | database | username | command | status | return
_message | start_time | end_time
-------±------±--------±---------±---------±----------------------------±----------±------
---------±------------------------------±------------------------------
1 | 1 | 907 | test | postgres | insert into test values(1); | succeeded | INSERT
0 1 | 2023-04-15 19:30:00.008648+08 | 2023-04-15 19:30:00.011271+08
(1 rows)

test=# select * from test;
id
----
1
(1 rows)

CREATE OR REPLACE FUNCTION func_test(int)
RETURNS int
AS BODYBODY
DECLARE
BEGIN
insert into test values(1); return 0; END;1);return0;END;BODY$ LANGUAGE plpgsql ;

SELECT cron.schedule(’* * * * *’,‘select func_test(10);’);
select * from test;
test=# select * from test;
id
----
1
1
1
1
1
1
1
1
1
1
1
10
1

复制
最后修改时间:2023-04-15 19:44:00
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论