postgresql Pg_cron crontab日志

fivyi3re  于 2023-05-17  发布在  PostgreSQL
关注(0)|答案(4)|浏览(120)

我们正在尝试在Postgresql中配置定期作业。为此,我们在运行postgres 9.6的linux机器上安装了citusdata pg_cron项目。

系统信息

按照pg_cron存储库中的说明,我们在postgresql.conf中设置以下配置

shared_preload_libraries = 'pg_cron'   
cron.database_name = 'our db_name'

然后,在db_name上创建EXTENSION pg_cron

CREATE EXTENSION pg_cron;

我们安排了第一个postgres任务:

SELECT cron.schedule('45 12 * * *', $$CREATE TABLE testCron AS Select 'Test Cron' as Cron$$);

因此,创建了jobid 1并将其列在表cron. job中。
我们预计在12:45将启动预定作业的命令。
但什么也没发生。
testCron表没有创建,我们在任何日志中都没有跟踪。
我们还在/usr/src/pg_cron/include/pathnames. h中定义了LOG_FILE来启用日志记录。
但是,在重新编译项目并重新启动postgres服务后,我们没有跟踪pg_cron的日志。
有人能帮帮我们吗
如何启用pg_cron的日志来检查调度结果?
先谢谢你了!

pxy2qtax

pxy2qtax1#

要从数据库服务器调度作业,我们需要在pg_hba.conf中为运行cron作业的用户启用信任身份验证。我们还需要运行UPDATE cron.job SET nodename = ''让pg_cron通过本地(unix域)套接字连接,或者127.0.0.1/32在pg_hba.conf中添加host all all www.example.com,以允许通过本地TCP连接访问pg_cron后台工作进程。
作为一个基本的健全性检查,看看是否启用了日志记录,我们运行SELECT cron.schedule('**** *','SELECT 1'),它将在每分钟开始时运行SELECT 1,并且应该会显示在常规的postgres日志中。

fbcarpbf

fbcarpbf2#

两件事:

  • 检查常规pg日志(配置在postgresql.conf中)
  • 运行select * from cron.job_run_details
pcww981p

pcww981p3#

假设你完全控制了Linux系统,你可以在root的crontab中使用它:

su -c "YourqueryHere" postgres

因此,除非需要能够直接从数据库服务器调度作业,否则不需要pg_cron。

ljsrvy3e

ljsrvy3e4#

您必须使用服务器时间来安排cron作业,而不是您的本地时间,它将工作。

相关问题