Резервное копирование и обслуживание баз Postgre SQL в Windows

Резервное копирование и обслуживание баз Postgre SQL в Windows скриптами командной строки

В интернете много различной информации о том как сделать бэкап , vacuum и reindeх баз postgresql..  Можно написать кучу bat файлов, на каждую базу и угомониться. В данном опусе собран и опробован инструмент для "ленивых" админов… Ведь нужно, не только обслужить,выполнить резервное копирование, но и предусмотреть, чтобы удалялись старые резервные копии, дабы избежать переполнения диска.

  • Итак, набор состоит из 3х bat файлов, при помощи которых, мы осуществляем обслуживание и резервное копирование..

1. db_vacuum_reindex.bat  — цикличное выполнение  vacuum и reidex для объявленных баз массива

2. db_backup.bat — цикличное резервное копирование и анализ (удаление) старых копий

(для работы нужен еще и архиватор 7z.exe )

3.  params.bat — набор параметров для работы вышеперечисленных bat файлов.

  • Вводимые параметры файла (params.bat):

set WORKPATH=d:scripts — основная директория, где хранятся скрипты и поддиректории резервных копий, темп и т.д. 

set PGBASES=(base1 base2 base3 base4) — Массив обрабатываемых баз postgres 

Основные директории исполняемых файлов postgres и 7z

set PGBINPATH="C:Program FilesPostgreSQL9.6.7-1.1Cin"
set PATH7Z="C:Program Files7-Zip"

Прочие Переменные
SET PGPASSWORD= *******  — Ваш пароль на postgres

Количество дней  хранения резервных копий
SET DAYSAGO=2

Подключение к sql серверу
set mhost=127.0.0.1
set mport=5432
set musername="postgres"
set mrole="postgres"

  • В файле db_vacuum_reindex.bat происходит цикличный перебор всех баз объявленного массива vacuum и reidex

for %%i IN %PGBASES% DO (
echo start vacuum %%i >>%logfile%
%PGBINPATH%vacuumdb.exe —dbname %%i —host %mhost% —port %mport% —username %musername% —no-password —echo —full —analyze >>%logfile% 

Реиндексация

%PGBINPATH%
eindexdb.exe —dbname %%i —host %mhost% —port %mport% —username %musername%  —no-password —echo >>%logfile%

  • В файле  db_backup.bat происходит резервное копирование 

for %%i IN %PGBASES% DO (
@echo ******* %%i ******** >>%logfile% 
%PGBINPATH%pg_dump —dbname %%i —host %mhost% —port %mport% —username %musername% —role %mrole% —no-password —file %PGTMP%\%%i_%f_name%.pgsql.backup >>%logfile%  
….

архивирование

%PATH7Z%7z.exe a -tzip %PGTMP%\%%i_%f_name%.pgsql.zip %PGTMP%\%%i_%f_name%.pgsql.backup >>%logfile% 

После чего происходит анализ поддиректорий резервных копий и удаление ненужных

——————————————————

Состав zip файла поставки:

db_backup.bat

db_vacuum_reindex.bat

params.bat

Послесловие: Можно доработать механизм хранения резервных файлов до хранения и помесячно.. Все в Ваших руках…

Вот и все! Удачи Вам и хорошего дня)

 

2 Comments

  1. lnformatic

    Использую следующие cmd скрипты.

    для архивации

    — «C:Program FilesPostgreSQL9.6.6-1.1Cinpg_dump.exe» -h localhost -p 5432 -U postgres -w -d dbNAME -F c -o -v -Z 9 -f «D:BACKUP\%date%.dbNAME.backup»

    для обслуживания

    — «C:Program FilesPostgreSQL9.6.6-1.1Cinvacuumdb.exe» -h localhost -p 5432 -U postgres -w -e -z -a

    «C:Program FilesPostgreSQL9.6.6-1.1Cin
    eindexdb.exe» -h localhost -p 5432 -U postgres -w -e -a

    Кто подскажет, как доработать скрипты чтобы сохранялись логи с полным текстом обслуживания баз ?

    Reply
  2. user598613_svp_gamma

    Поидее можно сбрасывать вывод в файл >>

    Например:

    pg_dump —dbname %%i —host %mhost% —port %mport% —username %musername% —role %mrole% —no-password —file %PGTMP%\%%i_%f_name%.pgsql.backup >>%logfile%

    где logfile — Ваш файл

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *