Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

Автор статьи: технический руководитель проектов внедрения 1С:ERP Внедренческого центра «Раздолье» Дмитрий Малышев.

Введение

pgAdmin— это интерфейс для администрирования баз данных PostgreSQL, в моём понимании это аналог MS SQL Management Studio. Ставится pgAdmin отдельно от PostgreSQL. Инструкцию установки найдите, пожалуйста, в интернет поисковиках. В данной инструкции будет описано как с помощью pgAdmin, bat-файлов и Планировщика заданий Windows организовать резервное копирование, восстановление и хранение копий баз данных.

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

Открытие pgAdmin

Через пуск или в проводнике открываем приложение.

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

"C:\Program Files\pgAdmin 4\v6\pgAdmin4.ico

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

"Вводим пароль доступа (за дается ранее пользователем).

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

Откроется интерфейс управления базами данных.

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

Создание резервной копии

Рассмотрим создание резервной копии из pgAdmin и командным bat-файлом.

2.1. С помощью pgAdmin

Выбираем базу в дереве, правой кнопкой мыши открываем контекстное меню, где выбираем создание резервной копии/Backup… Указываем полный путь для сохранения копии, формат Custom и жмем [Создать / Create].

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

***

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

***

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

2.2. С помощью командного файла *.bat

Запускаем двойным кликом мыши командный файл backup_pdadmin_UH_IMD_everyday.bat, в котором уже прописан вызов архиватора формат и путь файла копии.

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

Копии сохраняются сюда.

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, 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

Восстановление резервной копии

Есть несколько способов: Из командной строки, из pgAdmin, заранее подготовленным командным файлом. Мы рассмотрим: pgAdmin.

3.1. С помощью pgAdmin

3.1.1. В существующую базу

Выбираем базу, вызываем правой кнопкой ее контекстное меню, где выбираем действие Восстановить / Restore.

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

Далее указываем путь к резервной копии, и в настройках ставим предварительно очищать существующую базу (иначе она не восстановится из-за конфликта таблиц).

***
***
Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

***

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

***

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

3.1.2. В новую базу

3.1.2.1. Создаем новую базу в PostgreSQL

На корне дерева баз вызываем правой кнопкой мыши контекстное меню и действие Создать / Create – Базу данных / Database.

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

Задаем имя новой базы.

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

Выбираем обязательно схему создания template0 (иначе на следующем шаге база не развернется из backup из-за конфликта таблиц).

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

Для контроля смотрим итоговый запрос, и жмем кнопку [Сохранить]/[Save].

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

3.1.2.2. Восстанавливаем базу из архива в PostgreSQL

После создания пустой новой базы, её нужно восстановить из архива. Для этого смотрите пункт выше 3.1.1. Для восстановления в существующую базу, выполняем всё тоже самое только для базы с именем NewBaseName

3.1.2.3. Создаем новую базу 1С NewBaseName

После того как развернули базу на СУБД PostgreSQL её требуется опубликовать на сервере 1С, чтобы пользователи получили к ней доступ. Для этого выполним действия по созданию базы 1С и связывании её с существующей базой на СУБД.

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

***

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

***

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

***

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

***

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

Не забываем ставь флаг «Установить блокировку регламентных заданий», если это копия.

Удаление старых резервных копий

4.1. Вручную

Удаляем архивы старше 30 дней вручную. Затем чистим корзину на рабочем столе. В проводнике папка E:\UH_IMD\Backup.

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

***

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

4.2. С помощью командного файла *.bat

Запускаем двойным щелчком мыши командный файл. В файле указана очистка в каталоге файлов старше 30 дней.

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

Его содержимое:forfiles /p "E:\UH_IMD\Backup" /S /D -30 /C "cmd /c del /f /a /q @file"Пояснения:

E:\UH_IMD\Backup - здесь путь хранения backup'ов, у вас будет свое поменяйте обязательно.

30 - срок в днях хранения backup'ов

Автоматическое выполнение резервного копирования

Использован стандартный планировщик заданий Windows каждый день в 5:00 утра запуск, выполнения командного файла (архив рабочей базы примерно 1 час создается).

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

***

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

***

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

***

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

***

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

***

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

***

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

Автоматическое выполнение очистки копий старше 30 дней

Использован стандартный планировщик заданий Windows каждую субботу в 10:00 утра запуск, выполнения командного файла.

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

***

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

***

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

***

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

***

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

***

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

***

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

Приложения

Пример содержимого общего файла логов backup.log.

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

Пример содержимого файла лога конкретной выгрузки UH_IMD 2022-10-07 5-00-00.log

Резервное копирование и восстановление «1С»-баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

P.S. Коллеги, сразу скажу, что я не системный администратор, а программист 1С. Системщик решил бы, может быть, элегантнее. Хотя ситуация сложилась такая, что я делал настройки и эту инструкцию с bat-никами по просьбе системных администраторов (как бы странно это ни звучало). Нечасто такими настройками занимаюсь, поэтому не судите строго.

Добавил 2 батника, по обновлению статистики и реиндексации:

Они для регламентного обслуживания. 1С завершать для их работы не обязательно, но 1С будет притормаживать или пойдет блокировка на период реиндексации. В планировщик заданий Windows на эти батники добавьте задачи раз в неделю на свои базы, в Нерабочее время.

Также есть служебная база postgres на нее тоже раз в неделю добавьте обслуживание.Файл vacuumdb_BaseName.bat - обновление статистики.

Его содержимое: vacuumdb -d UH_IMD -Z -v -j 1

Пояснения: Обновление статистики базы с именем UH_IMD (тут поставьте свою) в 1 поток.

Можно поменять на обновление статистики во всех базах в 4 потока, тогда будет текст: vacuumdb -a -Z -v -j 4

Файл reindexdb_BaseName.bat - реиндексация таблиц в базе.

Его содержимое: reindexdb -d UH_IMD -v -j 1

Пояснения: Обновление индексов в базе с именем UH_IMD (тут поставьте свою) в 1 поток.

Можно поменять на обновление статистики во всех базах в 4 потока, тогда будет текст: reindexdb -a -v -j 4

Также обратите внимание на программу Effector Saver— программа резервного копирования 1С:Предприятия (поищите в инете). Делает копии в MS и PostgreSQL, настройка хранения и удаления. Есть возможность подключать скрипты и выполнять тестирование исправление 1С. Есть бесплатная версия (которой должно хватить), и есть также платная с плюшками.

Для использования пригодятся следующие материалы:

  • backup_pgadmin_BaseName_everyday.bat
  • delete_backup_BaseName_older than 30 days.bat
  • Резервное копирование и восстановление баз PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика.docx
  • vacuumdb_BaseName.bat
  • reindexdb_BaseName.bat
Начать дискуссию