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

Публикация № 942909

Администрирование - Администрирование данных 1С - Архивирование (backup)

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

14
Резервное копирование и обслуживание баз 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 Files\PostgreSQL\9.6.7-1.1C\bin"
set PATH7Z="C:\Program Files\7-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%\reindexdb.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

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

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

 

14

Скачать файлы

Наименование Файл Версия Размер
db_service
.zip 1,85Kb
14.11.18
19
.zip 1,85Kb 19 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. lnformatic 26.11.18 15:41 Сейчас в теме
Использую следующие cmd скрипты.
для архивации
- "C:\Program Files\PostgreSQL\9.6.6-1.1C\bin\pg_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 Files\PostgreSQL\9.6.6-1.1C\bin\vacuumdb.exe" -h localhost -p 5432 -U postgres -w -e -z -a
"C:\Program Files\PostgreSQL\9.6.6-1.1C\bin\reindexdb.exe" -h localhost -p 5432 -U postgres -w -e -a

Кто подскажет, как доработать скрипты чтобы сохранялись логи с полным текстом обслуживания баз ?
2. user598613_svp_gamma 14 26.11.18 19:50 Сейчас в теме
Поидее можно сбрасывать вывод в файл >>
Например:
pg_dump --dbname %%i --host %mhost% --port %mport% --username %musername% --role %mrole% --no-password --file %PGTMP%\%%i_%f_name%.pgsql.backup >>%logfile%

где logfile - Ваш файл
Оставьте свое сообщение