Лекция №20
.docx
5. Лекция: Полная модель восстановления: версия для печати и PDA Данная лекция посвящена полной модели восстановления. Рассматривается модель восстановления с неполным протоколированием, восстановление базы из резервных копий и восстановление базы данных при простой стратегии резервного копирования с использованием T-SQL |
||||||||||||||||
Как уже упоминалось ранее, необходимо заранее указать SQL Server, какую стратегию резервного копирования вы планируете реализовать. Если используются только полные и разностные резервные копии базы данных, то следует выбрать простую модель восстановления. Если нужно использовать также резервные копии журналов транзакций, то следует выбрать полную модель восстановления ( FULL ) или модель с неполным протоколированием BULK_LOGGED. Выбрав полную модель восстановления, мы сообщаем SQL Server, что необходимо создавать резервные копии журнала транзакций. Чтобы сделать это возможным, SQL Server сохраняет все транзакции в журнале транзакций до тех пор, пока не будет создана резервная копия журнала. При выполнении резервного копирования журнала транзакций, SQL Server выполняет усечение журнала транзакций после того, как резервная копия записана на устройство резервного копирования. В простом режиме журнал транзакций усекается после каждой контрольной точки; это означает, что зафиксированные транзакции (которые уже записаны в файлы данных) удаляются из журнала транзакций. Таким образом, в простом режиме резервные копии журнала транзакций не могут быть созданы. Важно. Очень важно выполнять резервное копирование журнала транзакций, когда база данных находится в полном режиме восстановления. Если резервные копии журнала транзакций не создаются, то файл журнала разрастается до максимального размера. Когда он переполнится и больше не сможет расти, то дальнейшее выполнение транзакций станет невозможным. Код для выполнения резервного копирования журнала транзакций можно найти в разделе "Создание резервных копий журнала транзакций". Чтобы выбрать модель восстановления FULL, можно использовать инструкцию ALTER DATABASE. Следующий код устанавливает режим восстановления базы данных AdventurеWorks в значение FULL. USE master; GO ALTER DATABASE AdventureWorks SET RECOVERY FULL; GO Модель восстановления с неполным протоколированием В модели полного восстановления высокопроизводительные операции массового копирования (операции, которые изменяют сразу большие количества данных) полностью протоколируются, чтобы сделать возможным резервное копирование журнала транзакций. В некоторых базах данных эта модель восстановления не может использоваться регулярно из-за ограничений на размер журнала транзакций и проблемы с производительностью, которые появляются из-за полного протоколирования высокопроизводительных операций массового копирования. Логично, что, существует модель восстановления с неполным протоколированием. Она позволяет создавать резервные копии журнала транзакций для фиксации и журнала, и результатов любых высокопроизводительных операций массового копирования, но при этом не имеет указанных недостатков. В рамках модели восстановления с неполным протоколированием невозможно восстановить базу данных на определенный момент времени. Кроме того, невозможно выполнять резервное копирование журнала транзакций, когда файл данных повр ежден, а высокопроизводительная операция массового копирования может произойти после того, как резервная копия файла журнала транзакций уже была создана. Это один из основных недостатков резервного копирования журнала транзакций. Следовательно, модель восстановления с неполным протоколированием следует включать только на период выполнения высокопроизводительных операций массового копирования и, по возможности, на непродолжительное время. В остальное время следует использовать полную модель восстановления. Не используйте модель восстановления с неполным протоколированием, если у вас не возникает проблем при использовании только полностью протоколируемых операций. Дополнительную информацию можно найти в Электронной документации по SQL Server 2005, тема "Резервное копирование в модели восстановления с неполным протоколированием". Создание резервных копий журнала транзакций Чтобы выполнить резервное копирование журнала транзакций, следует выбрать полную модель восстановления, причем после изменения модели восстановления должна быть создана хотя бы одна полная резервная копия базы данных. Резервное копирование журнала транзакций выполняется с помощью инструкции BACKUP LOG. Как всегда, следует указать имя базы данных и устройство резервного копирования. Типы устройств резервного копирования в этом случае не отличаются от тех, которые используются для создания полных и разностных резервных копий. Чтобы создать резервную копию журнала транзакций базы данных AdventurеWorks на физическом устройстве, выполните следующие действия. Создаем резервную копию файла журнала транзакций
TO DISK='t:\adv_log.bak' Как и в других инструкциях резервного копирования, процесс дописывает резервную копию на устройство резервного копирования, если в инструкции BACKUP не указан другой вариант. Чтобы перезаписать резервные копии на устройстве, используется инструкция WITH INIT. USE master; GO BACKUP LOG AdventureWorks TO DISK='t:\adv_log.bak' WITH INIT Восстановление базы данных из резервных копий В предыдущем разделе мы выполняли различные виды резервного копирования, но процесс восстановления при этом подразумевался только в теории. Теперь мы узнаем, как восстановить базу данных различными способами. Извлечение информации резервного копирования Прежде, чем приступить к восстановлению базы данных, необходимо знать, какую резервную копию выбрать для восстановления. SQL Server хранит историю резервного копирования, в которой есть информация о каждой отдельной резервной копии, созданной для базы данных, в базе данных msdb. Чтобы найти нужную для восстановления резервную копию, можно выполнить запрос к базе данных msdb. Создаем информацию простого резервного копирования
WITH INIT,Differential; Получаем общую информацию резервного копирования
ORDER BY backup_start_date desc Панель результатов, показанная на рисунке, сообщает, что тип самой последней резервной копии - I, что соответствует разностной копии. Как вам известно, чтобы восстановить данные из резервной копии, сначала необходимо восстановить данные из самой последней полной резервной копии. Эту резервную копию мы видим во второй строке, ее тип Dуказывает на то, что это полная резервная копия.
увеличить изображение Используя приведенную выше информацию, можно узнать, какие файлы данных и журналов были включены в резервные копии и в каких папках они первоначально хранились. Следующий запрос получает эту информацию для идентификатора набора 62. Выполняя этот запрос, обязательно измените backup_set_id с 62 на идентификатор полной резервной копии, найденной на предыдущем этапе. SELECT filegroup_name,logical_name,physical_name FROM msdb..backupfile WHERE backup_set_id = 62 —change to your backup_set_id
RESTORE HEADERONLY FROM DISK='T:\BACKUPS\ADVFULL.BAK'
FROM DISK ='T:\BACKUPS\ADVFULL.BAK' Восстановление базы данных через интерфейс среды SQL Server Management Studio Во многих случаях самый простой способ восстановить базу данных – это воспользоваться интерфейсом SQL Server Management Studio. SQL Server Management Studio использует историю создания резервных копий, которая хранится в базе данных msdb, чтобы показать нам, какой способ восстановления базы данных является наилучшим.. Реализуем сценарий восстановления базы данных через интерфейс среды SQL Server Management Studio
WITH INIT,Differential;
Примечание. Убедитесь, что с базой данных AdventurеWorks не открыто ни одного соединения, поскольку в процессе восстановления соединения с базой данных не разрешены.
увеличить изображение Рис. 5.1. Диалоговое окно Восстановление базы данных
WHERE ContactID =3; В панели результатов должно отобразиться kim@testbackup.com. Примечание. Как видите, нет необходимости в удалении базы данных, которую вы хотите восстановить. Процесс восстановления автоматически удаляет эту базу данных на первом этапе. Восстановление базы данных при простой стратегии резервного копирования с использованием T-SQL Представьте себе, что вы создали резервную копию, описанную в предыдущем примере. Чтобы восстановить базу данных при помощи T-SQL, используется инструкция RESTORE DATABASE. Синтаксис этой инструкции аналогичен инструкции BACKUP. Необходимо указать имя базы данных и путь к устройству резервного копирования. Восстанавливаем данные из полной резервной копии при помощи инструкций T-SQL
FROM DISK='T:\BACKUPS\ADVFULL.BAK'
WHERE ContactID = 3 В процессе этой процедуры восстанавливаются только данные полной резервной копии. После восстановления база данных автоматически переводится в рабочий режим, возвращаясь к исходным параметрам. Если нужно также применить разностную резервную копию, необходимо сообщить SQL Server о том, что не следует переводить базу данных в рабочий режим до завершения полного восстановления, поскольку это сделает невозможным восстановление данных из разностной резервной копии. Для этого используется параметр NORECOVERY. Параметр NORECOVERY должен присутствовать во всех инструкциях RESTORE, за исключением последней в цикле восстановления. В следующем примере мы воспользуемся параметром NORECOVERY при восстановлении данных из полной и разностной резервных копий, выполненных ранее. Восстанавливаем данные из разностных резервных копий при помощи инструкций T-SQL
WITH NORECOVERY
FROM DISK='T:\BACKUPS\ADVDIFF.BAK'
WHERE ContactID = 3 Восстановление базы данных при полной стратегии резервного копирования с использованием T-SQL В полной стратегии мы имеем комбинацию полной резервной копии и резервных копий журнала транзакций. Далее речь пойдет о восстановлении данных из этих резервных копий при помощи инструкций T-SQL. Восстанавливаем данные из полной резервной копии и резервных копий журнала транзакций
WHERE ContactID=3;
WITH INIT, NO_TRUNCATE; Примечание. Если журнал транзакции поврежден, дальнейшее выполнение этого типа резервного копирования будет невозможным. В этом случае, можно восстановить данные только из резервной копии, созданной ранее.
FROM DISK = "T:\BACKUPS\ADVLOG2.BAK"; Параметр REPLACE в инструкции RESTORE DATABASE указывает SQL Server на то, что следует пропустить проверку безопасности и заменить файлы базы данных без дальнейших запросов.
WHERE ContactID = 3 Восстановление системных баз данных Системные базы данных master, msdb, и model являются ядром установки SQL Server. Без системных баз данных SQL Server не будет функционировать должным образом или, при повреждении базы данных master, вообще не будет работать. Следовательно, крайне важно иметь резервные копии этих баз данных, чтобы быть готовым к возможным сбоям системы. Для системных баз данных обычно используется простая модель, при которой создаются полные резервные копии базы данных по регулярному расписанию. Такая стратегия в этом случае будет эффективной, поскольку информация в этих таблицах изменяется нечасто. Тем не менее, после существенных изменений в системе, например, создания баз данных, имен входа или изменения параметров конфигурации, следует выполнить внеплановое резервное копирование системных баз данных. Выполнение резервного копирования и восстановления в SQL Server выполняются в рабочем режиме. Следовательно, чтобы можно было восстановить системные базы данных, сервер SQL Server должен быть запущен. Восстановить работоспособность SQL Server можно двумя способами:
После этого SQL Server начинает работать, но в нем отсутствует информация о пользовательских базах данных, именах входа, заданиях, предупреждениях и настройках, которые были в системе до аварийной ситуации. Чтобы исправить эту ситуацию, следует восстановить системные базы данных из резервных копий. Процесс восстановления системных баз данных всегда начинается с восстановления базы данных master. Для восстановления базы данных master используется особая процедура, подробное описание которой приводится ниже. Важно. Эту процедуру следует выполнять только на тестовой системе. В случае ошибки можно потерять данные! В этом примере предполагается, что SQL Server установлен как экземпляр с параметрами по умолчанию. Восстанавливаем базу данных master
WITH INIT
увеличить изображение
C:\Documents and Settings\Administrator>cd "\Program Files\ Microsoft SQL Server\MSSQL.1\MSSQL\binn"
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn>sqlservr –m
GO Результат должен выглядеть следующим образом:
увеличить изображение
Восстанавливаем базы данных msdb и model
WITH REPLACE
Как составить расписание резервного копирования при помощи мастера планов обслуживания До сих пор мы выполняли резервное копирование через Query Window (Окно запроса) в SQL Server Management Studio. Безусловно, в производственных системах необходимо создать расписание автоматического резервного копирования без участия пользователя. Для этого можно использовать любую программу автоматического обслуживания. В SQL Server есть встроенный планировщик, представляющий собой компонент службы SQL Server Agent (агент SQL Server). С помощью заданий SQL Server Agent (агента SQL Server) можно настроить пакеты T-SQL, которые будут выполняться по заданному расписанию. Этот компонент предоставляет функции, необходимые для автоматизации стратегии восстановления. Рассмотрим еще один способ составления расписания резервного копирования при помощи мастера. Мастер SQL Maintenance Plan Wizard (мастер планов обслуживания SQL) - это инструмент, которые помогает выполнять стандартные задачи вроде резервного копирования, дефрагментации индексов и проверки целостности базы данных. Мастер планов обслуживания зависит от службы SQL Server Agent (агент SQL Server) ввиду того, что его задания запускаются в нужный момент времени именно этой службой. Следовательно, служба SQL Server Agent (агент SQL Server) должна выполняться непрерывно. Службу SQL Agent Service (агент SQL Server) можно настроить через интерфейс SQL Server Configuration Management (Диспетчер конфигурации SQL Server). Настройте эту службу на автоматический запуск и запускайте при необходимости при помощи следующих действий. Настраиваем автоматический запуск службы агент SQL Server
Используем мастер планов обслуживания
Планы обслуживания базы данных можно изменять через интерфейс SQL Server Management Studio. Для этого просто перейдите в Object Explorer (Обозревателе объектов) к папке Maintenance Plan (Планы обслуживания), которая вложена в папку Management (Управление), и щелкните правой кнопкой мыши на плане, который нужно изменить. Из этого меню можно открыть также журнал. Заключение В данной лекции мы познакомились с различными типами резервного копирования, которые позволяет выполнить SQL Server 2005. Комбинируя эти различные типы и создавая расписания, можно настроить такую стратегию резервного копирования, которая будет отвечать требованиям производительности системы и целостности данных. Эти стратегии варьируются от простой модели, которая использует только полные резервные копии базы данных, до полной модели, использующей резервные копии журнала транзакций, что обеспечивает набор функций, позволяющих восстановить данные вплоть до момента воздействия повреждающих факторов. Не забывайте, что стратегию резервного копирования следует тщательно спланировать, реализовать и протестировать для каждой имеющейся базы данных. Не ждите, пока произойдет реальное повреждение ваших данных, протестируйте стратегию заранее. Краткий справочник по 4-5 лекциям
|