Как организовать резервное копирование и восстановление отдельных организаций в технологии 1С:Fresh?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Работа с технологией 1С:Fresh (облачной подсистемой 1С:Предприятие) вносит существенные коррективы в привычные процессы администрирования. Одной из наиболее острых проблем является резервное копирование. В архитектуре Fresh множество независимых организаций (областей данных) хранятся в одной физической базе данных СУБД. Это создает ситуацию, когда стандартный бэкап всей базы средствами SQL не позволяет оперативно восстановить данные только одного «арендатора» сервиса.

Рассмотрим подробнее, как устроена система резервного копирования в этой технологии, проанализируем ограничения монопольного режима и разберем наиболее эффективные стратегии для администраторов и владельцев частных облаков.

Разделение уровней резервного копирования

Для начала проанализируем ситуацию: во Fresh резервное копирование разделяется на два принципиально разных уровня. Понимание этого различия — ключ к решению проблемы автора темы.

  1. Системный уровень (уровень СУБД): Администратор делает полный бэкап всей информационной базы. Это необходимо для защиты от катастрофических сбоев сервера. Однако восстановить из такого архива данные конкретной фирмы «на лету» невозможно, так как данные всех областей перемешаны в общих таблицах СУБД.
  2. Прикладной уровень (уровень областей данных): Это создание так называемого «дампа» конкретной области. Система упаковывает данные одной организации в ZIP-архив, содержащий XML-файлы. Именно этот файл (data_dump.zip) можно использовать для переноса данных между сервисами или для создания локальной копии.

Проблема монопольного режима и ее решение

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

Для владельца сервиса (Private Cloud) оптимальным решением будет использование тестового контура или Standby-сервера. Проанализируем этот алгоритм:

  1. Средствами СУБД (например, PostgreSQL или MS SQL) создается полная копия рабочей базы данных на другом сервере.
  2. На копии базы пользователи отсутствуют, что позволяет выполнять любые прикладные операции монопольно.
  3. С этой «холодной» копии снимаются дампы нужных областей данных средствами Менеджера сервиса.

Таким образом, мы получаем актуальные снимки данных без прерывания работы основного сервиса. Если база достигает значительных размеров (например, 900 Гб), этот метод становится единственно возможным.

Использование автономных рабочих мест (АРМ) как альтернативный бэкап

Разберем еще один эффективный метод, упомянутый участниками обсуждения, — использование технологии Автономного рабочего места. По сути, это реализация механизма распределенных информационных баз (РИБ) внутри Fresh. Посмотрим на этот процесс по шагам:

  1. В приложении (например, 1С:Бухгалтерия) настраивается синхронизация с локальным компьютером.
  2. Создается локальная информационная база (в формате .1сд), которая периодически обменивается данными с облаком.
  3. Поскольку локальная база принадлежит только одной организации, ее можно архивировать стандартными средствами в любой момент.
  4. Для получения архивной копии «на текущий момент» достаточно выполнить синхронизацию и отсоединить АРМ от центрального узла в облаке.

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

Автоматизация через Менеджер сервиса

Для администратора собственного облачного сервиса важно настроить автоматизацию. В составе 1С:Fresh есть компонент Служба резервного копирования. Рассмотрим, как она упрощает жизнь:

Служба работает в фоновом режиме по расписанию. Она ставит задания на выгрузку областей в общую очередь. Если область данных в данный момент занята пользователем, система может либо пропустить ее, либо (в зависимости от настроек) принудительно завершить сеансы в ночное время. При использовании Менеджера сервиса администратор может настроить глубину хранения архивов: например, хранить 7 ежедневных копий и 4 недельных для каждой организации отдельно.

Массовое обновление конфигураций

В завершение темы проанализируем вопрос массового обновления. Во Fresh обновление конфигурации (файла cf) происходит один раз для всей базы. Однако после этого данные в каждой области должны пройти процедуру миграции (обработку данных). Рассмотрим, как это реализовано в 1С:Enterprise:


// Пример логики, которую выполняет Менеджер сервиса
Для Каждого ОбластьИзСписка Из ОбластиДанных Цикл
    // Ставим задачу в очередь на обновление данных
    МенеджерЗаданий.ДобавитьЗадание("ОбновлениеДанныхОбласти", ОбластьИзСписка);
КонецЦикла;

Процесс обновления данных в 500 областях происходит асинхронно. Пользователи могут продолжать работать, а обновление данных для конкретной области запустится в момент их первого входа в систему после апдейта конфигурации. Это позволяет избежать длительных простоев всего сервиса.

Резюме для администратора

Подведем итог: если вы являетесь владельцем сервиса и вам нужно восстановить одну область из 900-гигабайтной базы, не нужно восстанавливать всю базу «поверх» рабочей. Рекомендуется поднять бэкап СУБД на отдельном инстансе, выгрузить оттуда нужную область в формате .zip через Менеджер сервиса (используя обработку выгрузки) и загрузить этот архив в новую (пустую) область данных в рабочем контуре. Это позволит пользователю сравнить данные или продолжить работу, не затрагивая других арендаторов.

← На главную