postgresql windows 自动备份

前端之家收集整理的这篇文章主要介绍了postgresql windows 自动备份前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

windows下postgresql 自动备份脚本,采用bat批处理脚本编写,windows任务计划定时执行。

每天备份一次,主要采用pg_dump 备份指定库,同时删除 7 天以前的备份文件

  1. @echo off
  2. @setlocal enableextensions
  3. @cd /d "%~dp0"
  4.  
  5. set PGHOME="D:\Program Files\Postgresql\9.2\bin"
  6.  
  7. set PGDATA="D:\Program Files\Postgresql\9.2\data"
  8. set BACKUP_DIR="E:\lier\backup\test"
  9.  
  10. set day=%date%
  11. :: 提取日期
  12. for /f "tokens=1-3 delims=-/. " %%i in ("%day%") do (
  13. set /a sy=%%i,sm=100%%j %% 100,sd=100%%k %% 100
  14. )
  15. set DATE_1=%sy%-%sm:~-2%-%sd:~-2%
  16. ::echo %DATE_1%
  17. ::pause>nul
  18.  
  19. :: 7天前
  20. set /a sd-=7
  21. if %sd% leq 0 call :count
  22.  
  23. set DATE_2=%sy%-%sm:~-2%-%sd:~-2%
  24.  
  25. if exist %BACKUP_DIR%\db_lier_back_%DATE_2% (del /f %BACKUP_DIR%\db_lier_back_%DATE_2%)
  26.  
  27. if not exist %BACKUP_DIR%\db_lier_back_%DATE_1% (%PGHOME%\pg_dump.exe -h localhost -p 5432 -U postgres -b -Fp lierserver > %BACKUP_DIR%\db_lier_back_%DATE_1%)
  28.  
  29. :count
  30. set /a sm-=1
  31. if !sm! equ 0 set /a sm=12,sy-=1
  32. call :days
  33. set /a sd+=days
  34. if %sd% leq 0 goto count
  35. goto :eof
  36.  
  37. :days
  38. :: 获取指定月份的总天数
  39. set /a leap="^!(sy %% 4) & ^!(^!(sy %% 100)) | ^!(sy %% 400)"
  40. set /a max=28+leap
  41. for /f "tokens=%sm%" %%i in ("31 %max% 31 30 31 30 31 31 30 31 30 31") do set days=%%i
  42. goto :eof
在设置任务计划时,有几个注意点:

1.Task Scheduler系统服务要自动启动

2. 任务计划的执行用户为有密码账户

3. 执行用户为当前系统运行用户,否者pg_dump命令堵塞。这一点谁知道怎么解决

猜你在找的Postgre SQL相关文章