8 499 286 32 32
работаем для вас с 9:00 до 18:00

Как создавать и разворачивать бэкапы 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

Скачиваем: 

https://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"

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

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)

Вот и всё. Если вы всё сделаете в точном соответствии с приложенной инструкцией, то всё будет работать.

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

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

 
 
×
Оргтехника:
Вся оргтехника бесплатно
Время поддержки:
5 дней в неделю с 09 до 18
Итоговая цена IT аутсорсинга вашего офиса (минимальная сумма договора - 6200 руб./мес):
6200 руб./мес