在 Ubuntu 上为 pgAdmin 相关操作设置定时任务
一 核心思路
二 方法一 使用 cron 调度脚本
chmod +x /home/ubuntu/backup.sh
crontab -e
0 2 * * * /home/ubuntu/backup.sh >> /var/log/pg_backup.log 2>&1
crontab -lcrontab -r分 时 日 月 周;如 0 6 * * * /path/script.sh 表示每天 06:00 执行三 方法二 使用 pg_cron 在数据库内调度 SQL
sudo apt-get update
sudo apt-get install -y postgresql-XX-cron # 将 XX 替换为你的 PostgreSQL 主版本号
-- 连接到目标数据库后执行
CREATE EXTENSION IF NOT EXISTS pg_cron;
-- 每天 00:00 执行 VACUUM(可按需改为 ANALYZE/自定义 SQL)
SELECT cron.schedule('0 0 * * *', $$ VACUUM; $$);
-- 查看
SELECT * FROM cron.job;
-- 取消
SELECT cron.unschedule(jobid);
四 方法三 使用 pgAgent 图形化调度
五 方法对比与选择建议
| 方法 | 执行位置 | 优势 | 局限 | 典型用途 |
|---|---|---|---|---|
| cron | 操作系统 | 简单通用、生态成熟、易日志与告警集成 | 依赖外部脚本与环境变量;缺少数据库内上下文 | 备份、导出、系统维护脚本 |
| pg_cron | 数据库内 | 与数据库强绑定、无需外部进程;SQL 即作业 | 需安装扩展与权限;复杂依赖管理较弱 | VACUUM、ANALYZE、定时统计 |
| pgAgent | pgAdmin 管理 | 图形化、步骤编排、日志集中 | 需额外部署与维护;资源占用略高 | 企业内可视化调度与审计 |