pg_cron crontab 日志

Posted

技术标签:

【中文标题】pg_cron crontab 日志【英文标题】:Pg_cron crontab log 【发布时间】:2017-11-16 18:33:03 【问题描述】:

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

系统信息

操作系统:Linux pg 4.4.0-72-generic #93-Ubuntu SMP PG:从 repo 'deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main' 安装 Postgres 9.6.3

Citusdata pg_cron 项目

https://github.com/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 的日志来检查调度结果?

提前致谢!

【问题讨论】:

【参考方案1】:

要从 db 服务器调度作业,我们需要在 pg_hba.conf 中为运行 cron 作业的用户启用信任身份验证。 我们还需要运行 UPDATE cron.job SET nodename = '' 以使 pg_cron 通过本地(unix 域)套接字连接或在 pg_hba.conf 中添加所有 127.0.0.1/32 主机 允许通过本地 TCP 连接访问 pg_cron 后台工作程序。

作为基本的健全性检查以查看是否启用了日志记录,我们运行 SELECT cron.schedule('* * * * *', 'SELECT 1') 它将在每分钟开始时运行 SELECT 1 并且应该显示在常规的 postgres 日志中。

【讨论】:

嗨,玛蒂娜。请查看github.com/citusdata/pg_cron/issues/66。我的情况与您的情况几乎相似,但我正在尝试使用密码(md5)身份验证。我不想问一个新问题。蒂亚【参考方案2】:

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

su -c "YourqueryHere" postgres

所以你不需要 pg_cron,除非你需要能够直接从数据库服务器安排作业。

【讨论】:

非常感谢,是的,我们可以完全控制 Linux 系统,这是一个可行的解决方案。能够从 db 服务器安排作业仍然很有用,因此我们也在等待其他建议。【参考方案3】:

两件事:

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

【讨论】:

以上是关于pg_cron crontab 日志的主要内容,如果未能解决你的问题,请参考以下文章

如何查看crontab的日志记录

解决crontab cron 无日志 开启日志 log

如何查看crontab的日志记录

ubuntu查看crontab日志

liunx 使用crontab定时任务+shell脚本删除tomcat日志elasticsearch日志索引

Ubuntu查看crontab运行日志