SQL Server 2008-сжатие журнала транзакций-любой способ автоматизации?
Я вошел и проверил свой журнал транзакций на днях, и это было что-то сумасшедшее, как 15GB. Я запустил следующий код:
USE mydb
GO
BACKUP LOG mydb WITH TRUNCATE_ONLY
GO
DBCC SHRINKFILE(mydb_log,8)
GO
который работал нормально, сжал его до 8 МБ...но БД, о которой идет речь, является издателем доставки журналов, и журнал уже резервное копирование до 500 МБ и быстро растет.
есть ли способ автоматизировать это сжатие журнала, помимо создания пользовательской задачи плана обслуживания "выполнить задачу инструкции T-SQL" и подключения ее к моему журналу задача резервного копирования? Если так, то хорошо...но я просто думал, что SQL Server будет иметь лучший способ справиться с этим. Я думал, что он должен сжиматься автоматически, когда вы берете резервную копию журнала, но этого не происходит (возможно, из-за моей доставки журналов, я не знаю).
вот мой текущий план резервного копирования:
- полное резервное копирование каждую ночь
- резервное копирование журнала транзакций один раз в день, поздним утром (возможно, зацепить журнал, сжимающийся на этот...не нужно сжиматься каждый день, хотя)
или, может быть, я просто запускаю его раз в неделю, после запуска полной задачи резервного копирования? Что вы все думаете?
6 ответов
Если файл растет каждую ночь на 500 МБ есть только одно правильное действие:предварительно увеличьте файл до 500 МБ и оставьте его там. Сжатие файла журнала повреждает. Наличие файла журнала auto-grow также повреждает.
- вы нажмете инициализацию нулевого заполнения роста файла во время обычных операций, снижая производительность
- ваш журнал растет с небольшими приращениями, создавая много виртуальных файлов журнала, что приводит к ухудшению операционной производительность
- ваш журнал фрагментируется во время усадки. Хотя это не так плохо, как фрагментация файла данных, фрагментация файла журнала по-прежнему влияет на производительность
- однажды ежедневный рост 500MB закончится из дискового пространства, и вы бы хотели, чтобы файл был предварительно выращен
вам не нужно верить мне на слово, вы можете прочитать в некоторых блогах MVP, что они говорят о практике сжатия журналов и файлов на регулярной основе основа:
- Auto-shrink-выключите его!
- о, ужас! Пожалуйста, перестаньте говорить людям, что они должны сжать свои файлы журнала!
- почему вы хотите быть ограничительными с сокращением файлов базы данных
- не трогайте эту кнопку Shrink!
- не усекайте файлы ldf!
есть еще, я просто устал связывать их.
каждый раз, когда вы сжимаете файл журнала, фея теряет свои крылья.
Я думаю, что вы предлагаете в своем вопросе правильный подход. То есть "подключить журнал, сокращающийся на" ваш ночной процесс резервного копирования / обслуживания. Главное, что вы регулярно делаете резервные копии журналов транзакций, что позволит уменьшить базу данных при выполнении задачи сжатия. Главное, что нужно иметь в виду, что это двухэтапный процесс: 1) резервное копирование журнала транзакций, который автоматически "усекает" ваш файл журнала; 2) Запустите сжатие против вашего файла журнала. "усечение" не обязательно (или когда-либо?) означает, что файл будет сжиматься...сокращается это отдельный шаг, который вы должны сделать.
для SQL Server 2005
инструкция DBCC shrinkfile команда ( Database_log_file_name , аргумент notruncate)
Это утверждение не нарушает доставку журналов. Но, возможно, вам придется бежать больше, чем один. Для каждого запуска резервное копирование, копирование и восстановление доставки журналов для запуска после повторного запуска этой инструкции.
сокращение и усечение различны.
мой опыт:
AA db, 6.8 GB журнал транзакций
первый запуск: 6.8 GB
доставка журналов резервное копирование, копирование, восстановление после второго запуска: 1.9 GB
резервное копирование, копирование, восстановление после третьего запуска: 1.7 GB
резервное копирование, копирование, восстановление после четвертого запуска: 1 GB
BB db, 50GB журнал транзакций
первый запуск: 39 ГБ
резервное копирование, копирование, восстановление после второго запуска: 1 ГБ
создание резервной копии журнала транзакций не означает, что онлайн размер файла журнала транзакций будет уменьшаться. Размер файла остается прежним. При резервном копировании транзакции в онлайн-журнале транзакций она помечается для перезаписи. Он не удаляется автоматически, и никакие пробелы не освобождаются, поэтому размер остается прежним.
Как только вы установите размер файла LDF, сохраните его размер, установив правильную частоту резервного копирования журнала транзакций.
пол Рэндал обеспечивает подробности здесь:
на основе рекомендаций Microsoft перед тем, как вы собираетесь сжать файл журнала, вы должны сначала попытаться выполнить следующие возможности:
- освобождение дискового пространства, чтобы журнал мог автоматически расти.
- перемещение файла журнала на диск с достаточным свободным пространством.
- увеличение размера файла журнала.
- Добавить файл журнала на другой диск.
-
включите автоматический рост с помощью инструкции alter DATABASE для установки ненулевое приращение роста для опции FILEGROWTH.
ALTER DATABASE EmployeeDB изменить файл (NAME = SharePoint_Config_log, SIZE = 2MB, MAXSIZE = 200MB, FILEGROWTH = 10MB);
кроме того, вы должны знать о сокращении операции через план обслуживания будет влиять на *.файл MDF и *.файл LDF. поэтому вам нужно создать план обслуживания с задачей задания SQL и написать следующую команду, чтобы можно было только сжать *.файл LDF вашей целевой размер.
use sharepoint_config
go
alter database sharepoint_config set recovery simple
go
dbcc shrinkfile('SharePoint_Config_log',100)
go
alter database sharepoint_config set recovery FUll
go
Примечание: 100 называется target_size для файла в мегабайтах, выражается как целое число. Если не указано, DBCC SHRINKFILE уменьшает размер до размера файла по умолчанию. Размер по умолчанию-это размер, указанный при создании файла.
по моему скромному мнению, не рекомендуется периодически выполнять операцию усадки! Только в некоторых случаях вам нужно уменьшить физический размер.
вы также можете проверить это полезное руководство сжать план обслуживания файла журнала транзакций в SQL Server