Резервное копирование баз PostgreSQL





Сегодня мы рассмотрим резервирование БД одной из тройки распространенных СУБД -  PostrgreSQL.
В сети можно найти официальный мануал, который собственно описывает несколько способов снятия дампа с БД. НО при наличии нескольких баз он превращается в запутанное чудовище. Ниже я предоставлю текст скрипта, в который просто необходимо добавить имена баз, и наслаждаться резервными копиями.

@ECHO on
setlocal EnableDelayedExpansion

rem global conf
SET dr=%1
set df=%2
set f_date=%date%
set f_year=%f_date:~6,4%
set f_month=%f_date:~3,2%
set f_day=%f_date:~0,2%
SET ddate=%f_year%_%f_month%_%f_day%

rem cleaning
net use x: /delete /y
net use x: \\172.172.172.172\bases\1c8
  del /F /S /Q c:\BackUp\temp\
forfiles /P c:\BackUp\%dr% /S /D -%df%  /C "cmd /c  del /F /S /Q @file"
forfiles /P x:\BackUp\%dr% /S /D -%df%  /C "cmd /c  del /F /S /Q @file"


rem base conf
set elem[1]=Base
set elem[2]=Base2
set start=1
set end=2

set i=1
rem GO!


for /L %%i in (%start%,1,%end%) do (
  echo db name -- !elem[%%i]!
  set db=%ddate%_!elem[%%i]!
  del %ddate%_!elem[%%i]!
 
  "C:\Program Files\PostgreSQL\9.0.3-3.1C\bin\pg_dump.exe"  --blobs --clean   --file=C:\backup\temp\%ddate%_!elem[%%i]!.pg.sql --format=plain -U postgres !elem[%%i]!
  c:\backup\script\7za.exe a  -t7z c:\BackUp\%dr%\%ddate%_!elem[%%i]!.pg.7z c:\BackUp\temp\%ddate%_!elem[%%i]!.pg.sql
  move c:\BackUp\%dr%\%ddate%_!elem[%%i]!.pg.7z x:\BackUp\%dr%\%ddate%_!elem[%%i]!.pg.7z

)
net use x: /delete /y

Скрипт очень простой. В первой часть  вычисляем дату, во второй  проводим очистку папок. В третей части вводим список баз, и выставляем счётчики начала и  конца списка баз. Далее последовательно перебираем массив с именами файлов баз и выполняем резервное копирование.
            Аргументами к файлу скрипта необходимо указывать модификатор  тип копии (day/week/month - и соответственно в корневых папках должны быть соответствующие подпапки), а так же срок хранения копий в днях.


Валерий Кулик
http://efsol.ru/solutions/data-protection.html

Комментариев нет:

Отправить комментарий