Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LektsiiNovye.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.92 Mб
Скачать

Лекция 17: Полная модель восстановления

Как уже упоминалось ранее, необходимо заранее указать стратегию резервного копирования для базы данных SQL Server. Если достаточно использовать только полные и разностные резервные копии базы данных, то следует выбрать простую модель восстановления (SIMPLE). Если используются резервные копии журналов транзакций, то следует выбрать полную модель восстановления (FULL) или модель с неполным протоколированием BULK_LOGGED. Выбор полной модели восстановления, сообщает SQL Server, о необходимости создания резервных копии журнала транзакций. Для реализации этой модели SQL Server сохраняет в журнале транзакций все транзакции до создания резервной копии журнала. При выполнении резервного копирования журнала транзакций, SQL Server выполняет усечение журнала транзакций после того, как резервная копия записана на устройство резервного копирования. В простом режиме журнал транзакций усекается после каждой контрольной точки; это означает, что зафиксированные транзакции (которые уже записаны в файлы данных) удаляются из журнала транзакций. Таким образом, в простом режиме резервные копии журнала транзакций не могут быть созданы.

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

USE master; GO ALTER DATABASE ДляПрактики SET RECOVERY FULL; GO

Модель восстановления с неполным протоколированием

В модели полного восстановления высокопроизводительные операции массового копирования полностью протоколируются, чтобы сделать возможным резервное копирование журнала транзакций. В некоторых базах данных эта модель восстановления не может использоваться регулярно из-за ограничений на размер журнала транзакций и проблемы с производительностью, которые появляются из-за полного протоколирования высокопроизводительных операций массового копирования. Логично, что, существует модель восстановления с неполным протоколированием. Она позволяет создавать резервные копии журнала транзакций для фиксации и журнала, и результатов любых высокопроизводительных операций массового копирования, но при этом не имеет указанных недостатков. В рамках модели восстановления с неполным протоколированием невозможно восстановить базу данных на определённый момент времени. Кроме того, невозможно выполнять резервное копирование журнала транзакций, когда файл данных повреждён, а высокопроизводительная операция массового копирования может произойти после того, как резервная копия файла журнала транзакций уже была создана. Это один из основных недостатков резервного копирования журнала транзакций. Следовательно, модель восстановления с неполным протоколированием следует включать только на период выполнения высокопроизводительных операций массового копирования и, по возможности, на непродолжительное время. В остальное время следует использовать полную модель восстановления.

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

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

Извлечение информации резервного копирования

Перед восстановлением базы данных необходимо определить нужную резервную копию. Информация о них хранится в системно базе данных msdb. Следующий пример демонстрирует метод получения информации о резервном копировании:

USE msdb GO SELECT backup_start_date,type, physical_device_name,backup_set_id FROM backupset bs inner join backupmediafamily bm ON bs.media_set_id = bm.media_set_id WHERE database_name ='ДляПрактики' ORDER BY backup_start_date desc

Каждая резервная копия получает уникальный идентификатор, который называется идентификатором набора резервных копий. В возвращаемой информации тип разарвной копии I означает разностную копию, D – полная резервная копия.

Используя полученную информацию, можно определить, какие файлы данных и журналов были включены в резервные копии и в каких папках они первоначально хранились. Следующий запрос получает эту информацию для идентификатора набора 62.

SELECT filegroup_name,logical_name,physical_name FROM msdb.backupfile WHERE backup_set_id = 62

В некоторых ситуациях в базе данных msdb может не оказаться необходимой информации, в силу её повреждения. В этих случаях можно получить необходимую информацию только непосредственно с устройства резервного копирования. Чтобы получить информацию о резервных копиях, которые находятся на T:\BACKUPS\ADVFULL.BAK, необходимо выполнить следующую инструкцию:

RESTORE HEADERONLY FROM DISK='T:\BACKUPS\ADVFULL.BAK'

Получить информацию о файлах данных и журналов, включённых в резервные копии и хранящиеся на данном устройстве, можно с помощью инструкции:

RESTORE FILELISTONLY FROM DISK ='T:\BACKUPS\ADVFULL.BAK'

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]