Navicat定时备份PostgreSQL必须通过“自动运行→新建批处理作业”实现,而非右键连接的“计划任务”面板;需先创建备份任务并保存,再设置调度,且客户端需常驻运行。
Navicat定时备份PostgreSQL必须用批处理作业,不是“计划任务”面板
navicat for postgresql 的“计划任务”右键菜单(如连接上右键 → 计划任务)在多数版本中实际不支持 postgresql 备份调度——它只对 mysql 可见或可用。真正能跑起来的定时备份,必须走 自动运行 → 新建批处理作业 这条路径。否则你会卡在界面里,点完“启用计划”却毫无反应。
常见错误现象:右键数据库选“计划任务”,弹窗里没“备份数据库”选项;或者点了“新建计划任务”后保存成功,但到设定时间无任何日志、无文件生成。
- 确认你打开的是
自动运行标签页(顶部菜单栏),不是右键连接弹出的“计划任务” - PostgreSQL 备份工作项只能通过
添加工作→ 从“可用的工作”列表双击备份数据库加入,不能拖拽或从其他入口插入 - 必须指定 PostgreSQL 连接名(不是服务器地址),且该连接需已测试成功并保持在连接列表中
备份目标选 .sql 还是 .nb3?生产环境优先选 SQL 文件
.nb3 是 Navicat 专有格式,压缩率高、还原快,但绑定 Navicat 版本,跨大版本(比如从 16 升级到 17)可能打不开;.sql 是纯文本,可用 psql 命令行直接恢复,也方便 grep 查字段、diff 比较差异,审计和灾备更可靠。
如果你的 PostgreSQL 备份要满足合规要求、或需要离线验证内容,别图省事选 .nb3。
- 在备份对话框的“常规”页签,文件类型下拉选
SQL 文件(不是“Navicat 备份”) - 文件名建议含日期变量:
pg_backup_%Y%m%d.sql,Navicat 支持%Y%m%d,但不支持%H(小时) - 勾选“导出结构和数据”,取消“仅导出结构”——否则还原时只有空表
触发器设置失败的三个典型原因
点了“设置任务计划”→“新建触发器”→设好每天 2:00 执行,结果没跑,大概率是这三个地方之一断了:
-
触发器未启用:新建后默认不勾选“启用此触发器”,必须手动打钩 - Navicat 客户端未常驻运行:Navicat 的自动运行依赖其主进程(
navicat.exe)在后台存活。如果关掉主窗口,任务就停摆;没有 Windows 服务模式(不像 MySQL 的 mysqldump 可配为系统服务) - 路径权限问题:备份路径如
D:\backups\若不存在,或当前用户无写入权限,任务会静默失败——不会弹错,只在自动运行窗口的状态列显示“失败”,双击该行才能看到错误信息Failed to create backup file: Permission denied
想真正无人值守?绕开 Navicat 直接用 pg_dump
Navicat 的自动运行本质是 GUI 调度器,依赖客户端在线、Windows 用户登录、GUI 权限。一旦远程桌面断开、锁屏或账户登出,备份就停。真要 7×24 运行,得切到原生命令。
步骤很简单:写个 backup_pg.bat,内容类似:
set PGHOST=localhost set PGPORT=5432 set PGDATABASE=mydb set PGUSER=postgres "C:\Program Files\PostgreSQL\15\bin\pg_dump.exe" -U %PGUSER% -F c -b -v -f "D:\backups\mydb_%date:~0,4%%date:~5,2%%date:~8,2%.backup" %PGDATABASE%
再用 Windows 任务计划程序调用它,并勾选“不管用户是否登录都要运行”+“使用最高权限运行”。这样即使没人登录,只要系统开机,备份照常执行。
注意:pg_dump 默认不压缩,加 -Z 9 可启用 gzip 压缩;-F c 生成自定义格式(.backup),比 SQL 更小、支持并行还原,但必须用 pg_restore 恢复,不能直接 psql。


















