Автоматизируйте резервное копирование базы данных в 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, В результате, если мне нужно восстановить БД и попытаться восстановить из сгенерированного файла, это невозможно. Может кто-нибудь, пожалуйста, предоставьте мне решение этой проблемы. Заранее спасибо.

1 ответ

Решение

Следующий скрипт может быть использован для получения резервной копии Postgres с .backup расширение

 @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

у вас должна быть папка bin в PostgreSQL (например, C:\PostgreSQL\9.4\bin) вместе с этим сценарием, иначе это не будет работать так, как вы ожидаете

Чтобы запланировать задачу, вы можете использовать планировщик задач Windows, вот пример, как - Как запланировать автоматический запуск командного файла в Windows 10 / 8 / 7

Вы можете использовать PGagent для планирования пакетных работ, он имеет несколько преимуществ по сравнению со скриптами Windows планировщика

Другие вопросы по тегам