You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL数据库自动备份与恢复问题(Windows定时及报错处理)

PostgreSQL 自动备份与恢复解决方案

一、解决备份命令报错问题

你遇到的pg_dump: error: too many command-line arguments (first is "-s")报错,是因为参数使用错误:

  • -s是仅备份数据库架构的参数,但你需要同时备份架构与数据,直接移除该参数即可(pg_dump默认会备份架构+数据)。
  • 修正后的备份命令如下:
F:
cd F:\softwares\postgresql-12.1-3-windows-x64-binaries\pgsql\bin
pg_dump.exe -U postgres fuelman > E:\fuel_man_prod_backup\prod.sql

额外优化点:

  1. 如果需要避免密码交互,可在脚本中添加环境变量设置:
set PGPASSWORD=你的postgres用户密码
  1. 确保备份目录E:\fuel_man_prod_backup已存在,pg_dump不会自动创建目录。

二、Windows 自动备份(类 Cron 定时触发)

1. 编写定时备份脚本

创建backup_fuelman.bat文件,内容如下:

@echo off
:: 配置参数
set BACKUP_DIR=E:\fuel_man_prod_backup
set PG_BIN_DIR=F:\softwares\postgresql-12.1-3-windows-x64-binaries\pgsql\bin
set DB_NAME=fuelman
set DB_USER=postgres
set DB_PASS=你的postgres用户密码

:: 创建备份目录(不存在则创建)
if not exist %BACKUP_DIR% mkdir %BACKUP_DIR%

:: 生成时间戳,避免备份文件覆盖
set TIMESTAMP=%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%
set TIMESTAMP=%TIMESTAMP: =0%

:: 执行备份
set PGPASSWORD=%DB_PASS%
%PG_BIN_DIR%\pg_dump.exe -U %DB_USER% %DB_NAME% > %BACKUP_DIR%\fuelman_backup_%TIMESTAMP%.sql

:: 可选:自动删除7天前的旧备份
forfiles /p %BACKUP_DIR% /s /m *.sql /d -7 /c "cmd /c del @path"

echo 备份完成,文件路径:%BACKUP_DIR%\fuelman_backup_%TIMESTAMP%.sql

2. 设置 Windows 任务计划

  • 打开「任务计划程序」,点击「创建基本任务」:
    • 任务名称:PostgreSQL fuelman 自动备份
    • 触发器:设置执行频率(例如每天凌晨2点)
    • 操作:选择「启动程序」,选中刚才编写的backup_fuelman.bat
    • 确认任务权限:确保运行任务的用户有权限访问 PostgreSQL 服务和备份目录

三、按需恢复操作

1. 准备工作

  • 停止所有访问目标数据库的应用程序,避免数据冲突
  • 若恢复到新数据库,先创建空数据库:
F:
cd F:\softwares\postgresql-12.1-3-windows-x64-binaries\pgsql\bin
set PGPASSWORD=你的postgres用户密码
createdb.exe -U postgres -O postgres new_fuelman

2. 执行恢复命令

F:
cd F:\softwares\postgresql-12.1-3-windows-x64-binaries\pgsql\bin
set PGPASSWORD=你的postgres用户密码
psql.exe -U postgres -d new_fuelman -f E:\fuel_man_prod_backup\fuelman_backup_xxxxxx_xxxxxx.sql

注意:将fuelman_backup_xxxxxx_xxxxxx.sql替换为实际的备份文件名

3. 恢复到原数据库(谨慎操作)

若需覆盖原数据库,先删除原库再重建恢复:

F:
cd F:\softwares\postgresql-12.1-3-windows-x64-binaries\pgsql\bin
set PGPASSWORD=你的postgres用户密码
dropdb.exe -U postgres fuelman
createdb.exe -U postgres -O postgres fuelman
psql.exe -U postgres -d fuelman -f 备份文件路径.sql

内容的提问来源于stack exchange,提问作者pappu_kutty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 20:55:51