Применение резервных копий журнала транзакций. Журнал транзакций windows
Управление размером файла журнала транзакций
Эта документация перемещена в архив и не поддерживается.
SQL Server 2012
В некоторых случаях может оказаться полезным физическое сжатие или расширение размера реального файла журнала или журнала транзакции базы данных SQL Server. В данном разделе содержатся сведения о мониторинге размера журнала транзакций SQL Server, сжатии журнала транзакций, добавлении или увеличении файла журнала транзакций, оптимизации скорости роста журнала транзакций tempdb, а также об управлении размером файла журнала транзакций.
В этом разделе:
Контролировать используемое пространство журнала можно с помощью процедуры DBCC SQLPERF (LOGSPACE). Она возвращает сведения об объеме пространства, используемого журналом в данный момент, и указывает, если необходимо провести усечение журнала транзакций. Дополнительные сведения см. в разделе DBCC SQLPERF (Transact-SQL). Для получения сведений о текущем размере файла журнала, его максимальном размере и параметре автоматического увеличения файла вы можете также использовать столбцы size, max_size и growth для данного файла журнала в представлении sys.database_files. Дополнительные сведения см. в разделе sys.database_files (Transact-SQL).
Рекомендуется избегать переполнения диска, содержащего журналы. |
[В начало]
Для уменьшения реального размера физического файла журнала необходимо выполнить его сжатие. Это полезно, если файл журнала транзакций содержит ненужное неиспользованное пространство. Сжатие файла журнала может производиться только в том случае, если база данных находится в режиме «в сети» и пока свободен хотя бы один виртуальный файл журнала. В ряде случаев сжатие невозможно до тех пор, пока не выполнена следующая операция усечения журнала.
Такие факторы, как долго выполняемые транзакции, удерживающие файлы журналов в активном состоянии в течение продолжительного периода времени, могут ограничить или вовсе не допустить возможность сжатия журнала. Дополнительные сведения о факторах, из-за которых усечение журнала может откладываться, см. в разделе Журнал транзакций (SQL Server). |
Процесс сжатия файла журнала удаляет один или несколько виртуальных файлов журнала, которые не содержат частей логического журнала (неактивные виртуальные файлы журнала ). При сжатии файла журнала транзакций в конце файла журнала удаляется достаточное количество неактивных виртуальных файлов журнала, чтобы журнал уменьшился до приблизительного целевого размера.
Сжатие файла журнала (без сжатия файлов базы данных)
Мониторинг событий сжатия файла журнала
To monitor log space
Можно задать автоматическое выполнение сжатия файлов базы данных и журнала. Однако автоматическое сжатие не рекомендуется, поэтому свойство autoshrink базы данных по умолчанию имеет значение FALSE. Если свойство autoshrink имеет значение TRUE, то автоматическое сжатие уменьшит размер файла только в том случае, если неиспользуемое пространство занимает более 25 % от общего объема. Файл будет сжат либо до размера, в котором 25 % пространства не используется, либо до исходного размера, каким бы большим он ни был. Дополнительные сведения об установке свойства autoshrink см. в разделе Просмотр или изменение свойств базы данных при использовании свойства Auto Shrink на странице Параметры или в разделе Параметры ALTER DATABASE SET (Transact-SQL) при использовании параметра AUTO_SHRINK. |
[В начало]
Кроме того, можно выделить дополнительное место на диске путем увеличения существующего файла журнала (если для этого достаточно места на диске) либо путем добавления файла журнала в базу данных, как правило, на другом диске.
-
Файл журнала добавляется в базу данных с помощью предложения ADD LOG FILE инструкции ALTER DATABASE. Это позволяет увеличить размер файла.
-
Файл журнала можно увеличить с помощью предложения MODIFY FILE инструкции ALTER DATABASE. При этом следует указать синтаксис SIZE и MAXSIZE. Дополнительные сведения см. в разделе ALTER DATABASE (Transact-SQL).
[В начало]
При перезапуске экземпляра сервера размер журнала транзакций базы данных tempdb изменяется и становится равным исходному размеру, который был до применения параметра автоматического увеличения файла. Это может понизить производительность журнала транзакций базы данных tempdb. Этого можно избежать с помощью увеличения размера журнала транзакций базы данных tempdb после запуска или перезапуска экземпляра сервера. Дополнительные сведения см. в разделе База данных tempdb.
[В начало]
Для управления размером файла журнала транзакций вы можете использовать инструкцию ALTER DATABASE (Transact-SQL). Следует отметить следующее:
-
Чтобы изменить текущий размер файла в КБ, МБ, ГБ и ТБ, используйте параметр «SIZE».
-
Чтобы изменить шаг приращения размера, используйте параметр FILEGROWTH. Значение 0 указывает, что автоматическое приращение выключено и дополнительное пространство для файла не разрешено. Небольшое значение параметра автоувеличения прироста размера файла журнала может снизить производительность системы. Во избежание слишком частых увеличений размера файла журнала следует задать достаточно большое значение шагу роста файла журнала. Как правило, достаточно установить значение увеличения шага роста равным 10 %.
Сведения об изменении параметра прироста для файлов журнала см. в разделе ALTER DATABASE (Transact-SQL).
-
Чтобы установить максимальный размер файла журнала в КБ, МБ, ГБ и ТБ или задать неограниченный размер, используйте параметр MAXSIZE.
[В начало]
Справочник
Основные понятия
technet.microsoft.com
Использование резервных копий журналов транзакций
- 12/15/2008
- Время чтения: 4 мин
В этой статье
Изменения: 17 июля 2006 г.
Сведения, содержащиеся в данном разделе, относятся только к тем базам данных, в которых используется модель полного восстановления или модель восстановления с неполным протоколированием.
Перед созданием первой резервной копии журнала необходимо создать полную резервную копию данных, например резервную копию базы данных или первую в наборе резервную копию файлов. Восстановить базу данных исключительно из резервных копий файлов может оказаться довольно сложно. Поэтому рекомендуется начинать резервирование с создания полной резервной копии базы данных. После этого необходимо регулярное создание резервных копий журнала транзакций. Это не только уменьшит вероятность потери данных, но и даст возможность производить усечение журнала транзакций. Обычно он усекается после каждого обычного резервного копирования журналов, но усечение может быть отложено. Дополнительные сведения см. в разделе Факторы, вызывающие задержку усечения журнала.
SQL Server 2005 позволяет создать резервную копию журнала во время выполнения полного резервного копирования.
Цепочка журналов
Непрерывная последовательность резервных копий журнала называется цепочкой журналов. Цепочка журналов начинается с полной резервной копии базы данных. Обычно новая цепочка журналов начинается в момент создания первой резервной копии базы данных или после переключения модели восстановления с простой на полную или на модель с неполным протоколированием.
Чтобы восстановить базу данных на момент точки сбоя, нужна неповрежденная цепочка журналов. Непрерывная последовательность резервных копий журналов должна следовать до точки сбоя. Точка начала этой последовательности зависит от применяемого типа резервной копии: резервная копия базы данных, частичная резервная копия или резервная копия файлов. В случае резервной копии базы данных или частичной резервной копии последовательность резервных копий журнала должна начинаться от конца резервной копии базы данных или частичной резервной копии. В наборе резервных копий файлов последовательность резервных копий журналов должна следовать от начала полного набора резервных копий файлов.
При использовании только резервных копий файлов следует создавать резервную копию журналов от начала первой полной резервной копии файлов. Начать создавать резервные копии журналов можно сразу после создания первой полной резервной копии файлов, так как первое резервное копирование журнала может занять много времени. Во время резервного копирования журнала можно создать резервные копии других файлов. Для восстановления базы данных только из резервных копий файлов нужно, чтобы набор полных резервных копий файла был дополнен одной или несколькими резервными копиями журналов, покрывающими интервал между первым и последним резервным копированием файлов.
Для идентификации резервной копии, которая начинает цепочку журналов в наборе резервных копий, выполните запрос столбца begins_log_chain таблицы backupset или выполните инструкцию RESTORE HEADERONLY на устройстве резервного копирования и просмотрите в результирующем наборе столбец BeginsLogChain. |
Важно регулярно создавать резервные копии журналов транзакций. Помимо возможности восстановления резервных копий транзакций, при этом производится усечение журнала: из него уделяются записи, помещенные в резервную копию. Если резервное копирование журнала производится недостаточно часто, файлы журнала могут заполниться. Сведения об обработке полного журнала транзакций см. в разделе Устранение неполадок при переполнении журнала транзакций (ошибка 9002).
Если резервная копия журналов повреждена или утеряна, начните новую цепочку журналов: создайте полную или разностную резервную копию базы данных и резервную копию журнала транзакций. Резервные копии журналов транзакций, предшествующие потерянной резервной копии журнала, рекомендуется сохранить на тот случай, если потребуется восстановить базу данных на момент времени, соответствующий этим резервным копиям. Сведения о защите резервных копий см. в разделе Вопросы безопасности при восстановлении и резервировании. |
Сведения о создании резервных копий см. в разделе Создание резервных копий журналов транзакций.
Использование резервных копий журналов
Восстановление резервной копии журналов производит накат изменения, которые записаны в журнале транзакций, для воссоздания точного состояния базы данных на момент начала операции резервного копирования журнала. При восстановлении базы данных необходимо восстанавливать резервные копии журналов, которые были созданы после создания восстановленной полной резервной копии или с начала первой восстановленной резервной копии файлов. Обычно после восстановления последней резервной копии данных или разностной резервной копии необходимо произвести восстановление серии резервных копий журналов до точки восстановления. Затем производится восстановление базы данных. При этом откатываются все незавершенные на момент восстановления транзакции и база данных переводится в оперативный режим. После восстановления базы данных нельзя более восстанавливать резервные копии.
Чтобы предотвратить потерю данных перед автономным восстановлением или после сбоя, рекомендуется создавать резервную копию заключительного фрагмента журнала, в котором сохраняются все последние записи журнала, которые не были еще зарезервированы. Дополнительные сведения см. в разделе Резервные копии заключительного фрагмента журнала. |
Восстановление резервной копии журнала транзакций
См. также
Основные понятия
Рекомендации по переключению с моделью простого восстановленияОсобенности переключений между моделью полного восстановления и моделью восстановления с неполным протоколированиемРезервное копирование в полной модели восстановленияЗнакомство с журналами транзакцийОбзор методов восстановления в SQL Server
Другие ресурсы
Основные сведения о журналах транзакций и управлении ими
Справка и поддержка
Получение помощи по SQL Server 2005
Журнал изменений
msdn.microsoft.com
Применение резервных копий журнала транзакций
Этот раздел относится только к модели полного восстановления и модели восстановления с неполным протоколированием.
Этот раздел описывает применение резервных копий журнала транзакции как части восстановления базы данных SQL Server. Для применения резервной копии журнала транзакций необходимо выполнить следующие требования.
Необходимо вначале восстановить предыдущую полную или разностную резервную копию базы данных.
Все журналы транзакций, созданные после указанной полной или разностной резервной копии, должны восстанавливаться в хронологическом порядке. Если резервная копия журнала транзакций в этой цепочке журналов утрачена или повреждена, то восстановить можно только журналы транзакций до отсутствующего журнала.
База данных еще не восстановлена. База данных не может быть восстановлена до тех пор, пока не применен последний журнал транзакций. Если база данных восстанавливается после восстановления одной из промежуточных резервных копий журнала транзакций, расположенной перед концом цепочки журналов, базу данных после этой точки можно восстановить без перезапуска всей последовательности восстановления, начинающейся с полной резервной копии базы данных.
Журналы восстановления и транзакций
По завершении операции восстановления и восстановления базы данных будет произведен откат всех незавершенных транзакций. Этот шаг называется стадией отката. Откат требуется для восстановления целостности базы данных. После отката база данных включается в оперативный режим, и больше никакие резервные копии журнала транзакций не могут быть применены.
Например, серия резервных копий журнала транзакций содержит долго выполняющуюся транзакцию. Начало транзакции записано в первой резервной копии журнала транзакций, а конец транзакции записан во второй резервной копии журнала транзакций. В первой резервной копии журнала транзакций нет записи об операции фиксации или отката. Если операция восстановления запускается, когда применяется первая резервная копия журнала транзакций, долго выполняющаяся транзакция рассматривается как незавершенная, а изменения данных, записанные в первой резервной копии журнала транзакций, будут отменены. После этой точки SQL Server не разрешает применение второй резервной копии журнала транзакций.
Наличие достаточного количества резервных копий журналов для последовательности восстановления
Должно быть достаточно записей в резервных копиях журнала, чтобы провести полную последовательность восстановления. Необходимые резервные копии журнала, включая при необходимости резервные копии конца журнала, должны быть доступны перед запуском последовательности восстановления.
Использование резервных копий журнала для восстановления до точки сбоя
Предполагается такая последовательность событий.
8:00 | Создание резервной копии базы данных для создания полной резервной копии базы данных. |
Полдень | Создание резервной копии журнала транзакций. |
16:00 | Создание резервной копии журнала транзакций. |
18:00 | Создание резервной копии базы данных для создания полной резервной копии базы данных. |
20:00 | Создание резервной копии журнала транзакций. |
21:45 | Произошел сбой. |
Чтобы восстановить базу данных до ее состояния в 21:45 (точка сбоя), может быть использована любая из следующих альтернативных процедур.
Вариант 1. Восстановление базы данных с помощью последней полной резервной копии базы данных
Создайте резервную копию заключительного фрагмента активного журнала транзакций на момент точки сбоя.
Не восстанавливайте полную резервную копию базы данных, созданную в 08:00:00. Вместо этого восстановите последнюю полную резервную копию базы данных, сделанную в 18:00, а затем примените резервную копию журнала, сделанную в 20:00 и резервную копию заключительного фрагмента журнала.
Вариант 2. Восстановление базы данных с использованием более ранней полной резервной копии базы данных
Этот вариант можно использовать, если проблема не позволяет воспользоваться полной резервной копией базы данных от 18:00. Этот процесс занимает больше времени, чем восстановление полной резервной копии базы данных от 18:00. |
Создайте резервную копию заключительного фрагмента активного журнала транзакций на момент точки сбоя.
Восстановите полную резервную копию базы данных от 8:00, а затем последовательно восстановите все четыре резервные копии журнала транзакций. Это позволяет произвести накат всех завершенных транзакций вплоть до 21:45.
Этот вариант указывает на избыточную безопасность, предлагаемую цепочкой резервных копий журнала транзакций в серии полных резервных копий базы данных.
Применение резервного копирования журнала транзакций
Применение WITH NORECOVERY для восстановления резервных копий журнала:
RESTORE LOG имя_базы_данных FROM <устройство_резервного_копирования> WITH NORECOVERY
После восстановления последней резервной копии журнала восстановите базу данных отдельной операцией:
RESTORE DATABASE имя_базы_данных WITH RECOVERY
Использование резервной копии журнала транзакций
Восстановление до нужной точки восстановления
См. также
Другие ресурсы
msdn.microsoft.com