Развертывание резервной копии информационной базы из файла выгрузки .dt на локальном компьютере в файловом режиме — стандартная задача для любого разработчика или администратора 1С. Однако при работе с базами данных большого объема (исходный размер СУБД измеряется десятками гигабайт) этот процесс нередко прерывается критическими ошибками. При этом на серверный вариант база может разворачиваться без каких-либо затруднений.
В этой статье мы подробно разберем причины возникновения подобных сбоев, проанализируем внутреннее устройство файловых баз 1С и рассмотрим пошаговые методы обхода ограничений платформы.
Рассмотрим детально, почему старые версии технологической платформы (например, популярная в прошлом ветка 8.3.7) отказываются загружать выгрузку информационной базы, в то время как на более новых релизах платформы этот процесс завершается успешно.
1. Конфликт форматов хранения данных (переход с формата 8.2.14 на 8.3.8)
Это ключевая технологическая причина. В платформе 1С:Предприятие существует два основных формата файловых баз данных:
Когда мы пытаемся развернуть базу данных серверным объемом в 38 Гб на старой платформе, система инициализирует файл базы данных 1Cv8.1CD старого формата (8.2.14). В процессе распаковки таблицы, содержащие миллионы записей, быстро перешагивают порог в 4 Гб, после чего процесс аварийно прерывается из-за превышения физического лимита СУБД. Новая платформа автоматически создает файл базы данных формата 8.3.8, что позволяет успешно завершить загрузку.
2. Требования конфигурации к минимальной версии платформы
Современные релизы типовых конфигураций (даже разработанные для локальных рынков, такие как УТП или УПП) оптимизируются под механизмы новых платформ. В правилах обновления всегда указывается минимально необходимый релиз технологической платформы. Попытка запустить обновленную конфигурацию на платформе ниже рекомендуемой (например, запуск конфигурации, требующей платформу не ниже 8.3.8.2197, на платформе 8.3.7.1759) гарантированно приведет к несовместимости структуры метаданных при чтении потока DT.
3. Ограничение адресного пространства 32-битного клиента
Процесс загрузки DT-файла ресурсоемок. Конфигуратор осуществляет десериализацию данных из XML-подобных потоков во временные файлы, формирует индексы и производит запись в таблицы. Если запущен 32-битный Конфигуратор (1cv8.exe), операционная система выделяет под его нужды не более 2 Гб оперативной памяти. При разборе гигантского объема метаданных процесс исчерпывает адресное пространство и аварийно завершается с ошибкой нехватки памяти.
4. Дефицит дискового пространства и ограничения папки TEMP
Во время распаковки файла выгрузки объемом 1.6 Гб платформа активно использует системную директорию временных файлов %TEMP%. Общий объем временных данных в процессе импорта может превышать исходный размер базы в несколько раз. Если на системном диске недостаточно свободного места (требуется не менее 40–50 Гб для крупной базы), распаковка прервется ошибкой файловой системы.
---
Выяснив причины, проанализируем варианты действий для исправления ситуации. Мы можем решить проблему как путем точечной настройки локального рабочего места, так и путем системного обновления окружения.
Если на боевом сервере установлена старая платформа (например, под управлением ОС Ubuntu), и у вас нет возможности или соответствующих навыков для её немедленного обновления, вам необязательно менять платформу на сервере. Технологическая платформа 1С позволяет без проблем устанавливать и использовать несколько версий параллельно на одной локальной машине.
Выполним следующие шаги:
8.3.14 или выше).8.3.14.1779).Если база данных настолько велика, что даже стандартного формата 8.3.8 со страницей по умолчанию не хватает для прохождения лимитов, мы можем вручную подготовить файл базы данных с максимальным размером страницы перед загрузкой DT. Для этого используется штатная консольная утилита платформы 1С — cnvdbfl.exe.
Разберем этот процесс по шагам:
1Cv8.1CD).cd "C:\Program Files\1cv8\8.3.14.1779\bin"
cnvdbfl.exe для изменения формата нашей пустой базы данных и установки максимального размера страницы в 64 Кб. Команда выглядит следующим образом:
cnvdbfl.exe -c -f 8.3.8 -p 64K "C:\PathToYourBase\1Cv8.1CD"
Здесь вместо "C:\PathToYourBase\1Cv8.1CD" укажите реальный путь к вашей пустой базе данных.
Часто гигантский объем базы данных на сервере обусловлен накоплением устаревших или временных данных, которые не несут полезной нагрузки, но раздувают таблицы до критических размеров. Перед выполнением выгрузки на сервере рекомендуется провести профилактические работы:
---
В заключение приведем несколько важных правил работы с технологической платформой 1С при переносе тяжелых баз данных:
Избегайте использования формата DT для регулярного резервного копирования. Фирма "1С" позиционирует выгрузку в DT исключительно как средство для переноса данных между различными СУБД (например, при миграции с PostgreSQL на MS SQL или обратно). Для создания резервных копий рабочих баз всегда используйте средства СУБД (дампы PostgreSQL или бэкапы MS SQL). Они работают быстрее, надежнее и гарантируют целостность данных на физическом уровне.
Контролируйте свободное место на системном диске. Перед загрузкой тяжелых файлов убедитесь, что на диске C:\ (или там, где у вас настроена системная папка временных файлов) достаточно свободного пространства. При необходимости перенесите переменные окружения TEMP и TMP на другой, более емкий диск.