При администрировании и автоматизации резервного копирования баз данных на платформе 1С:Предприятие 7.7 специалисты регулярно сталкиваются с двумя критическими проблемами:
1Cv77.dat или итоговый архив превышает 2 147 483 647 байт, процесс аварийно завершается либо формирует поврежденный файл.Разберем детально, почему возникают эти проблемы и как их решить с помощью внешнего перехвата сообщений и подключения современных архиваторов (например, 7-Zip или WinRAR).
Проанализируем механику работы платформы «семерки» изнутри:
Для устранения лимита в 2 ГБ и сохранения всех служебных сообщений применяется перехват функций выгрузки на уровне библиотеки config.dll (компонента Config Spy). Компонента перехватывает вызовы методов IzlibEngine::pkZip и IzlibEngine::pkUnzip и перенаправляет операции сжатия и распаковки внешнему консольному архиватору, поддерживающему 64-битные смещения (Zip64, 7z, RAR).
Рассмотрим, как устроен файл конфигурации configspy.ini для работы с консольным 7-Zip:
[zip]
Архиватор="C:\Program Files\7-Zip\7z.exe"
Параметры=u -tzip "%1%" "%2%"
ПараметрПароля=-p
Показывать=0
[unzip]
Архиватор="C:\Program Files\7-Zip\7z.exe"
Параметры=e "%1%" -o"%2%"
ПараметрПароля=-p
Показывать=0
Разберем назначение параметров:
%1% — автоматически заменяется компонентой на полное имя создаваемого файла архива, которое формирует 1С.%2% — автоматически заменяется на имя текущего архивируемого или распаковываемого файла (например, 1Cv7.MD, 1Cv77.dat, users.usr).Показывать=0 — скрывает консольное окно архиватора при регламентном фоновом запуске. Если требуется отладка, значение устанавливается в 1.ПараметрПароля — задает префикс ключа пароля для архиватора (компонента автоматически дописывает пароль к указанному флагу).По умолчанию использование параметров -tzip создает совместимый Zip-архив, но при работе с очень большими базами данных стандартный алгоритм Deflate может быть медленным. Посмотрим на оптимизированные варианты строки параметров архивации:
Параметры=u -tzip -mm=ppmd -mmt=on -mmem=256m -mo=16 "%1%" "%2%"Такой подход обеспечивает существенное ускорение и уменьшение размера архива по сравнению со штатным механизмом.
Если архив не планируется открывать на машинах со стандартной 1С без внешнего архиватора, можно изменить контейнер на -t7z, что гарантирует полную поддержку файлов любого объема:
Параметры=u -t7z -aoa -mm=ppmd -mmt=on -mmem=256m -mo=16 "%1%" "%2%"Если в среде разработки уже используется библиотека OpenConf (которая также заменяет оригинальную config.dll), настроим их совместную работу:
config.dll от OpenConf в openconf.dll.1cv7/BIN под оригинальным именем config.dll.openconf.dll и передаст ей управление, сохранив как функции OpenConf, так и перехват архивации/логирования.Для устранения проблемы «пустого окна сообщений» при падении ночных пакетов утилита перехватывает системный поток вывода сообщений Конфигуратора и сразу сбрасывает его в текстовый файл.
Принципиальное отличие от штатного журнала регистрации заключается в том, что внешний лог-файл открывается и принудительно сбрасывается на диск (flush) при выводе каждой строки. Даже если процесс 1cv7.exe аварийно завершится из-за нехватки памяти или аппаратного сбоя, последняя зафиксированная операция (например, имя сбойной таблицы или фаза выгрузки словаря) останется в файле Статусы_ГГГГММДД.txt внутри каталога log.
Проанализируем другие надежные сценарии создания резервных копий, исключающие риски переполнения формата выгрузки:
При использовании клиент-серверного варианта 1С 7.7 штатная выгрузка через Конфигуратор не является обязательной для ежедневных бэкапов. Рекомендуется настроить план обслуживания в SQL Server Management Studio:
BACKUP DATABASE) — 1 раз в сутки ночью со сжатием средствами SQL Server.BACKUP LOG) — каждые 15–30 минут в течение рабочего дня.Это исключает необходимость монопольного выгона пользователей и снимает любые ограничения по объему данных.
Для создания консистентной копии файловой базы без блокировки работы пользователей создается теневой снимок тома через Volume Shadow Copy Service с последующей упаковкой каталога базы внешним 64-битным архиватором (7-Zip, WinRAR).
Если база данных работает в формате DBF, помним о физическом ограничении в 2 ГБ на один файл таблицы (например, _1SJOURN.DBF, 1SENTRY.DBF, RG*.DBF). Даже успешная распаковка файла выгрузки завершится ошибкой при обратной загрузке, если результирующая таблица превысит 2 ГБ. В таких случаях необходимо своевременно проводить свертку итогов и переносить архивные периоды в отдельную информационную базу.