pgagent
PostgreSQL任务调度工具,与PGADMIN配合使用
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pgagent | 4.2.3 | ADMIN | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 5880 | pgagent | 否 | 是 | 否 | 是 | 否 | 否 | - |
| 相关扩展 | pg_cron pg_task pg_jobmon pg_partman pglogical pg_background pg_repack pg_rewrite |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PGDG | 4.2.3 | 1817161514 | pgagent | - |
| RPM | PGDG | 4.2.3 | 1817161514 | pgagent_$v | - |
| DEB | PGDG | 4.2.3 | 1817161514 | pgagent | - |
安装
您可以直接安装 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 的作业调度代理,能够在复杂的调度计划上运行多步骤的批处理/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 模式表适当权限的用户才能管理作业。