详细说明在PostgreSQL中实现定时任务的四种方法
  • 作者:admin
  • 发表时间:2021-04-24 07:53
  • 来源:未知

数据库定时任务可用于实现定期备份、统计信息收集、数据汇总、数据清理和优化等。PostgreSQL不像Oracle、MySQL、微软SQL Sever那样提供内置的任务调度功能。为此,本文介绍了在PostgreSQL数据库中实现调度任务的四种方法。

操作系统计时任务

Linux crontab或Windows任务调度器为我们提供了一种传统的方法来实现预定的任务。以crontab为例,我们可以用以下命令编辑任务列表:

1crontab -e

然后使用以下格式在打开的文件中添加一行数据:

#分钟、小时、日、月和周命令

#(0-59)(0-23)(1-31)(1-12)(0-7[7或0==星期日])

分钟小时月日周日命令

前五个字段指示命令执行的时间,您可以使用星号(*)来匹配所有时间。例如,设置为星号意味着该命令每月执行一次。

例如,输入以下内容表示数据库逻辑备份操作每天在零执行。

10 0 * * * pg_dump -无密码-U用户db_name backup.sql

出于安全原因,不要直接输入密码,而是将密码添加到。p传递文件并将文件权限设置为仅对当前用户可见:

1chmod 600。pgpass

pgAgent

PgAgent是一个PostgreSQL数据库的任务调度代理,可以根据复杂的调度计划运行多步批处理、shell脚本和SQL命令。对于Unix/Linux系统,pgAgent作为后台进程运行。在Windows系统上,pgAgent作为服务运行。

安装pgAgent

管理工具PgAdmin 4集成了pgAgent的功能,但需要单独安装。我们可以通过官网下载PgAdmin 4和pgAgent。具体安装步骤和注意事项请参考官网文档。安装完成后,我们可以在PgAdmin 4左侧的导航树中看到“pgAgent Jobs”节点。

创建计划任务

右键单击“代理作业”节点,然后选择“创建”“代理作业”以创建新的计划任务。

“常规”页面可以输入一些基本信息,包括任务的名称。在“步骤”页面上,您可以设置多个操作步骤,包括已执行的脚本或SQL语句。计划页面用于定义任务执行的时间计划。“SQL”页可以显示创建或修改任务的语句。

单击“保存”按钮保存设置并创建任务,然后我们可以在“pgAgent Job”节点下看到创建的任务。

pg_cron

Pg_cron是citusdata公司开发的PostgreSQL定时器插件(类似于Oracle中的DBMS_SCHEDULER)。Pg_cron作为后台工作流程运行,使用类似于cron的编辑语法,可以直接在数据库中执行预定任务。例如:

-每周六上午3:30(格林尼治时间)删除历史记录

SELECT cron.schedule('30 3 * * 6 ',$ $ DELETE FROM events WHERE event _ time now()-interval ' 1 week ' $ $);