среда, 20 марта 2019 г.

Резервное копирование кластера PostgreSQL pg_basebackup Windows

Проверить
C:\Program Files\PostgreSQL\10.5-24.1C\data\postgresql.conf

max_replication_slots = 10
max_wal_senders = 10
wal_level = replica

Резервная копия кластера PostgreSQL
pg_basebackup.exe -U postgres -X fetch --format=tar -z -D "c:/backup" -P

Обслуживание базы
psql  -d demo -U postgres -c "VACUUM FULL FREEZE VERBOSE ANALYZE;"

Скрипт создающий резервную копию кластера (добавить в планировщик)

pg_bbackup.bat

REM СОЗДАНИЕ РЕЗЕРВНОЙ КОПИИ КЛАСТЕРА POSTGRESQL
REM Все действия в в папке где запускаем скрипт
CLS
ECHO OFF
CHCP 1251
REM Установка переменных окружения
REM SET PGBIN=C:\Program Files\PostgreSQL\11.5-19.1C\bin
SET PGBIN=F:\PostgreSQL\11.5-19.1C\bin
REM Папка в которой будут лежать копии в папке где запускаем скрипт
SET BACKUP="Backup"
REM Папка в которой формируются файлы, должна быть пустой и на SSD
SET PGBACKUP=C:\BackupTMP
DEL /F /Q %PGBACKUP%\base.tar.gz
SET PGUSER=postgres
SET PGPASSWORD=pass
REM Смена диска и переход в папку из которой запущен bat-файл
%~d0
CD %~dp0
REM Формирование имени файла резервной копии и файла-отчета
SET DATETIME=%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%_%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%
SET DUMPFILE= %DATETIME%.tar.gz
SET LOGFILE=%DATETIME%.log
SET DUMPPATH="%BACKUP%\%DUMPFILE%"
SET LOGPATH="%BACKUP%\%LOGFILE%"
REM Создание резервной копии
IF NOT EXIST Backup MD Backup
CALL "%PGBIN%\pg_basebackup.exe" -U %PGUSER% -X fetch --format=tar -z -D %PGBACKUP% -P 2>%LOGPATH%
REM Анализ кода завершения
IF NOT %ERRORLEVEL%==0 GOTO Error
GOTO Successfull
REM В случае ошибки удаляется поврежденная резервная копия и делается соответствующая запись в журнале
:Error
DEL %DUMPPATH%
MSG * "Ошибка при создании резервной копии базы данных. Смотрите backup.log."
ECHO %DATETIME% Ошибки при создании резервной копии базы данных %DUMPFILE%. Смотрите отчет %LOGFILE%. >> backup.log
GOTO End
REM В случае удачного резервного копирования просто делается запись в журнал
:Successfull
ECHO %DATETIME% Успешное создание резервной копии %DUMPFILE% >> backup.log
COPY %PGBACKUP%\base.tar.gz %DUMPPATH%
REM D -2 оставить файлы за 2 дня
forfiles /P "%BACKUP%" /D -2 /C "cmd /c del @path /q"
GOTO End
:End

Сохранить.  

Восстановление:

Остановить службу pgsql-10.5-24.1C-x64
net stop  pgsql-10.5-24.1C-x64
Служба "PostgreSQL Database Server 10.5-24.1C(x64)" останавливается.
Служба "PostgreSQL Database Server 10.5-24.1C(x64)" успешно остановлена.


Очистить содержимое:
C:\Program Files\PostgreSQL\10.5-24.1C\data

Разархивировать архив вида  2019-03-20_18-00-57.tar.gz
в C:\Program Files\PostgreSQL\10.5-24.1C\data

net start  pgsql-10.5-24.1C-x64
Служба "PostgreSQL Database Server 10.5-24.1C(x64)" запускается.
Служба "PostgreSQL Database Server 10.5-24.1C(x64)" успешно запущена.

Разархивировать архив вида  2019-03-20_18-00-57.tar.gz

в C:\Program Files\PostgreSQL\10.5-24.1C\data


Если удалили папку
C:\Program Files\PostgreSQL\10.5-24.1C\data



Создать

C:\Program Files\PostgreSQL\10.5-24.1C\data



Но нужно,
 
Задать на папку права полного доступа для пользователя NETWORK SERVICE от имени которого запускает  pgsql-10.5-24.1C-x64


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

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