Как перенести крупную файловую базу 1С на сервер СУБД, если выгрузка в dt зависает?

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

При работе с крупными файловыми базами данных 1С (объемом от 10–15 ГБ и выше) администраторы часто сталкиваются с критическим падением производительности. Документы начинают проводиться крайне медленно, а попытки штатным образом выгрузить информационную базу через конфигуратор в файл .dt или выполнить процедуру «Тестирование и исправление» (ТИИ) заканчиваются бесконечным зависанием процесса.

Проанализируем ситуацию и разберем эффективные способы переноса такой базы на клиент-серверный вариант работы с использованием MS SQL Server или PostgreSQL, когда стандартные инструменты 1С подводят.

Выясним причины зависания выгрузки и ТИИ

Прежде чем переходить к альтернативным способам переноса, разберем основные причины, почему штатный механизм выгрузки файловой базы перестает работать:

  1. Ограничение файлового формата .1CD на размер таблицы (4 ГБ): В файловом движке 1С размер одной таблицы (данные вместе с индексами) не может превышать 4 ГБ. В крупных базах регистры версионирования объектов, таблицы прикрепленных файлов или таблицы регистрации изменений планов обмена часто переходят этот порог, что вызывает сбои при попытке сформировать файл .dt.
  2. Переполнение таблиц регистрации изменений: Если в базе ранее настраивались обмены данными, в ней могли накопиться миллионы невыгруженных записей. При выполнении этапа проверки уникальности записей или планов обмена в ТИИ платформа уходит в бесконечный перерасчет индексов.
  3. Однопоточность и блокировки файлового режима: В файловом варианте оперативная память и мощность процессора многоядерного сервера фактически не утилизируются в полной мере, так как процесс запись проводит монопольно.

Способ 1. Перенос через создание Распределенной Информационной Базы (РИБ)

Это один из наиболее удобных и надежных способов обхода проблемы без использования выгрузки .dt. Метод заключается в создании периферийного узла РИБ непосредственно в серверном варианте.

Разберем по шагам алгоритм действий:

  1. Откроем файловую базу в режиме конфигуратора и зайдем в подсистему планов обмена (или используем существующий план обмена по организации/полный).
  2. Создадим новый элемент плана обмена — периферийный узел.
  3. Выполним команду создания начального образа для созданного узла. В качестве места размещения нового узла укажем сервер 1С:Предприятия и параметры подключения к СУБД (MS SQL / PostgreSQL).
  4. Платформа 1С напрямую сформирует структуру таблиц на сервере СУБД и перенесет в нее все данные из файловой базы, минуя промежуточное сжатие в .dt.
  5. После успешного создания начального образа на сервере отсоединим новый узел от РИБ, сделав его автономной базой. Для этого в режиме конфигуратора серверной базы или через программную обработку выполним сброс главного узла:

ПланыОбмена.УстановитьГлавныйУзел(Неопределено);

Способ 2. Обновление платформы и пошаговое тестирование

Если зависание происходит на конкретной проверке ТИИ, не следует запускать все тесты одновременно. Рассмотрим подробнее процедуру оптимизированного восстановления:

  1. Обновим технологическую платформу 1С:Предприятие до актуального релиза. На новых версиях платформы оптимизирована работа с памятью и устранена часть ошибок файлового движка.
  2. Запустим конфигуратор и откроем меню Администрирование — Тестирование и исправление.
  3. Снимем все галочки проверки логической и ссылочной целостности, оставив включенным только пункт «Сжатие таблиц». Это позволит высвободить физическое место в файле .1CD от ранее удаленных записей.
  4. Отдельно очистим таблицы планов обмена с помощью специализированной обработки ОчисткаРегистрацииИзменений из состава БСП или диска ИТС. Это снимет нагрузку на индексы при последующих проверках.
  5. Поочередно выполним остальные этапы ТИИ по одному за запуск.

Способ 3. Прямой перенос данных через XML или COMConnector

Если структура базы повреждена настолько, что штатные механизмы конфигуратора не восстанавливают работу, перенос выполняют путем выгрузки данных в пустую серверную базу.

Рассмотрим порядок действий при таком подходе:

  1. Выгрузим из файловой базы только структуру конфигурации в файл .cf (команда меню Конфигурация — Выгрузить конфигурацию в файл). Эта операция не затрагивает таблицы с данными и выполняется быстро.
  2. Создадим новую пустую информационную базу на сервере 1С:Предприятия и СУБД.
  3. Загрузим сохраненный файл .cf в новую серверную базу и применим изменения структуры.
  4. Используем обработку «Универсальный обмен данными в формате XML» или перенос через внешнее COM-соединение (COMConnector).
  5. Для предотвращения нехватки оперативной памяти выгрузку и загрузку данных необходимо производить по частям: сначала нормативно-справочную информацию (НСИ и справочники), затем документы по периодам (по годам или месяцам).

Важно: При выполнении любых критических операций с файловой базой данных предварительно обязательно скопируйте файл 1Cv8.1CD в надежное место на диске при полностью завершенных сеансах пользователей.

← На главную