Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика
Автор статьи: технический руководитель проектов внедрения 1С:ERP Внедренческого центра «Раздолье» Дмитрий Малышев.
В данной инструкции будет описано, как с помощью pgAdmin, bat-файлов и планировщика заданий Windows организовать резервное копирование, восстановление и хранение копий баз данных.
Введение
Открытие pgAdmin
Создание резервной копии
Рассмотрим создание резервной копии из pgAdmin и командным bat-файлом.2.1. С помощью pgAdmin
2.2. С помощью командного файла *.bat
REM СОЗДАНИЯ РЕЗЕРВНОЙ КОПИИ БАЗЫ ДАННЫХ POSTGRESQL
CLS
ECHO OFF
CHCP 1251
REM Установка переменных окружения
SET PGDATABASE=IMD_UH
SET PGHOST=localhost
SET PGPORT=5432
SET PGUSER=postgres
SET PGPASSWORD=ЗДЕСЬ_УКАЖИТЕ_ПАРОЛЬ_для_пользователя_postgres
REM Формирование имени файла резервной копии и файла-отчета
SET DATETIME=%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2% %TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%
SET DUMPFILE=%PGDATABASE% %DATETIME%.backup
SET LOGFILE=%PGDATABASE% %DATETIME%.log
SET DUMPPATH="E:\UH_IMD\Backup\%DUMPFILE%"
SET LOGPATH="E:\UH_IMD\Backup\%LOGFILE%"
REM Создание резервной копии
IF NOT EXIST Backup MD Backup
CALL "C:\Program Files\pgAdmin 4\v6\runtime\pg_dump.exe" --format=custom --verbose --file=%DUMPPATH% 2>%LOGPATH%
REM Анализ кода завершения
IF NOT %ERRORLEVEL%==0 GOTO Error
GOTO Successfull
REM В случае ошибки удаляется поврежденная резервная копия и делается соответствующая запись в журнале
:Error
DEL %DUMPPATH%
MSG * "ERROR to create backup!!! See the information E:\UH_IMD\Backup\backup.log."
ECHO %DATETIME% Ошибка при создании резервной копии %DUMPFILE%. Смотрите %LOGFILE%. >> backup.log
GOTO End
REM В случае удачного резервного копирования просто делается запись в журнал
:Successfull
ECHO %DATETIME% Успешное создание резервной копии %DUMPFILE% >> backup.log
GOTO End
:End
SET PGDATABASE=IMD_UH - здесь имя базы данных на СУБД равно IMD_UH, у вас будет свое поменяйте обязательно.
E:\UH_IMD\Backup - здесь путь хранения backup у вас будет свой, поменяйте.
C:\Program Files\pgAdmin 4\v6\runtime - папка утилиты pg_dump.exe для создания дампов, пусть может чуть отличаться, например, вместо v6 будет v4. И не забудьте pgAdmin установить, он ставится отдельно.
SET PGPASSWORD=ЗДЕСЬ_УКАЖИТЕ_ПАРОЛЬ_для_пользователя_postgres - тут укажите реальный пароль от пользователя postgres СУБД PostgreSQL
Восстановление резервной копии
3.1. С помощью pgAdmin
3.1.1. В существующую базу
3.1.2. В новую базу
3.1.2.1. Создаем новую базу в PostgreSQL
3.1.2.2. Восстанавливаем базу из архива в PostgreSQL
3.1.2.3. Создаем новую базу 1С NewBaseName
Удаление старых резервных копий
4.1. Вручную
4.2. С помощью командного файла *.bat
E:\UH_IMD\Backup - здесь путь хранения backup'ов, у вас будет свое поменяйте обязательно.
30 - срок в днях хранения backup'ов
Автоматическое выполнение резервного копирования
Автоматическое выполнение очистки копий старше 30 дней
Приложения
Пример содержимого общего файла логов backup.log.
Пример содержимого файла лога конкретной выгрузки UH_IMD 2022-10-07 5-00-00.log
Для использования пригодятся следующие материалы (можно скачать в конце статьи по этой
-
backup_pgadmin_BaseName_everyday.bat
-
delete_backup_BaseName_older than 30 days.bat
-
Резервное копирование и восстановление баз PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика.docx
-
vacuumdb_BaseName.bat
-
reindexdb_BaseName.bat
-
Резервное копирование и восстановление баз PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика.docx (версия от 12.10.2022)