Как уменьшить или сжать журнал регистрации 1С (файл 1Cv8.lgd) объемом 12 ГБ на сервере?

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

Рано или поздно любой системный администратор или программист 1С сталкивается с проблемой стремительного роста журнала регистрации. Когда файл логов 1Cv8.lgd достигает внушительных размеров (например, 12 ГБ и более), это начинает сказываться на стабильности работы всей системы. Чтение журнала через Конфигуратор превращается в мучение из-за сильных зависаний, а дисковое пространство на сервере начинает таять на глазах.

В этой статье мы подробно разберем, почему стандартные средства платформы не помогают физически уменьшить размер файла нового формата, как правильно сжать журнал регистрации средствами СУБД SQLite, как выполнить быструю ротацию и почему в некоторых случаях имеет смысл вернуться к старому формату ведения логов.

Выясняем причину: почему сокращение в Конфигураторе не уменьшает файл .lgd

Давайте проанализируем, как ведет себя платформа 1С при попытке сократить журнал регистрации через стандартное меню: Администрирование — Настройка журнала регистрации — Сократить. Мы можем задать дату, до которой нужно очистить логи, и даже указать файл для записи удаляемых событий. Платформа действительно удалит эти записи из базы данных журнала регистрации.

Однако, посмотрев на файл 1Cv8.lgd в проводнике Windows, мы обнаружим, что его физический размер на диске остался прежним — все те же 12 ГБ. Выясним причину такого поведения.

Начиная с версии 8.3.5, по умолчанию используется новый формат журнала регистрации, который представляет собой базу данных SQLite. Архитектура СУБД SQLite спроектирована таким образом, что при удалении строк из таблиц освободившееся место не возвращается операционной системе автоматически. Эти страницы памяти помечаются как свободные (free list) внутри самого файла и будут использоваться для записи новых событий журнала регистрации. Сделано это из соображений производительности, чтобы СУБД не тратила лишние ресурсы на постоянное изменение физического размера файла на диске.

Таким образом, простое нажатие кнопки в Конфигураторе удаляет старые записи, но не освобождает дисковое пространство.

Способ 1. Физическое сжатие файла 1Cv8.lgd с помощью утилиты SQLite

Чтобы физически вернуть освободившееся место операционной системе после сокращения логов, необходимо выполнить операцию дефрагментации базы данных SQLite. В СУБД эта операция называется VACUUM. Рассмотрим по шагам, как выполнить сжатие файла на сервере.

Важное предупреждение: в процессе выполнения команды VACUUM утилита создает временную копию базы данных. Это означает, что для успешного сжатия файла объемом 12 ГБ на вашем жестком диске должно быть свободно не менее 12 ГБ дополнительного места. Также помните, что на время выполнения операции база данных журнала регистрации будет заблокирована.

Выполним следующие действия:

  1. Завершаем сеансы и останавливаем службу: Полностью остановите службу «Агент сервера 1С:Предприятия» (для серверных баз) или убедитесь, что в файловой базе нет активных пользователей. Если этого не сделать, файл логов будет заблокирован процессами 1С, и мы получим ошибку блокировки базы данных.
  2. Создаем резервную копию: Обязательно скопируйте файл 1Cv8.lgd в резервный каталог на случай непредвиденного сбоя. Каталог журнала регистрации серверной базы обычно находится по пути:
    C:\Program Files\1cv8\srvinfo\reg_xxxx\Идентификатор_Базы\1Cv8Log
  3. Скачиваем утилиту SQLite: Загрузите официальную консольную утилиту sqlite3.exe с сайта разработчиков SQLite. Это бесплатный исполняемый файл, не требующий установки. Поместите его в папку с файлом логов или укажите к нему путь в командной строке.
  4. Выполняем команду сжатия: Откройте командную строку (CMD) от имени администратора и перейдите в каталог с журналом регистрации. Выполните команду: sqlite3.exe 1Cv8.lgd "VACUUM;"
  5. Процесс сжатия файла размером 12 ГБ может занять длительное время (от нескольких минут до получаса в зависимости от скорости дисковой подсистемы сервера). Дождитесь завершения работы утилиты.
  6. Запускаем службу: Снова запустите службу «Агент сервера 1С:Предприятия». Проверьте размер файла 1Cv8.lgd — теперь его объем будет соответствовать реальному количеству записей в журнале.

Способ 2. Быстрая ротация логов «с нуля»

Если старые записи журнала регистрации вам не требуются в оперативной работе, или вы уже перенесли файл объемом 12 ГБ в надежное архивное хранилище, самым быстрым способом будет создание абсолютно чистого файла логов. Для этого выполним простую процедуру:

  1. Остановите службу Агента сервера 1С.
  2. Перейдите в папку с журналом регистрации вашей информационной базы.
  3. Переименуйте текущий файл 1Cv8.lgd в архивное имя, например, 1Cv8_2025_backup.lgd.
  4. Запустите Агент сервера 1С. При первом же обращении любого пользователя к базе данных платформа автоматически создаст новый пустой файл 1Cv8.lgd минимального размера.

При необходимости просмотреть архивные записи вы всегда сможете открыть переименованный файл через Конфигуратор с помощью меню Файл — Открыть.

Способ 3. Переход на старый последовательный формат журнала регистрации (.lgf/.lgp)

Многие опытные администраторы 1С предпочитают отказаться от нового формата СУБД SQLite и вернуть старый последовательный формат логов. Начиная с версии платформы 8.3.12, сама фирма 1С снова сделала старый формат рекомендуемым по умолчанию, так как новый sqlite-формат показал нестабильную работу и падение производительности записи при высокой интенсивности транзакций.

Главный плюс старого формата заключается в том, что он разбивает данные на множество небольших файлов по периодам (например, по дням или месяцам) с расширением .lgp. Управлять такими логами невероятно просто: устаревшие файлы можно безболезненно удалять или перемещать в архив средствами операционной системы прямо «на лету», без остановки сервера 1С.

Разберем по шагам, как переключить базу на использование старого формата:

  1. Завершите работу всех пользователей и остановите службу Агента сервера 1С.
  2. Перейдите в каталог логов базы: .../srvinfo/reg_xxxx/Идентификатор_Базы/1Cv8Log.
  3. Перенесите текущий файл 1Cv8.lgd в архив или удалите его.
  4. Создайте в этом каталоге пустой текстовый файл и переименуйте его, изменив имя и расширение на 1Cv8.lgf. Обратите внимание на расширение — оно должно быть именно .lgf.
  5. Запустите службу Агента сервера 1С. Платформа обнаружит в каталоге файл настроек старого формата 1Cv8.lgf и начнет вести логи по старой схеме, создавая вложенную папку со множеством файлов .lgp.
  6. Зайдите в Конфигуратор в меню настройки журнала регистрации и выберите периодичность разделения файлов логов (например, по дням или по неделям).

Способ 4. Автоматизация регулярного обслуживания журнала регистрации

Если вы решили остаться на новом формате SQLite (файлы .lgd), ручное сжатие раз в месяц быстро надоест. Лучшим решением будет настройка автоматического обслуживания в ночное время с помощью скрипта автоматизации. Напишем простой пакетный сценарий (батник), который можно запускать через Планировщик задач Windows.

Сценарий выполняет следующие действия: производит программное сокращение журнала средствами конфигуратора 1С, останавливает службу сервера, сжимает базу SQLite и запускает службу обратно.

Рассмотрим пример такого скрипта:


@echo off
rem Путь к утилите SQLite и исполняемому файлу 1С
set SQLITE_EXE="C:\Tools\sqlite3.exe"
set ONEC_EXE="C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe"

rem Пути к базам данных и файлу журнала
set DB_PATH="C:\Program Files\1cv8\srvinfo\reg_1541\UUID-вашей-базы\1Cv8Log\1Cv8.lgd"
set CONNECTION_STR=/S"SERVER-1C\WorkDB" /N"Администратор" /P"Пароль"

rem Шаг 1: Программное сокращение журнала средствами 1С (удаляем записи старше 30 дней)
%ONEC_EXE% DESIGNER %CONNECTION_STR% /ReduceEventLogSize %DATE-30% -saveAs "C:\Backup\Logs\log_old.lgd"

rem Шаг 2: Остановка службы Агента 1С
net stop "1C:Enterprise 8.3 Server Agent"
timeout /t 10 /nobreak

rem Шаг 3: Сжатие физического файла базы SQLite
%SQLITE_EXE% %DB_PATH% "VACUUM;"

rem Шаг 4: Запуск службы Агента 1С обратно
net start "1C:Enterprise 8.3 Server Agent"

Использование подобных скриптов автоматизации позволит вам навсегда забыть о проблеме переполнения диска файлами 1Cv8.lgd и сохранит высокую скорость работы СУБД при чтении журнала регистрации вашими пользователями.

← На главную