Show/Hide Toolbars

Руководство по тех. обслуживанию

Восстановление приложения

Ссылки Назад Вверх Вперед

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

Общее описание

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

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

На стадии копирования данных производится копирование всех страниц данных, журнала и индекса с резервного носителя в файлы БД.

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

Стадия отката производит откат незафиксированных транзакций и делает БД доступной для пользователей. После завершения стадии отката восстановление последующих резервных копий становится невозможным. Затем в процессе восстановления БД переводится в активный режим.

Более подробно об этом можно прочитать в документации Microsoft.

Также следует упомянуть параметры RECOVERY и NORECOVERY. Выполнение инструкции RESTORE после стадии повтора либо завершается, либо переходит к стадии отката в зависимости от того, указано ли в ней предложение WITH NORECOVERY.

Режим WITH RECOVERY включает и стадию повтора, и стадию отката, и восстанавливает БД. Более поздние резервные копии восстановить невозможно. Это значение по умолчанию. Если набор данных наката не был восстановлен в достаточной степени, чтобы обеспечить согласованность с БД, стадия отката выполнена быть не может. Компонент Database Engine выдает ошибку и прекращает восстановление. Если весь набор данных наката согласован с БД, то выполняется восстановление, после чего БД можно перевести в режим в сети.

Предложение WITH NORECOVERY позволяет пропустить стадию отката, чтобы сохранить незафиксированные транзакции. Пропуск стадии отката позволяет восстановить другие резервные копии, чтобы выполнить накат БД на более поздний момент времени. Иногда инструкция RESTORE WITH NORECOVERY выполняет накат данных до момента, пока они не будут согласованы с БД. В таких случаях компонент Database Engine выдает информационное сообщение, указывающее, что набор данных наката теперь можно восстановить при помощи параметра RECOVERY. Другими словами, параметр NORECOVERY нужно использовать, когда для восстановления базы используются несколько восстанавливаемых резервных копий, за исключением последней восстанавливаемой резервной копии. После применения параметра NORECOVERY БД переходит в состояние восстановления.

Более подробно об этом можно прочитать в документации Microsoft.

Восстановление из полной резервной копии

1. В контекстном меню БД (вызывается правой кнопкой мыши) выберите New Query:

1f_restore_full_1

Создание запроса

2. В появившемся окне введите запрос:

USE master
GO
RESTORE DATABASE <имя БД>
 FROM DISK='<путь к полной резервной копии>'
 WITH REPLACE

Параметр REPLACE

Восстановление обычно не допускает случайной перезаписи БД другой БД. Если указанная в инструкции RESTORE БД уже существует на текущем сервере, а идентификатор GUID семейства для заданной БД отличается от идентификатора GUID семейства для БД, записанного в резервном наборе данных, то ее восстановление не будет выполнено.

Параметр REPLACE отменяет несколько проверок, обычно выполняемых операцией восстановления:

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

Проверка на восстановление БД, использующей модель полного восстановления или модель восстановления с неполным протоколированием, для которой не была создана резервная копия заключительного фрагмента журнала, и не был применен параметр STOPAT. При использовании параметра REPLACE возможна потеря зафиксированных данных, поскольку последние записанные в журнал данные еще не были скопированы в резервную копию.

Перезапись существующих файлов.

Более подробно об этом можно прочитать в документации Microsoft.

Восстановление из инкрементальной копии

1. В контекстном меню БД (вызывается правой кнопкой мыши) выберите New Query:

1f_restore_full_1

Создание запроса.

2. В файле резервной копии могут содержаться несколько инкрементальных копий БД. Узнать позицию нужной копии можно так:

RESTORE HEADERONLY
 FROM DISK = '<путь к инкрементальной копии>'
 WITH NOUNLOAD;
GO
RESTORE HEADERONLY
 FROM DISK = '<путь к полной резервной копии>'
 WITH NOUNLOAD;
GO

Эта позиция будет использоваться в шаге 3.

3. В появившемся окне введите запрос:

USE master
RESTORE DATABASE <имя БД>
FROM DISK = '<путь к полной резервной копии>'
  WITH FILE = 1, NORECOVERY, REPLACE
RESTORE DATABASE <имя БД>
  FROM DISK = '<путь к инкрементальной копии>'
  WITH FILE = <позиция нужной инкрементальной копии>, RECOVERY
GO

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

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

1. В контекстном меню БД (вызывается правой кнопкой мыши) выберите New Query:

1f_restore_full_1

Создание запроса.

2. В появившемся окне введите запрос:

USE master
RESTORE DATABASE <имя БД>
 FROM DISK = '<путь к полной резервной копии>'
 WITH FILE = 3, NORECOVERY, REPLACE
RESTORE LOG <имя БД>
 FROM DISK = '<путь к инкрементальной копии1>'
 WITH FILE = 3, NORECOVERY
RESTORE LOG <имя БД>
 FROM DISK = '<путь к инкрементальной копии2>'
 WITH FILE = 2, NORECOVERY
RESTORE LOG <имя БД>
 FROM DISK = '<путь к инкрементальной копии3>'
 WITH FILE = 3, RECOVERY
GO

Полезные ссылки