繁体   English   中英

在PostgreSQL中自动执行数据库备份

[英]Automate Database backup in PostgreSQL

我正在寻找一种解决方案-一个脚本来自动化在PostgreSQL中进行数据库备份的过程。 到目前为止,我是手动执行的,即右键单击数据库,然后单击备份选项。 我进行了一些研究,最终得到了一个可以解决该问题的脚本,即:

@ECHO OFF
@setlocal enableextensions
@cd /d "%~dp0"

SET PGPATH=C:\PostgreSQL\9.4\bin\
SET SVPATH=d:\
SET PRJDB=Test
SET DBUSR=postgres
FOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN ('DATE /T') DO SET d=%%i-%%j-%%k
FOR /F "TOKENS=1,2,3 DELIMS=: " %%i IN ('TIME /T') DO SET t=%%i%%j%%k

SET pg_dump=%PRJDB%_%d%_%t%.backup
@ECHO OFF
%PGPATH%pg_dump -h localhost -p 5432 -U postgres %PRJDB% > %SVPATH%%pg_dump%

echo Backup Taken Complete %SVPATH%%pg_dump%
pause 

它确实进行了备份,但是生成的文件是sql文件,尽管我确实将扩展名更改为.backup 结果,如果我需要还原数据库,并尝试从生成的文件中还原,则不可能。 有人可以为我提供解决此问题的方法吗? 提前致谢。

以下脚本可用于获取扩展名为.backup的Postgres备份

 @echo off
       for /f "tokens=1-4 delims=/ " %%i in ("%date%") do (
         set dow=%%i
         set month=%%j
         set day=%%k
         set year=%%l
       )
       set datestr=%day%_%month%_%year%
       echo datestr is %datestr%

       set BACKUP_FILE=C:\Users\slan\Desktop\backup_test\DBNAME_%datestr%.backup
       echo backup file name is %BACKUP_FILE%
       SET PGPASSWORD=YOUR_PASSWORD
       echo on
       bin\pg_dump -i -h localhost -p 5432 -U postgres -F c -b -v -f %BACKUP_FILE% YOUR_DB_NAME

您必须具有PostgreSQL的bin文件夹(例如C:\\PostgreSQL\\9.4\\bin )以及此脚本,否则将无法按预期工作

要计划任务,您可以使用Windows任务计划程序,以下是有关如何执行任务的示例。 - 如何安排批处理文件在Windows 10/8/7中自动运行

您可以使用PGagent计划批处理,它比Windows Scheduler bat脚本具有多个优势

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM