Работа с бэкапами 1С средствами PostgreSQL

  • 21 April 2017
  • deniskl
Работа с бэкапами 1С средствами PostgreSQL

Как известно, сисадмины делятся на две категории, это те кто еще не делает бэкапы и кто уже делает. Из первой категории во вторую обычно попадают после какого-либо факапа или после пинка от более опытных коллег. Сегодня мы рассмотрим возможности бэкапирования базы 1С 8.3 средствами PostgreSQL. В качестве стенда используется сервер на centos 7 с postgresql-9.6.

Примечание: Компания 1С не рекомендует использовать механизмы бэкапирования средствами SQL. Для этого рекомендуется использовать выгрузку/загрузку информационной базы.

Встроенный в платформу 1С механизм выгрузки/загрузки информационной базы имеет 2 минуса:

  • скорость выгрузки/загрузки
  • для его использования необходимо завершить все пользовательские сеансы

Это не всегда приемлемо, особенно когда база должна быть доступна в режиме 24/7/365 или размер базы таков, что выгрузка может продолжаться "вечность". В таких случаях можно сохранять базу средствами СУБД. В MS SQL этот механизм достаточно прозрачен и прост, а вот на postgres есть несколько финтов, которые могут сделать наши бэкапы нежизнеспособными, что при определенном стечении обстоятельств может весьма плачевно сказаться на нашей работе.

PostgreSQL предоставляет нам достаточно обширные механизмы для создания бэкапов. Мы рассмотрим только один, но в двух вариациях.

Вариант 1 (Работа с бэкапами 1С средствами postgresql из терминала)

1.1 Создание бэкапа.

pg_dump --host localhost --port 5432 --username "postgres" --no-password --format custom --blobs --section pre-data --section data --section post-data --encoding UTF8 --verbose --file "~/MyBase.backup" "MyBase"

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

1.2 Загрузка базы из бэкапа.

pg_restore --host localhost --port 5432 --username "postgres" --dbname "CopyMyBase" --role "postgres" --no-password --section pre-data --section data --section post-data --verbose "~/MyBase.backup"

Стоит обратить внимание на один момент. В параметре --dbname мы указываем имя базы, куда загружать наш дамп. На момент загрузки она уже должна быть создана на вашем сервере и она должна быть пустая. Если заливать бэкап в непустую базу, то данные существующей базы просто дополнятся данными из бэкапа.

Вариант 2 (Работа с бэкапами 1С средствами postgresql с использованием pg_admin)

2.1 Создаем бэкап, по шагам:

  1. Выбираем нашу базу в pg_admin и в контекстном меню выбираем "Резервная копия..."
  2. Заполняем следующие параметры:
    1. Имя файла
    2. Формат: Настраиваемый
    3. Кодировка: UTF8
    4. pre-data
    5. Data (Данные)
    6. Post-data
    7. Blobs
  3. Нажимаем кнопку "Резервная копия"

2.2 Загрузка базы из бэкапа

  1. Выбираем базу куда мы заливаем бэкап в pg_admin и в контекстном меню выбираем "Восстановить..."
  2. Заполняем следующие параметры:
    1. Имя файла
    2. Pre-data
    3. Data (Данные)
    4. Post-data
  3. Нажимаем на кнопку "Восстановить"
После восстановления у меня выдается ошибка, но база создана и приподключении к ней из 1С база работает, поэтому по возможности лучше использовать вариант 1.

 

Спасибо за внимание, надеюсь что эта небольшая статья вам помогла, буду рад комментариям.