pgagent

PostgreSQL任务调度工具,与PGADMIN配合使用

概览

扩展包名版本分类许可证语言
pgagent4.2.3ADMINPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
5880pgagent-
相关扩展pg_cron pg_task pg_jobmon pg_partman pglogical pg_background pg_repack pg_rewrite

版本

类型仓库版本PG 大版本包名依赖
EXTPGDG4.2.31817161514pgagent-
RPMPGDG4.2.31817161514pgagent_$v-
DEBPGDG4.2.31817161514pgagent-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
d12.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
d13.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
d13.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
u22.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
u22.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
u24.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
u24.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS

安装

您可以直接安装 pgagent 扩展包的预置二进制包,首先确保 PGDG 仓库已经添加并启用:

pig repo add pgdg -u          # 添加 PGDG 仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install pgagent;          # 当前活跃 PG 版本安装
pig ext install -y pgagent -v 18  # PG 18
pig ext install -y pgagent -v 17  # PG 17
pig ext install -y pgagent -v 16  # PG 16
pig ext install -y pgagent -v 15  # PG 15
pig ext install -y pgagent -v 14  # PG 14
dnf install -y pgagent_18       # PG 18
dnf install -y pgagent_17       # PG 17
dnf install -y pgagent_16       # PG 16
dnf install -y pgagent_15       # PG 15
dnf install -y pgagent_14       # PG 14
apt install -y pgagent   # PG 18
apt install -y pgagent   # PG 17
apt install -y pgagent   # PG 16
apt install -y pgagent   # PG 15
apt install -y pgagent   # PG 14

创建扩展

CREATE EXTENSION pgagent;

用法

pgagent: PostgreSQL 作业调度器

pgAgent 是 PostgreSQL 的作业调度代理,能够在复杂的调度计划上运行多步骤的批处理/Shell 脚本和 SQL 任务。它以守护进程方式运行,并将作业定义存储在数据库中。

核心概念

  • 作业(Job):包含一个或多个步骤和调度计划的可调度命名单元
  • 步骤(Step):作业中的单个操作(SQL 脚本或 OS 批处理/Shell 命令)
  • 调度(Schedule):定义作业何时运行,具有类似 cron 的灵活性

通过 SQL 管理作业

pgAgent 将其配置存储在 pgagent 模式中。作业可以通过 pgAdmin 或直接通过 SQL 管理。

-- 查看所有作业
SELECT jobid, jobname, jobenabled, jobdesc
FROM pgagent.pga_job;

-- 查看作业步骤
SELECT jstid, jstjobid, jstname, jstenabled, jstkind, jstcode
FROM pgagent.pga_jobstep;

-- 查看作业调度
SELECT jscid, jscjobid, jscname, jscenabled,
       jscstart, jscend, jscminutes, jschours,
       jscweekdays, jscmonthdays, jscmonths
FROM pgagent.pga_schedule;

-- 查看作业执行日志
SELECT * FROM pgagent.pga_joblog
WHERE jlgjobid = 1 ORDER BY jlgstart DESC;

-- 查看步骤执行日志
SELECT * FROM pgagent.pga_jobsteplog
WHERE jsljlgid IN (SELECT jlgid FROM pgagent.pga_joblog WHERE jlgjobid = 1)
ORDER BY jslstart DESC;

步骤类型

类型描述
s针对数据库执行的 SQL 脚本
b在操作系统上执行的批处理/Shell 命令

调度字段

字段描述
jscstart / jscend调度的有效日期范围
jscminutes布尔数组[60]:在哪些分钟运行
jschours布尔数组[24]:在哪些小时运行
jscweekdays布尔数组[7]:在一周的哪几天运行
jscmonthdays布尔数组[32]:在一月的哪几天运行
jscmonths布尔数组[12]:在哪些月份运行

安全性

pgAgent 守护进程使用存储的连接字符串连接到数据库。只有数据库超级用户或被授予 pgagent 模式表适当权限的用户才能管理作业。


最后修改 2026-03-14: update extension metadata (953cbd0)