Как порезать лог 1с

Обновлено: 04.07.2024

Проблема: На сервере растут логи баз на платформе 8.3.

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

Как было раньше(8.1 и 8.2): В конфигураторе можно было указать настройку: «Разделять хранение журнала по периодам» и указать период, например, Неделя. Таким образом, каждая неделя логов хранилась в отдельном файле. Батником копировались и архивировались старые логии на отдельный диск, чтобы они не занимали место на сервере. При необходимости посмотреть «древний» лог, мы возвращали файл за требуемый период на место и просматривали его стандартными средствами 1С.

Как нынче в 8.3: Журнал регистрации хранится в файле 1Cv8.lgd – это файл базы данных sqlite. Настройка «Разделять хранение журнала по периодам» в конфигураторе отсутствует. Осталась кнопка «Сократить», с помощью которой обрезается часть журнала и переносится в указанный файл. Однако после этого размер логов не уменьшается. Что нужно сделать, чтобы размер файла уменьшился, напишу чуть ниже.

Напомню, что все должно работать автоматически. Конфигурация типовая, поэтому трогать ее не будем.

Что было сделано: В планировщике заданий добавил задание, которое выполняет cmd-файл, который запускает 1С с параметрами. В параметре "/Execute", указан путь до обработки, которая копирует часть журнала регистрации в файл, затем эту часть обрезает.

В обработке воспользовался процедурами по работе с журналом регистрации:

Обработку запускаю cmd-файлом:

В параметре «/С» передается период деления журнала регистрации (День / Неделя / Месяц / Год) и путь до места, где будут храниться обрезанные логи.

После сокращения журнала регистрации размер файла журнала регистрации не изменяется. Чтобы он изменился, необходимо остановить агент сервера и выполнить команду vacuum. Затем запустить службу агента сервера. В планировщике заданий добавил задание, которое выполняет следующий cmd-файл:

Утилиту sqlite3.exe можно скачать с официального сайта

Есть идея более простого обрезания и сохранения логов без запуска 1С на сервере с обработкой: можно останавливать агент сервера, переименовывать файл 1Cv8.lgd и запускать сервер. При первом запуске 1С будет создан новый пустой файл журнала регистрации. Главный минус этого варианта: если после переименования файла потребуется посмотреть журнал регистрации, то придется открывать журнал из внешнего файла, который может лежать на недоступном для пользователя диске сервера. В варианте же приведенном выше, в журнале будет храниться история не меньше, чем за указанный период (День / Неделя / Месяц / Год).

В общем-то и все. Если есть замечания и дополнения, добро пожаловать в комментарии. Все важные нюансы обязательно добавлю в статью. Спасибо.

Проблема
Рост файла журнала транзакций. С помощью команды DBCC SHRINKFILE не удается
уменьшить размер файла журнала транзакций до нужного размера .
Решение
Последовательность команд, которую нужно исполнить в Query Analyzer, выглядит
следующим образом:
BACKUP LOG Имя_Базы_Данных WITH TRUNCATE_ONLY
go
DBCC SHRINKFILE(Имя_Файла_Журнала_Транзакций)
go
Более подробное описание и рекомендации по использованию этих команд можно найти в документации по Microsoft SQL Server.

(0) Судя по тому, что у вас файл не уменьшается - модель восстановления full и бэкапы журнала транзакций вы не делаете.. Меняйте на simple. Для очистки журнала транзакций используйте команды:
backup log your_database with truncate_only
Может для начала спросить : А как ты шринк делаешь.
А то, к примеру, сверху в QA база Мастер торчит, а он удивляется, что лог не уменьшается.
Сделай сначала бекап LDF, а потом он уже шринканется
Удаление работает.
Отключи базу от сервака, удали журнал транзакций, подключи. Будет создан новый пустой журнал транзакций.
(21) с дуба рухнул?
---
дуб с маленькой буквы - типа дерево такое )))
Ответил на поставленный вопрос.
Ещё раз скажу: журнал транзакций можно удалить, при присоединении будет создан новый.
В чём проблема, если в данном случае человеку текущий ldf человеку не нужен?
(25) А при отсоединении базы все незавершенные транзакции будут автоматически "откачены" назад?
(25) хм, я думал в мдф начальные данные + в лдф все изменения
и пока фулл бэкап не сделаешь данные в мдф не переносятся при модели фулл
---
и продолжаю так думать )))
(27) Думай дальше.
(25) Нет, ни в коем случае. После того, как транзакция зафиксирована, она назад не откатится.
(29) Я немного не то имел в виду. Попробую переформулировать. Данные записываются в mdf файл по чекпойнту, либо лэйзи райтером. При отсоединении БД - данные уже измененные в памяти будут записаны в файл?
(31) Если не дадите пользователю завершить транзакцию (т.е. прервав его сессию), тогда изменения записаны не будут.
(27) и зря Вы так продолжаете думать) В жунале транзакций содержится информация о транзакциях. Активная часть - не зафикисрованные транзакции. Модель восстановления simple не используется для восстановления на определенный момент времени, т.е. данные о зафиксированных транзакциях, условно говоря, удаляются. В модели восстановления full/bulk-logged, информация о зафиксированных транзакциях перестает быть нужной после создания бэкапа журнала транзакций.
(32) Еще раз. Я записал документ и корректно завершил работу с системой. Все изменения были произведены в памяти. Данные будут записаны только по чекпойнту, либо lazy writer'ом. Вы уверены, что при отсоединении БД, будет вызван чекпойнт или запустится lazy writer?
"При перезапуске, служба SQL Server использует журнал транзакций для обнаружения завершенных транзакций, которые внесли изменения в данные, но не были записаны на диск и незавершенных транзакций" (http://www.sqlservercentral.com/articles/64582/ - пруфлинк, четвертый абзац раздела "How does SQL use the log?")
(32) Просто метод аттача без журнала какой-то "варварский" :). Я понимаю его необходимость при переносе базы и повреждении ldf-файла, но для очистки журнала.
(34) Чтобы устранить все сомнения, лучше, конечно же, сначала попробовать на тестовой базе.

(23) >журнал транзакций можно удалить, при присоединении будет создан новый.

Ну не совсем так, определённые шаманские действия все же нужно произвести:

Данный метод работает только для версии SQL2000
sp_configure 'allow updates', 1
reconfigure with override
go

select status from sysdatabases where name = '<db_name>'

и запоминаем/записываем значение на случай неудачи ребилда лога

update sysdatabases set status= 32768 where name = '<db_name>'

SQL Server скажет - Warning: The log for database '<db_name>' has been rebuilt.

9. Если все нормально, то там же выполняем
sp_dboption '<db_name>', 'single user', 'true'
go

9a.
Если Вам не удалось перевести базу в single user mode, то для проверки целостности данных можно попробовать dbo only mode
sp_dboption '<db_name>', 'dbo use only', 'true'

10. Если все в порядке, то
go

(37) Линуксоид? Любишь в гамаке в ластах в противогазе и стоя?

Нормальные люди для этого исползуют sp_attach_single_file_db.

(38) Ты FAQ читал?
У меня как правило ldf терялись не спроста, или диск наворачивался или еще что.
А в этом случае база суспект и никакой sp_attach_single_file_db не поможет.
Вывалит ошибку.

А самому ldf удалять, чтобы лог уменьшить это конечно придумать надо.

(40) Слишком много времени займет.

А можно ли из QA принудительно записать все накопленные изменения (транзакции), а потом грохнуть ldf?

Если до работы в 1С:Предприятии 8.3 Вы пользовались предыдущими версиями программы (8.2, 8.1, 8.0, не говоря уже о 7.7), то не могли не заметить, что при переходе на версию платформы 8.3 размер информационной базы (ИБ) значительно возрос.

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

Во многом увеличение размера базы 1С:Предприятие 8.3 в сравнении с предыдущими версиями обусловлено переходом на "управляемые формы", но мы это здесь обсуждать не будем, а рассмотрим некоторые способы сокращения размера базы, которые могут быть полезны обычным пользователям программы.

К сведению программистов, сисадминов и прочих IT-специалистов

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

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

Замечание для обычных пользователей

Поскольку для 1С:Предприятие есть много разных конфигураций, а проблема размера базы одна на всех, то приводить конкретные примеры (если они касаются конфигурации, а не платформы) мы будем для "Бухгалтерии предприятия".

К другим конфигурациям всё сказанное применимо "по аналогии".

Итак, посмотрим некоторые способы сокращения размера базы 1С, а также как сделать так, чтобы база не увеличивалась чрезмерно.

Отказ от ответственности

Все операции, предлагаемые в статье, Вы выполняете на свой страх и риск. Мы лишь приводим информацию в образовательных целях.

Если у Вас есть сомнения - обратитесь к специалисту по 1С Вашей компании.

Не загружайте в базу КЛАДР/ФИАС полностью!

Довольно часто происходит следующее: пользователь берёт и загружает все регионы адресного классификатора. Происходит это обычно по трём основным причинам:

  1. Пользователь новичок и "не подумал", зачем ему все регионы в базе, то есть загрузил "на всякий случай".
  2. "Не знал", что можно загрузить только часть справочника (маловероятно, но и так бывает).
  3. "Надоело" время от времени добавлять новые регионы, когда они реально требуются, но при этом не загружены (два-три-четыре раза добавил новые регионы, а потом надоело и решил загрузить сразу весь справочник, чтобы больше на это не отвлекаться).

В результате в базу 1С попадает очень много лишних данных, а размер самой ИБ возрастает очень существенно. Давайте посмотрим, на сколько именно:

  • версия 8.2: 1500 Мб ( + 1 Гб к пустой базе);
  • версия 8.3: 3000 Мб ( + 2,5 Гб к пустой базе);

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

Если Вы уже загрузили лишнее, то удалите ненужные регионы и размер базы уменьшится.

Как уменьшить старую базу 1С:Предприятие

Это решение подходит для тех случаев, когда база существует давно (годы) и документов в ней накопилось очень много. В таком случае можно избавиться от части документов, выполнив специальную операцию, которая в 1С называется " свёртка информационной базы ".

(!) Обратите внимание, что эта операция не может быть отменена (кроме как восстановлением из резервной копии), поэтому подумайте перед её выполнением (и сделайте копию базы).

Принцип свёртки заключается в том, что в базе есть старые документы, которые на 100% никогда уже не понадобятся. От них можно избавиться, урезав базу до определённой даты (до какой - смотрите сами).

Данная операция выполняется из раздела Администрирование. Где конкретно находится этот пункт, зависит от точной версии программы и конфигурации (в любом случае есть быстрый поиск по меню). Ниже приведён скриншот для одной из версий 1С:Бухгалтерии 8.3.

В процессе выполнения свёртки 1С проверит все документы от начала базы и до указанной Вами даты свёртки, после чего на основе этих документов сформирует "остатки", а сами данные удаляет.

В результате база не пострадает, итого не "поплывут", но документов станет меньше (иногда значительно). Вот так и будет сокращена база.

При выполнении свёртки следуйте инструкциям 1С. Если же Вы не уверены, что сможете (и хотите) делать это самостоятельно, обратитесь к соответствующему IT-специалисту Вашей компании.

Замечание: вообще так всегда и следует делать, поскольку техническое обслуживание базы - не дело рядового пользователя. Тем не менее, знание подобных операций часто бывает очень полезно владельцам мелких ИП/ООО.

Очистите журнал регистрации

Когда Вы что-то делаете в программе, она не просто выполняет нужные Вам операции, но и ведёт специальный журнал: кто, когда и что делал. Этот лог называется журналом регистрации и в него часто попадает слишком много информации, а сам журнал может занимать очень много места, значительно увеличивая размер базы 1С.

Представьте себе, что все Ваши действия в 1С записываются годами! Это очень много данных.

Конечно, иногда информация из журнала регистрации может быть очень полезной. Но для большинства пользователей эти данные не несут никакой полезной нагрузки и могут быть без последствий удалены. Если Вы сомневаетесь в целесообразности данной операции - проконсультируйтесь с 1С-программистом или системным администратором Вашей компании!

Журнал регистрации можно очистить через Конфигуратор. Принцип показан на скриншоте ниже.

Чтобы журнал в дальнейшем не забился снова, настройте сохранение только критичных для Вас данных.

Если у Вас файловая база 1С, то есть все данные хранятся в папке на диске, то очистить журнал можно удалением подпапки 1Cv8Log.

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

Уменьшаем размер резервной копии базы

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

Кстати, это доказывает, что база 1С состоит в основном из пустоты.

Есть ли вообще смысл уменьшать размер базы?

Чем меньше база, тем быстрее работает программа. А поскольку современные версии 1С:Предприятие 8.3 весьма "тормозные", то ускорить их не помешает.

Заметите ли Вы эффект от уменьшения размера базы? Это зависит от каждого случая индивидуально. В любом случае чем меньше места занимает ИБ, тем:

  • быстрее выполняется регулярное резервное копирование;
  • меньше места занимают резервные копии;
  • сама база занимает меньше места;
  • программа может работать быстрее (заранее сложно сказать);

Дополнительная информация по теме

На нашем сайте приведено также сравнение размеров базы для версии 1С:Предприятие 8.3 и 8.2 для конфигурации "Бухгалтерия предприятия". Вы можете на примере сравнить, как изменился размер базы при переходе на версию 8.3.

Также по указанной ссылке находится более подробное описание рассмотренных выше некоторых способов сжатия базы.

Поделитесь своим опытом

Знаете другие способы сжатия базы или просто имеете опыт уменьшения размера базы 1С:Предприятия? Поделитесь своим опытом в комментариях - это поможет другим пользователям лучше понять программу.

Предположим, что программа 1С работает с замедлениями или попросту «тормозит». Как понять, в чем проблема? Куда смотреть? Как правильно определить «узкое место»?

Советы по ускорению работы 1С 8.3 в файловом режиме Советы по ускорению работы 1С 8.3 в файловом режиме

Рекомендации на основе часто встречающихся ошибок:

1. Настройки антивируса «по умолчанию» — ошибка.

Уберите каталоги с исполняемыми модулями и базами 1С из проверки либо добавьте исключения по маске, как рекомендуют специалисты. При правильной настройке — антивирусное ПО практически не мешает.

Укажите в списке исключений:

  • для 1С v7.7 — маски *.md, *.dbf, *.cdx ;
  • для 1С v8 — маску 1Cv8*.1C? (1Cv8.1CD / 1Cv8tmp.1CD / 1Cv8.1CL / 1Cv8tmp.1CL) и файлы 1Cv8.pfl и 1Cv8.log , маски *.epf, *.dt, *.cf, *.cfu ;
  • временные файлы, используемые 1С: Предприятие.

2. Режим производительности . Если нужна скорость, сделайте это обязательно на клиентских и серверных компьютерах.

Включить режим можно в 2-х местах: через BIOS ( Отключить режимы C1, C1E, Intel С-state — C2, C3,C4; перевести в значение «Disabled» ) и в настройках Windows ( «Панель управления — Электропитания — Режим «Высокая производительность» ).

Можно как угодно ругать 1С, но если пользователям нужна скорость — включайте режим высокой производительности. Пусть ПК будет больше греться, потреблять больше энергии и сильнее шуметь вентиляторами. Это плата за производительность.

3. Включите Turbo Boost , если ваш процессор поддерживает эту функцию.

Максимальный эффект от Turbo Boost проявляется, когда включены C-State. Необходимо проверить влияние параметра для вашего варианта 1С (файловый режим или клиент-сервер). Например, по тесту Гилева.

Условия активации Turbo Boost:

  • BIOS QPI L0s, L1 — « Disabled »;
  • BIOS Demand Scrubbing — « Disabled »;
  • BIOS Intel SpeedStep — « Enabled »;
  • BIOS Turbo Boost — « Enabled »;
  • Windows « Панель управления — Электропитание — Высокая производительность ».

4. Следующее важное звено — сеть .

Перед началом тестирования:

  • убедитесь, что iperf между двумя компьютерами показывает всю полосу;
  • выполнены рекомендации с сайта Гилева ;
  • скопируйте один большой файл (5-10 Гб) по локальной сети и замерьте скорость копирования.

Есть несколько способов, как задать путь к сетевой базе 1С: по имени сервера, по ip-адресу и с подключением сетевого диска (net use). Правильный вариант только один:

Не ip-адрес, а имя сервера. Если сервер не виден по имени, добавьте его в DNS или в файл hosts. Обращение к серверу должно быть по имени, а путь в клиенте 1С — через букву сетевого диска и название каталога.

5. Проверьте формат базы 1С и протестируйте версию 8.3.8 .

Выводы для файлового режима работы:

  1. Локальная сеть должна быть настроена (выполнен тюнинг), а также правильно прописан путь в 1С. Ограничением при работе нескольких (>10) пользователей уже будет выступать не сеть, тут 1 Гбит ещё хватит, а блокировки при многопользовательской работе.
  2. Платформа 1C 8.3 в разы требовательнее к грамотной настройке сети. Влиять может все: деинсталляция (а не просто отключение) антивируса, удаление лишних сетевых протоколов, смена драйверов, от физического удаления второй сетевой карты на сервере.
  3. Настройки антивирусов по умолчанию снижают производительность. Если разрешить процессу 1cv8 делать все, скорость такая же, как и без антивируса.

⚡ Подписывайтесь на канал или задавайте вопрос на сайте — постараемся помочь всеми техническими силами. Безопасной и производительной работы в Windows и 1С.

Рассмотрим случай, когда log-файл 1С «распух» и занимает значительное место на диске. Сколько? Здесь все зависит от вашей конкретной ситуации.

Например, у вас файловая 1С — когда открываете папку с логами, то можете обнаружить файл *.lgp вполне солидного размера. До нескольких Гб. Это и есть Журнал регистрации 1С:Предприятия.

Возникает закономерный вопрос: «Можно ли его уменьшить или вообще избавиться?». Да, но сначала общие моменты.

Где находятся log-файлы

  • <каталог_ИБ>\1Cv8Log — файловый режим.
  • …/srvinfo/reg_xxxx/<идентификатор_ИБ>/1Cv8Log — клиент-серверный вариант.

Форматы записи журнала

Новый формат ЖР (SQLite, *.lgd) появился в платформе 1С:Предприятия, начиная с версии 8.3.5. При обновлении платформы автоматическая смена формата ЖР не применяется.

Но если вы создаёте новую информационную базу либо пересоздаёте старую с очисткой каталога 1Cv8Log, на 8.3.5 или выше, то при отсутствии 1Cv8.lgf будет создан журнал нового формата.

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

Как вернуть старый режим журнала регистрации

Для серверных баз:

  1. Остановите службу «Агент сервера 1С:Предприятия 8.3».
  2. Найдите папку 1Cv8Log интересующей вас базы по GUID (…/srvinfo/reg_xxxx/).
  3. Сделайте резервную копию всех файлов в 1Cv8Log в другое расположение. Можно сразу очистить каталог, если журнал не нужен. После копирования — удалите содержимое 1Cv8Log.
  4. Создайте пустой файл 1Cv8.lgf.
  5. Запустите службу «Агент сервера 1С:Предприятия 8.3».

Для файловых баз:

  1. Завершите работу всех пользователей с базой.
  2. Найдите папку 1Cv8Log по адресу файловой ИБ.
  3. Сделайте резервную копию всех файлов в 1Cv8Log в другое расположение. После копирования — очистите содержимое 1Cv8Log.
  4. Создайте пустой файл 1Cv8.lgf.
  5. Откройте файловую ИБ.

При необходимости — повторите шаги для каждой базы.

Рекомендации

  • Для снижения нагрузки полезно уменьшить детализацию логирования. По умолчанию — значение «Регистрировать ошибки, предупреждения, информацию, примечания».


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


Сократить журнал регистрации
  • Включите разделение журнала по периодам, выбрав из списка «Час/День/Неделя/Месяц/Год».
  • С версии 8.3.12 есть возможность интерактивно выбрать формат ЖР. В данном примере предлагается изменить на новый формат SQLite, но рекомендуем все же оставаться на старом.


Изменение формата журнала регистрации на SQLite

Преобразование из SQLite в последовательный формат ↓


Преобразование журнала регистрации в последовательный формат

Особенности нового формата SQLite

В этом режиме настройка «Разделять хранение журнала по периодам» в Конфигураторе отсутствует. Остаётся кнопка «Сократить» для обрезки части журнала и переноса обрезаемых событий в указанный файл.

Одно «но!» — после этого размер 1Cv8.lgd не уменьшается. Для очистки необходимо выполнить команду vacuum.

  • Перед запуском команды обязательно сделайте резервную копию файла 1Cv8.lgd.
  • Второе — он не должен быть «занят»; в файловом режиме — без активных сеансов, для клиент-серверного варианта — при остановленном Агенте 1С.

Для этих целей используется утилита sqlite3, которую можно скачать с официального сайта.

Пример команды (расположение утилиты и lgd-файла у вас могут отличаться):

Читайте также: