Как создать и развернуть бэкап базы 1С средствами PostgreSQL?

Как создать в 1C и развернуть бэкап 1С-базы средствами PostgreSQL?

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

Однако конкретного практического материала на основе бесплатных решений нам встретить не удалось.

Предлагаемый метод довольно простой и при этом достаточно гибкий. Благодаря приведённым в статье комментариям вы без труда разберётесь, как настроить ежемесячные и ежегодные бэкапы.

Как создать в 1C и развернуть бэкап 1С-базы средствами PostgreSQL?

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

Бэкап проходит в 3 этапа:

  1. Делаем выгрузку из PostgreSQL (например, в 22:00)
  2. Архивируем выгрузку из PostgreSQL (напрммер, в 2:00)
  3. Удаляем старые файлы выгрузки из PostgreSQL (например, в 21:45)

На выходе остаются архивы .zip 

!!! Внимание !!!

Вырузку делаем НЕ на виртуалку с PostgreSQL, а на сетевую шару на хосте. В идеале - на отдельный специально выделенный хард.

Задача 1 из 3

1.1. Заводим учётку "SQLbackup" с админскими правами и придумываем для неё пароль.


1.2. Создаём папки и шары с полным разрешением для юзера "SQLbackup" (и ещё кого-нибудь, кому будут нужны эти архивы. Сторонним 1С-никам, например):

1.2.1 Папку "C:\BackupSQL-cmd" - Туда будем складывать командные файлы .bat

1.2.2 Папку и шару "\\server1\SQLBackup\SQL\" - туда будем складывать выгрузки баз

1.2.3 Папку и шару "\\server1\SQLBackup\" - туда будем складывать архивы, т.е. готовые бэкапы


1.3. Создаём первый командный файл "BackupPGSQL.bat" (он выгружает SQL-базы в файл):

SET PGPASSWORD=123456 

set DAT=%date:~6,4%%date:~3,2%%date:~0,2%

"C:\Program Files\PostgreSQL\9.4.2-1.1C\bin\pg_dump.exe" --host localhost --port 5432 --username "postgres" --role "postgres" --no-password --format custom --blobs --section pre-data --section data --section post-data --encoding UTF8 --verbose --file "\\server1\SQLBackup\SQL\%DAT%-accounting.backup" "accounting"

Где: 

"SET PGPASSWORD=123456" - ставим пароль от административной учётки Постгри (по умолчанию называется postgres)

"\\server1\SQLBackup\SQL\%DAT%-accounting.backup" - путь, куда мы выгружаем базу и имя файла, состоящего из сегодняшней даты и " accounting.backup" (пример: "20170830-accounting.backup")

"accounting" - имя самой базы, которую мы бэкапим

Если баз на одном сервере несколько, то просто копируем последнюю строчку с соответствующими изменениями.


1.4. Создаём второй командный файл "RemoveOldBackups.bat" (он будет удалять базы, архивация которых описана далее):

net use z: \\server1\SQLBackup\SQL /persistent:no

cd z:

forfiles /p "z:" /S /D -1 /C "cmd /c del /f /a /q @file"

:repeat

for /f "tokens=*" %%i in (' dir /b /s /ad "z:" ') do 2>nul rd /q "%%i" && goto:repeat

net use z: /delete

Где "/D -1" означает, что все файлы в папке, дата создания которых больше 1 дня удалять.

Задача 2 из 3. Effector Saver

Скачиваем Effector Saver

efsaver.ru/download.html

Устанавливаем Effector Saver как сервис от учётки SQLbackup.

Создаём задачу "Бэкап выгрузок SQL Postgre", тип "Архивирование произвольных данных", в которой отмечаем: 

  • Галочка "Включить в архив файлы" 
  • Файлы --> Путь к файлам. Здесь указываем путь, куда мы положили выгрузки баз. В нашем примере это "\\server1\SQLBackup\SQL\" 
  • Настройка архивов --> Каталог архитвов. Здесь указываем путь, куда мы положим архивные файлы. В нашем примере это "\\server1\SQLBackup\" 
  • Настраиваем расписание.

Задача 3 из 3. Планировщик задач

Создаём две задачи от юзера "SQLbackup" - на оба .bat файла (из Задачи 1)

Необходимые опции:

  • "Run whether user is logged on or not" 
  • "Run with hightest priveleges"

Как создать в 1C и развернуть бэкап 1С-базы средствами PostgreSQL?

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

1. При необходимости удаляем старую базу.

В имеющуюся базу бэкап разворачивать нельзя (база не будет работать!). В случае если PostgreSQL используется для 1С, то делаем одним из двух вариантов.

Вариант 1 (плох тем, что если баз несколько, то сервер выгонит всех пользователей сразу из всех баз).

  1. Останавливаем службу 1С сервера (Описание: Агент сервера 1С:Предприятия 8.х ...)
  2. Идём в C:\Program Files\PostgreSQL\9.4.2-1.1C\bin
  3. Запускаем pgAdmin3.exe
  4. Подключаемся к нашему серверу (2 клика мышкой на нём)
  5. Выбираем "Базы данных", ищем нашу базу и "Удалить..."

Вариант 2 (нужно знать административный пароль от базы, которую предстоит «грохнуть»).

  1. Пуск → Стрелочка вниз → Администрирование серверов 1С Предприятия → ... 
  2. Находим наш Сервер → Кластеры → Локальный кластер → Информационные базы 
  3. Находим нашу базу и нажимаем Удалить. Вводим пароль и удаляем (полностью!). 
  4. Консоль пока не закрываем.

2. Создаём новую базу.

  1. Идём в C:\Program Files\PostgreSQL\9.4.2-1.1C\bin 
  2. Запускаем pgAdmin3.exe 
  3. Подключаемся к нашему серверу (2 клика мышкой на нём) 
  4. Выбираем "Базы данных" и "Новая база данных..." 
  5. Консоль пока не закрываем.

3. Восстанавливаем резервную копию

  1. Создаём новую базу. Достаточно заполнить только поле "Имя" 
  2. По созданной базе правой кнопкой мыши → "Восстановить..." 
  3. Просто выбираем Имя файла и нужную базу.

4. Возвращаемся в консоль "Администрирование сервера 1С"

  1. Правой кнопкой мыши на "Информационные базы" → Создать → Информационная база 
  2. Вводим: 
    • Имя
    • Сервер баз данных (для PostgreSQL - ip адрес сервера PostgreSQL!)
    • Тип СУБД
    • База данных
    • Пользователь сервера БД и его пароль (в нашем примере, напомню, это postgres и пароль 123456)

Если вы завершите инструкцию в точном соответствии, то всё будет работать.

Логотип компании «ZEL-Услуги» Компания ZEL-Услуги

Мы готовы оказать вам содействие и помощь в настройке бэкапов — проконсультируйтесь с нашими экспертами и получите поддержку по любым техническим вопросам и задачам.

Читайте также

Может быть интересно