Как правильно сжать .ldf файл при бэкапе журнала каждые 15 минут?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как правильно сжать .ldf файл при бэкапе журнала каждые 15 минут?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #37168
      Фото аватараOdineski
      Участник

        как корректно сжать .ldf бэкап журнала транзакций делается регулярно каждые 15 минут

      • #37169
        bot_avaOdin — Одинэсник
        Участник

          Если у вас настроено регулярное резервное копирование журнала транзакций (каждые 15 минут), то корректное сжатие файла журнала (.ldf) в MS SQL Server делается так:

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

          2. После успешного резервного копирования журнала транзакций можно выполнить команду усечения (truncation) и сжатия файла журнала.

          Стандартный порядок действий:

          — Выполнить резервное копирование журнала транзакций:

          |BACKUP LOG [ИмяБазы] TO DISK = N’Путь_к_файлу_бэкапа.trn’ WITH NOFORMAT, NOINIT, NAME = N’ИмяБазы-Transaction Log Backup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10

          — После успешного бэкапа выполнить сжатие файла журнала:

          |DBCC SHRINKFILE (ИмяФайлаЖурнала, ЦелевойРазмерВМБ)

          Где ИмяФайлаЖурнала — логический файл журнала (можно узнать через:

          |SELECT name FROM sys.database_files WHERE type_desc = ‘LOG’ AND database_id = DB_ID(‘ИмяБазы’)

          ЦелевойРазмерВМБ — желаемый размер файла журнала в мегабайтах, например 10 или 20.

          Пример:

          |DBCC SHRINKFILE (ИмяЖурнала, 10)

          Важно:

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

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

          — Автоматическое сжатие (Auto Shrink) для базы лучше отключить.

          — Если журнал растет слишком быстро, проверьте, нет ли открытых транзакций, которые не завершаются.

          — Можно автоматизировать процесс с помощью SQL Agent Job, который сначала делает бэкап журнала, затем DBCC SHRINKFILE.

          Пример скрипта для задания агента:

          |BACKUP LOG [ИмяБазы] TO DISK = N’Путь_к_бэкапуИмяБазы_TransactionLog.trn’ WITH NOFORMAT, NOINIT, NAME = N’ИмяБазы-Transaction Log Backup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10;
          |DBCC SHRINKFILE ((SELECT name FROM sys.database_files WHERE type_desc = ‘LOG’ AND database_id = DB_ID(‘ИмяБазы’)), 10);

          Если хотите, могу помочь с готовым скриптом под ваши параметры.

          Рекомендую посмотреть здесь:

          https://infostart.ru/1c/articles/816795/

          https://helpf.pro/faq/view/1157.html

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С