Поделиться через


Применение резервных копий журналов транзакций (SQL Server)

Область применения:SQL Server

Этот раздел относится только к модели полного восстановления и модели восстановления с частичным протоколированием.

В этом разделе описывается применение резервных копий журналов транзакций в рамках восстановления базы данных SQL Server.

Требования к восстановлению резервных копий журналов транзакций

Для применения резервной копии журнала транзакций необходимо выполнить следующие требования.

  • Достаточное количество резервных копий журналов для последовательности восстановления. Записей в резервных копиях журнала должно быть достаточно, чтобы провести полную последовательность восстановления. Необходимые резервные копии журнала, включая при необходимости резервные копии конца журнала , должны быть доступны перед запуском последовательности восстановления.

  • Правильный порядок восстановления. Необходимо сначала восстановить последнюю полную или разностную резервную копию базы данных. После этого в хронологическом порядке необходимо восстановить все журналы транзакций, созданные после указанной полной или разностной резервной копии. Если резервная копия журнала транзакций в этой цепочке журналов утрачена или повреждена, то восстановить можно только журналы транзакций до отсутствующего журнала.

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

    Совет

    Рекомендуется восстановить все резервные копии журналов (RESTORE LOG *database_name* WITH NORECOVERY). Затем, после восстановления последней резервной копии журнала, восстановите базу данных в отдельной операции (RESTORE DATABASE *database_name* WITH RECOVERY).

Журналы восстановления и транзакций

После завершения операции восстановления и восстановления базы данных выполняется процесс восстановления для обеспечения целостности базы данных. Дополнительные сведения о процессе восстановления см. в статье Обзор процессов восстановления (SQL Server).

После завершения процесса восстановления база данных переходит в режим "в сети", и к ней больше невозможно применить резервные копии журнала транзакций. Например, серия резервных копий журнала транзакций содержит долго выполняющуюся транзакцию. Начало транзакции записано в первой резервной копии журнала транзакций, а конец транзакции записан во второй резервной копии журнала транзакций. В первой резервной копии журнала транзакций отсутствует запись об операции фиксации или отката. Если операция восстановления запускается при применении первой резервной копии журнала транзакций, то долго выполняющаяся транзакция рассматривается как незавершенная, а изменения в данных, записанные в первой резервной копии журнала транзакций, будут отменены. SQL Server не разрешает применять вторую резервную копию журнала транзакций после этой точки.

Примечание.

В некоторых обстоятельствах при восстановлении журнала можно явно добавить файл.

Использование резервных копий журнала для восстановления до точки сбоя

Предполагается такая последовательность событий.

Время Событие
8:00 до полудня Создайте резервную копию базы данных, чтобы сделать полный бэкап.
Полдень Резервное копирование журнала транзакций.
16:00 Резервное копирование журнала транзакций.
18:00 вечера Создайте резервную копию базы данных для полного резервирования всей базы.
20:00 вечера Резервное копирование журнала транзакций.
9:45 вечера Произошел сбой.

Описание этой последовательности резервных копий см. в разделе "Резервные копии журналов транзакций" (SQL Server).

Чтобы восстановить базу данных в состоянии в 9:45 (точка сбоя), можно использовать любой из следующих альтернативных процедур:

Альтернативный способ 1. Восстановление базы данных с помощью последней полной резервной копии базы данных

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

  2. Не восстанавливайте полную резервную копию базы данных на 8:00 утра. Вместо этого восстановите резервную копию базы данных на 18:00, а затем примените резервную копию журнала на 20:00 и хвостовую резервную копию журнала.

Альтернативный способ 2. Восстановление базы данных с использованием более ранней полной резервной копии базы данных

Этот альтернативный процесс полезен, если какая-либо проблема мешает использовать полную резервную копию базы данных в 18:00. Этот процесс занимает больше времени, чем восстановление из полной резервной копии базы данных на 18:00.

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

  2. Восстановите полную резервную копию базы данных на 8:00 утра, а затем последовательно восстановите все четыре резервные копии журнала транзакций. Это позволяет произвести накат всех завершенных транзакций вплоть до 21:45.

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

В некоторых случаях журналы транзакций могут также использоваться для восстановления базы данных на определенный момент времени. Дополнительные сведения см. в разделе "Восстановление базы данных SQL Server до точки во времени" (модель полного восстановления).

Связанные задачи

Использование резервной копии журнала транзакций

Восстановление вашей точки восстановления

Восстановление базы данных после восстановления резервных копий с параметром WITH NORECOVERY

См. также

Журнал транзакций (SQL Server)
Руководство по архитектуре журнала транзакций SQL Server и управлению им