SQL Server 2000

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

Разбить на страницы
Показывать лекцию целиком

В лекции 32 вы узнали о том, насколько важно выполнять резервное копирование вашей системы и как создавать резервные копии. В этой лекции мы продолжим тему защиты базы данных, исходя из материала предыдущей лекции. Вы узнаете, как восстанавливать базу данных, как планировать восстановление на случай аварии; мы рассмотрим более подробно, как происходит воспроизведение базы данных. Как вы увидите, тип выполненного резервного копирования влияет на то, как выполняется восстановление. Кроме изучения методов восстановления и воспроизведения базы данных, вы ознакомитесь с понятием доставки журнала транзакций (log shipping). Это новое средство, введенное в Microsoft SQL Server 2000, позволяющее создавать резервную копию вашей базы данных на другом сервере путем использования журнала транзакций исходного сервера.

Примечание. Некоторые администраторы баз данных (DBA) называют процесс восстановления (restoring) и последующее воспроизведение (recovering) базы данных просто "воспроизведением базы данных". Однако это совершенно различные процедуры. В лекции 32 разъясняются отличия между восстановлением базы данных из резервной копии и процессом воспроизведения SQL Server. В любом случае главной целью выполнения операций резервного копирования, восстановления и воспроизведения является возврат базы данных к состоянию, в котором она находилась на момент отказа системы.

Методы восстановления

Как уже говорилось, тип выполненного резервного копирования влияет на характер операции восстановления. В этом разделе вы узнаете, как выполнять восстановление из полной резервной копии, из разностной резервной копии, а также из резервных копий журнала транзакций.

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

Восстановление из полной резервной копии – это довольно простой процесс: вы просто восстанавливаете файлы резервной копии с помощью SQL Server Enterprise Manager или операторов Transact-SQL (T-SQL). Инструкции по восстановлению данных с помощью этих двух методов приводятся далее в данной лекции. Если вы планируете восстановление из разностных резервных копий после восстановления из полной резервной копии, то не забывайте создавать резервную копию текущего журнала транзакций (см. раздел "Восстановление из резервных копий журнала транзакций" далее в этой лекции), и задавать параметр NORECOVERY, когда выполняете восстановление.

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

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

Для восстановления из разностной резервной копии вы должны сначала выполнить восстановление из полной резервной копии и затем – из всех разностных резервных копий, созданных вслед за последней полной резервной копией. Напомним, что разностная резервная копия используется для резервного копирования информации, которая изменилась с момента последнего полного или разностного резервного копирования. Не забудьте использовать параметр NORECOVERY (за исключением случая восстановления самого последнего файла резервной копии, для которого вы будете использовать параметр RECOVERY ). Если у вас выполняется восстановление из резервных копий журналов транзакций в дополнение к разностной резервной копии, то вы должны также выполнить резервное копирование текущего журнала и применять все измененные файлы журнала, как это описано в следующем разделе.

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

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

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

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

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

    Если ваша база данных работает в режиме воспроизведения BULK_LOGGED, то вы должны повторно выполнить любые минимально протоколированные в журнале операции, если это восстановление необходимо. К этим операциям относятся SELECT...INTO, BULK COPY, BCP и некоторые операции CREATE INDEX, а также текстовые операции, о которых говорилось в предыдущей лекции. Если это налагает на вас непосильную нагрузку, не задавайте для вашей базы данных режим BULK_LOGGED.

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

    Как уже говорилось, вы можете выполнять операцию восстановления с помощью Enterprise Manager или операторов T-SQL – оба метода дают одинаковые результаты. В отличие от операций резервного копирования, в SQL Server нет мастера для операций восстановления.

    Использование Enterprise Manager для операции восстановления

    Для операции восстановления с помощью Enterprise Manager выполните следующие шаги.

  • В окне Enterprise Manager щелкните правой кнопкой мыши на имени базы данных, которую хотите восстановить, укажите в контекстном меню пункт All Tasks (Все задачи) и затем выберите команду Restore database (Восстановить базу данных), чтобы появилось диалоговое окно Restore database (рис 33.1(рис 33.1) Вкладка General диалогового окна Restore database (Восстановление базы данных)
  • Вверху вкладки General (Общие) находится раскрывающийся список Restore as database (Восстановить как базу данных), где вы можете указать, в какой базе данных будет восстановлена резервная копия. На рис. 33.1 показано, что выбрана база данных Example.

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

  • Далее укажите тип операции восстановления: Database (База данных), Filegroups or files (Группа файлов или файл) или From device (Из устройства). Вариант Database позволяет задать базу данных для восстановления. Вариант Filegroups or files позволяет задать для восстановления группы файлов или файлы. Параметр From device позволяет указать устройство, с которого будет выполняться восстановление, а тип восстановления будет определяться содержимым этого устройства. На рис. 33.1 выбран вариант Database.
  • В секции Parameters (Параметры) вы можете задать, нужно ли показывать резервные копии других баз данных (для восстановления с резервной копии другой базы данных), указать, какая резервная копия должна восстанавливаться первой (если имеется набор из нескольких резервных копий), и задать восстановление данных к состоянию, в котором они находились на определенный момент времени (флажок Point-in-time restore). Например, если вы случайно удалили таблицу в 12:01, то вам нужно использовать флажок Point-in-time restore для восстановления базы данных к состоянию, в котором она находилась на 12:00, т.е. непосредственно перед удалением таблицы. Поскольку у вас имеется список всех резервных копий, то вы можете выбрать для использования одну из них. От вас не требуется, чтобы вы выполняли восстановление только с последней резервной копии.

    В диалоговом окне Restore database вы можете также выделить набор резервного копирования и затем просмотреть его свойства, щелкнув на кнопке Properties (Свойства). Пример окна Backup Set Properties (Свойства набора резервного копирования) показан на рис 33.2(рис 33.2) Окно Backup Set Properties (Свойства набора резервного копирования)

  • Щелкните на кнопке OK, чтобы вернуться во вкладку General диалогового окна Restore database, и щелкните на кнопке выбора Filegroups or files, чтобы окно имело несколько иной вид (рис 33.3(рис 33.3) Вкладка General диалогового окна Restore database после щелчка на кнопке Filegroups or files
  • Теперь щелкните на кнопке From device (рис. 33.4). Как уже говорилось, этот вариант используется, чтобы выбрать определенное устройство резервного копирования, с которого будет выполняться восстановление. Выбрав этот вариант, вы должны вручную выбрать набор резервного копирования и затем указать, что будет восстанавливаться: полная копия (Database – complete), разностная копия (Database – differential), журнал транзакций (Transaction log) или файл или группа файлов (File or filegroup). Вы можете также указать, чтобы SQL Server прочитал информацию набора резервного копирования и сохранил ее вместе с другой информацией журнала резервного копирования в базе данных msdb. Затем вы сможете использовать информацию об этой резервной копии, если захотите выполнить восстановление базы данных.
  • Щелкните на вкладке Options (Параметры) диалогового окна Restore database (рис 33.5(рис 33.5) Вкладка General диалогового окна Restore database после щелчка на кнопке выбора From device(рис 33.4) Вкладка Options диалогового окна Restore databaseОстальные параметры (кнопки выбора) позволяют вам указывать, в каком состоянии следует оставить базу данных по завершении восстановления.
  • Leave database operational. No additional transaction logs can be restored (Оставить базу данных в рабочем состоянии. Восстановление дополнительных журналов транзакций невозможно). Этот вариант не допускает никакого дополнительного восстановления с разностных резервных копий или резервных копий журнала транзакций. При этом для восстановления фактически устанавливается флаг RECOVERY. При выборе этого варианта вы не можете восстанавливать резервные копии журнала транзакций.
  • Leave database nonoperational but able to restore additional transaction logs (Оставить базу данных в нерабочем состоянии, но с возможностью восстановления дополнительных журналов транзакций). При этом варианте для восстановления устанавливается флаг NORECOVERY. При установке этого флага вы можете запускать дальнейшее восстановление с разностных резервных копий или резервных копий журнала транзакций. База данных находится в нерабочем состоянии, а это означает, что пользователи не имеют доступа к этой базе данных, пока вы не закончите все восстановление.
  • Leave database read-only and able to restore additional transaction logs (Оставить базу данных доступной только по чтению и с возможностью восстановления дополнительных журналов транзакций). Этот вариант также указывает установку флага NORECOVERY для восстановления, и вы можете выполнять восстановление с разностных резервных копий или резервных копий журнала транзакций. В отличие от предыдущего варианта эта кнопка выбора позволяет пользователям осуществлять доступ к базе данных по чтению с одновременным выполнением операции восстановления.
  • По окончании установки этих параметров щелкните на кнопке OK, чтобы начать операцию восстановления. Вы будете получать информацию о ходе операции восстановления в окне сообщения, содержащем строку состояния (рис 33.6(рис 33.6) Окно с информацией о ходе восстановления Restore Progress
  • Использование T-SQL для выполнения операции восстановления

    Оператор T-SQL RESTORE действует аналогично оператору BACKUP (см.лекцию 32). Подобно оператору BACKUP, сначала оператор RESTORE относительно труден для использования, но некоторые DBA предпочитают включать свои административные процедуры в сценарии SQL для многократного запуска. И, подобно оператору BACKUP, оператор RESTORE предоставляет несколько больше возможностей, чем использование Enterprise Manager.

    В этом разделе мы рассмотрим синтаксис оператора RESTORE и различные параметры этого оператора. Оператор RESTORE имеет две следующие формы.

  • RESTORE DATABASE. Восстановление всей базы данных либо файла или группы файлов
  • RESTORE LOG. Восстановление журнала транзакций
  • Как видите, выбор оператора зависит от типа выполняемой вами операции восстановления. Поскольку большинство параметров этих операторов совпадает, мы будет рассматривать все параметры для обоих типов восстановления (база данных и журнал) в одном списке далее.

    Оператор RESTORE

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

    RESTORE DATABASE имя_базы_данных
    [ FROM устройство_резервного_копирования ]
    [ WITH необязательные параметры ]

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

    Оператор восстановления файла или группы файлов имеет следующий синтаксис:

    RESTORE DATABASE имя_базы_данных
    [FILE = имя_файла ]
    [FILEGROUP = имя_группы_файлов ]
    [ FROM устройство_резервного_копирования ]
    [ WITH необязательные параметры ]

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

    Оператор RESTORE для восстановления журнала транзакций имеет следующий синтаксис:

    RESTORE LOG имя_базы_данных
    [ FROM устройство_резервного_копирования ]
    [ WITH необязательные параметры ]

    Во всех этих операторах имя_базы_данных представляет базу данных, для которой будет выполнено восстановление. Устройство_резервного_копирования – это имя логического устройства резервного копирования или имя физического устройства. Если указано физическое устройство, то имени устройства должен предшествовать тип устройства, т.е. DISK =, TAPE = или PIPE =. Вы можете задать одно или несколько устройств. (Имена нескольких устройств разделяются запятыми.)

    Примечание. Если вы не указываете предложение FROM, то восстановление не происходит, но все же происходит воспроизведение (если не задан параметр NORECOVERY ). Этот метод можно использовать для установки базы данных в режим воспроизведения без восстановления каких-либо дополнительных данных. Например, вы можете выполнить несколько операций восстановления из разностных резервных копий и затем запустить операцию RESTORE без предложения FROM, чтобы задать для базы данных режим воспроизведения, запустив тем самым процесс воспроизведения.

    Необязательные параметры

    В табл. 33.1 приводится список дополнительных параметров, которые можно использовать в оператореRESTORE. Как вы увидите, эти параметры обеспечивают высокий уровень гибкости при выполнении операций восстановления. (Один из параметров доступен только для восстановления журнала транзакций, что отмечено в описании.)

    Необязательные параметры оператора RESTORE
    Параметр Описание
    RESTRICTED_USER Задает ограничение доступа к вновь восстановленной базе данных, чтобы разрешать доступ только ролям db_owner, dbcreater и sysadmin
    FILE = номер_файла Указывает используемый набор резервной копии, если носитель содержит более одного набора. Например, если задать значение 2, то будет использоваться второй набор резервной копии на данном носителе
    PASSWORD = пароль Указывает пароль для набора сохранения
    MEDIANAME = имя_носителя Указывает имя носителя
    MEDIAPASSWORD = пароль Указывает пароль, который был присвоен этому набору носителей
    MOVE 'имя_логического_файла' TO 'имя_файла_ОС' Изменяет местоположение восстанавливаемого файла, например: MOVE 'Northwind' TO 'D:\data\Northwind.mdf'. Вы можете использовать этот параметр, если выполняете восстановление на новом диске, поскольку старый диск непригоден
    NORECOVERY | RECOVERY |STANDBY = файл_отката Параметр NORECOVERY указывает, что воспроизведение транзакций (откат или повторное исполнение) не будет выполняться после восстановления. Использование этого параметра необходимо, если вы будете продолжать восстановление с других резервных копий (разностных или журнала транзакций). Используемый по умолчанию параметр RECOVERY указывает, что будет выполнена операция воспроизведения, причем будет выполнен откат всех нефиксированных изменений. Параметр STANDBY указывает, что на случай отмены операции воспроизведения будет создан файл отката
    KEEP_REPLICATION Указывает, что будут сохранены параметры репликации, если база данных восстанавливается на издателе
    NOUNLOAD | UNLOAD Параметр NOUNLOAD указывает, что после операции восстановления носитель не будет выгружаться из устройства (например, лента с резервной копией не будет перемотана в начало или извлечена). Параметр UNLOAD (принятый по умолчанию) указывает, что по окончании операции восстановления носитель будет выгружен
    REPLACE Указывает, что SQL Server будет восстанавливать файлы данных, даже если эти файлы уже существуют. Существующие файлы данных будут удалены и записаны снова. Если вы не задали параметр REPLACE, то SQL Server проверяет, существует ли уже база данных, которую вы указали. Если она существует, то операция восстановления не выполняется. Эта мера предосторожности помогает избежать непреднамеренного восстановления поверх существующей базы данных
    RESTART Указывает, что SQL Server должен перезапускать операцию восстановления, если она была прервана
    STATS [ = процент ] Указывает вывод сообщения после выполнения определенного процента операции восстановления. Его полезно использовать, если вы хотите следить за ходом выполнения операций
    PARTIAL Указывает, что нужно выполнить частичное восстановление
    STOPAT = дата_время Указывает, что базу данных следует восстановить (только восстановление журнала к состоянию, в котором она находилась на дату, транзакций) указанную значением дата_время
    STOPATMARK = 'метка' Указывает, что операция восстановления выполняется, пока не встретится указанная метка
    STOPBEFOREMARK = 'метка' Указывает, что операция восстановления заканчивается непосредственно перед указанной меткой
    Примечание. Именованные транзакции – новая возможность SQL Server 2000. Эти именованные транзакции, создаваемые с помощью оператора BEGIN TRANSACTION ... WITH MARK имя_метки, позволяют вам использовать параметры STOPATMARK и STOPBEFOREMARK оператора RESTORE. Практические советы.

    Использование оператора RESTORE

    В этой врезке мы рассмотрим несколько примеров использования оператора T-SQL RESTORE.

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

    RESTORE DATABASE Example
    FROM Backup_Dev_1, Backup_Dev_2 
    WITH 
    NORECOVERY, 
    STATS = 5 
    GO

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

    RESTORE LOG Example
    FROM Backup_Dev_3, Backup_Dev_4
    WITH
    NORECOVERY,
    STATS = 5,
    UNLOAD
    GO

    На экран будет выводиться процент выполнения операции, а также результаты восстановления. Будет указано количество восстановленных страниц, сколько времени длится восстановление и какова скорость (Мб/с).

    Вы можете также восстановить эту базу данных с помощью следующего оператора:

    RESTORE LOG Example
    WITH RECOVERY 
    GO

    Вы снова увидите статистику, относящуюся к операции восстановления.

    Планирование воспроизведения на случай аварии

    Для увеличения времени работоспособности вашей системы недостаточно использовать кластеризацию ваших серверов (см. лекцию 12) или использовать RAID (см. лекцию 5) – вы должны также планировать воспроизведение на случай аварии до того, как она наступила. Вам необходимо знать, как выполняется качественное резервное копирование и восстановление, когда они требуются, но вы должны быть также готовы к воссозданию вашей системы с самого начала, если возникнет такая необходимость. Эта подготовка означает документирование и планирование. Кроме того, возможно, вам потребуется для обеспечения достаточного уровня восстанавливаемости использовать новое средство SQL Server 2000, которое называется доставкой журнала транзакций (log shipping). Это средство позволяет применять журналы транзакций основной системы к резервным системам.

    Как DBA вы должны разработать план обеспечения максимального времени работоспособности вашей системы. Этот план должен включать следующие составляющие.

  • Документирование текущей конфигурации.
  • Создание отказоустойчивой среды.
  • Подготовка к немедленному восстановлению.
  • Документирование плана воспроизведения базы данных.
  • Все эти шаги предусматривают планирование и/или создание документации. Часто бывает так, что план воспроизведения не документируется, и только разработчик плана способен выполнить его, что может иметь катастрофические последствия, если этот человек отсутствует.

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

    Документирование текущей конфигурации

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

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

  • Конфигурация оборудования. Включите типы и количество элементов оборудования, конфигурацию матриц RAID и другие подробности конфигурации.
  • Инсталлированные программные продукты. Включайте полную информацию обо всем программном обеспечении, инсталлированном на данном сервере.
  • Создание отказоустойчивой среды

    Как вы уже видели в лекции 5, использование отказоустойчивых томов RAID-матриц значительно снижает вероятность отказа системы. Диски являются механическими компонентами и, как таковые, подвержены износу. Использование отказоустойчивого тома, возможно, избавит вас от необходимости реинсталляции операционной системы и SQL Server и восстановления системы с резервных копий, что может оказаться дорогостоящим процессом, отнимающим много времени (дорогостоящим в смысле трудозатрат, а также потерь дохода, связанных с выходом системы из строя).

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

    Подготовка к немедленному восстановлению

    Будьте готовы к немедленному восстановлению базы данных. Резервные копии следует хранить вне рабочего места, чтобы сохранить их от катастроф, таких как пожар или затопление, но вы должны также держать под рукой дубликаты последних резервных копий, поскольку вам не всегда удастся быстро получить резервные копии, хранящиеся вне рабочего места. Использование промежуточной секции резервного копирования является распространенным способом хранения последних резервных копий по месту, а также повышения производительности резервного копирования и восстановления. Промежуточная секция резервного копирования находится в вашей сети и состоит из дисков, на которых сохраняются последние резервные копии баз данных и журналов транзакций. При необходимости восстановления вам не нужно использовать ленты, доставляя их из хранилища, находящегося вне рабочего места, – вы можете немедленно начать восстановление. Этот метод полезно использовать, если вам требуется немедленное восстановление, но он может оказаться достаточно дорогостоящим, поскольку вы должны выделять дополнительные ресурсы оборудования для хранения резервных копий. Вы должны оценить ваш бюджет и ваши потребности, чтобы определить, насколько осуществимо использование промежуточной секции резервного копирования в ваших условиях.

    Документирование плана восстановления базы данных после аварии

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

    Доставка журнала (Log Shipping)

    Средство доставки журнала (Log Shipping) SQL Server 2000 позволяет создать резервную систему и поддерживать ее на уровне текущего состояния базы данных путем применения журналов транзакций к этой резервной системе. Резервная система поддерживается в постоянном режиме воспроизведения с непрерывным применением журналов транзакций к этой системе. Хотя эта система находится в режиме воспроизведения, запросы по чтению все же допускаются, что позволяет вам использовать резервную базу данных для задач отчетности.

    В случае катастрофического отказа на основном сервере резервный сервер можно быстро и легко преобразовать в новый основной сервер. Это средство уже использовалось многими при работе с SQL Server 7, но теперь оно официально поддерживается фирмой Microsoft с добавлением средств упрощения работы. К этим средствам относятся создание и поддержка резервных систем с помощью мастера плана обслуживания базы данных Database Maintenance Plan Wizard и агента SQL Server Agent.

    Заключение

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

    Страницы:

    В лекции 32 вы узнали о том, насколько важно выполнять резервное копирование вашей системы и как создавать резервные копии. В этой лекции мы продолжим тему защиты базы данных, исходя из материала предыдущей лекции. Вы узнаете, как восстанавливать базу данных, как планировать восстановление на случай аварии; мы рассмотрим более подробно, как происходит воспроизведение базы данных. Как вы увидите, тип выполненного резервного копирования влияет на то, как выполняется восстановление. Кроме изучения методов восстановления и воспроизведения базы данных, вы ознакомитесь с понятием доставки журнала транзакций (log shipping). Это новое средство, введенное в Microsoft SQL Server 2000, позволяющее создавать резервную копию вашей базы данных на другом сервере путем использования журнала транзакций исходного сервера.

    Примечание. Некоторые администраторы баз данных (DBA) называют процесс восстановления (restoring) и последующее воспроизведение (recovering) базы данных просто "воспроизведением базы данных". Однако это совершенно различные процедуры. В лекции 32 разъясняются отличия между восстановлением базы данных из резервной копии и процессом воспроизведения SQL Server. В любом случае главной целью выполнения операций резервного копирования, восстановления и воспроизведения является возврат базы данных к состоянию, в котором она находилась на момент отказа системы.

    Методы восстановления

    Как уже говорилось, тип выполненного резервного копирования влияет на характер операции восстановления. В этом разделе вы узнаете, как выполнять восстановление из полной резервной копии, из разностной резервной копии, а также из резервных копий журнала транзакций.

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

    Восстановление из полной резервной копии – это довольно простой процесс: вы просто восстанавливаете файлы резервной копии с помощью SQL Server Enterprise Manager или операторов Transact-SQL (T-SQL). Инструкции по восстановлению данных с помощью этих двух методов приводятся далее в данной лекции. Если вы планируете восстановление из разностных резервных копий после восстановления из полной резервной копии, то не забывайте создавать резервную копию текущего журнала транзакций (см. раздел "Восстановление из резервных копий журнала транзакций" далее в этой лекции), и задавать параметр NORECOVERY, когда выполняете восстановление.

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

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

    Для восстановления из разностной резервной копии вы должны сначала выполнить восстановление из полной резервной копии и затем – из всех разностных резервных копий, созданных вслед за последней полной резервной копией. Напомним, что разностная резервная копия используется для резервного копирования информации, которая изменилась с момента последнего полного или разностного резервного копирования. Не забудьте использовать параметр NORECOVERY (за исключением случая восстановления самого последнего файла резервной копии, для которого вы будете использовать параметр RECOVERY ). Если у вас выполняется восстановление из резервных копий журналов транзакций в дополнение к разностной резервной копии, то вы должны также выполнить резервное копирование текущего журнала и применять все измененные файлы журнала, как это описано в следующем разделе.

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

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

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

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

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

    Если ваша база данных работает в режиме воспроизведения BULK_LOGGED, то вы должны повторно выполнить любые минимально протоколированные в журнале операции, если это восстановление необходимо. К этим операциям относятся SELECT...INTO, BULK COPY, BCP и некоторые операции CREATE INDEX, а также текстовые операции, о которых говорилось в предыдущей лекции. Если это налагает на вас непосильную нагрузку, не задавайте для вашей базы данных режим BULK_LOGGED.

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

    Как уже говорилось, вы можете выполнять операцию восстановления с помощью Enterprise Manager или операторов T-SQL – оба метода дают одинаковые результаты. В отличие от операций резервного копирования, в SQL Server нет мастера для операций восстановления.

    Использование Enterprise Manager для операции восстановления

    Для операции восстановления с помощью Enterprise Manager выполните следующие шаги.

  • В окне Enterprise Manager щелкните правой кнопкой мыши на имени базы данных, которую хотите восстановить, укажите в контекстном меню пункт All Tasks (Все задачи) и затем выберите команду Restore database (Восстановить базу данных), чтобы появилось диалоговое окно Restore database (рис 33.1(рис 33.1) Вкладка General диалогового окна Restore database (Восстановление базы данных)
  • Вверху вкладки General (Общие) находится раскрывающийся список Restore as database (Восстановить как базу данных), где вы можете указать, в какой базе данных будет восстановлена резервная копия. На рис. 33.1 показано, что выбрана база данных Example.

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

  • Далее укажите тип операции восстановления: Database (База данных), Filegroups or files (Группа файлов или файл) или From device (Из устройства). Вариант Database позволяет задать базу данных для восстановления. Вариант Filegroups or files позволяет задать для восстановления группы файлов или файлы. Параметр From device позволяет указать устройство, с которого будет выполняться восстановление, а тип восстановления будет определяться содержимым этого устройства. На рис. 33.1 выбран вариант Database.
  • В секции Parameters (Параметры) вы можете задать, нужно ли показывать резервные копии других баз данных (для восстановления с резервной копии другой базы данных), указать, какая резервная копия должна восстанавливаться первой (если имеется набор из нескольких резервных копий), и задать восстановление данных к состоянию, в котором они находились на определенный момент времени (флажок Point-in-time restore). Например, если вы случайно удалили таблицу в 12:01, то вам нужно использовать флажок Point-in-time restore для восстановления базы данных к состоянию, в котором она находилась на 12:00, т.е. непосредственно перед удалением таблицы. Поскольку у вас имеется список всех резервных копий, то вы можете выбрать для использования одну из них. От вас не требуется, чтобы вы выполняли восстановление только с последней резервной копии.

    В диалоговом окне Restore database вы можете также выделить набор резервного копирования и затем просмотреть его свойства, щелкнув на кнопке Properties (Свойства). Пример окна Backup Set Properties (Свойства набора резервного копирования) показан на рис 33.2(рис 33.2) Окно Backup Set Properties (Свойства набора резервного копирования)

  • Щелкните на кнопке OK, чтобы вернуться во вкладку General диалогового окна Restore database, и щелкните на кнопке выбора Filegroups or files, чтобы окно имело несколько иной вид (рис 33.3(рис 33.3) Вкладка General диалогового окна Restore database после щелчка на кнопке Filegroups or files
  • Теперь щелкните на кнопке From device (рис. 33.4). Как уже говорилось, этот вариант используется, чтобы выбрать определенное устройство резервного копирования, с которого будет выполняться восстановление. Выбрав этот вариант, вы должны вручную выбрать набор резервного копирования и затем указать, что будет восстанавливаться: полная копия (Database – complete), разностная копия (Database – differential), журнал транзакций (Transaction log) или файл или группа файлов (File or filegroup). Вы можете также указать, чтобы SQL Server прочитал информацию набора резервного копирования и сохранил ее вместе с другой информацией журнала резервного копирования в базе данных msdb. Затем вы сможете использовать информацию об этой резервной копии, если захотите выполнить восстановление базы данных.
  • Щелкните на вкладке Options (Параметры) диалогового окна Restore database (рис 33.5(рис 33.5) Вкладка General диалогового окна Restore database после щелчка на кнопке выбора From device(рис 33.4) Вкладка Options диалогового окна Restore databaseОстальные параметры (кнопки выбора) позволяют вам указывать, в каком состоянии следует оставить базу данных по завершении восстановления.
  • Leave database operational. No additional transaction logs can be restored (Оставить базу данных в рабочем состоянии. Восстановление дополнительных журналов транзакций невозможно). Этот вариант не допускает никакого дополнительного восстановления с разностных резервных копий или резервных копий журнала транзакций. При этом для восстановления фактически устанавливается флаг RECOVERY. При выборе этого варианта вы не можете восстанавливать резервные копии журнала транзакций.
  • Leave database nonoperational but able to restore additional transaction logs (Оставить базу данных в нерабочем состоянии, но с возможностью восстановления дополнительных журналов транзакций). При этом варианте для восстановления устанавливается флаг NORECOVERY. При установке этого флага вы можете запускать дальнейшее восстановление с разностных резервных копий или резервных копий журнала транзакций. База данных находится в нерабочем состоянии, а это означает, что пользователи не имеют доступа к этой базе данных, пока вы не закончите все восстановление.
  • Leave database read-only and able to restore additional transaction logs (Оставить базу данных доступной только по чтению и с возможностью восстановления дополнительных журналов транзакций). Этот вариант также указывает установку флага NORECOVERY для восстановления, и вы можете выполнять восстановление с разностных резервных копий или резервных копий журнала транзакций. В отличие от предыдущего варианта эта кнопка выбора позволяет пользователям осуществлять доступ к базе данных по чтению с одновременным выполнением операции восстановления.
  • По окончании установки этих параметров щелкните на кнопке OK, чтобы начать операцию восстановления. Вы будете получать информацию о ходе операции восстановления в окне сообщения, содержащем строку состояния (рис 33.6(рис 33.6) Окно с информацией о ходе восстановления Restore Progress
  • Использование T-SQL для выполнения операции восстановления

    Оператор T-SQL RESTORE действует аналогично оператору BACKUP (см.лекцию 32). Подобно оператору BACKUP, сначала оператор RESTORE относительно труден для использования, но некоторые DBA предпочитают включать свои административные процедуры в сценарии SQL для многократного запуска. И, подобно оператору BACKUP, оператор RESTORE предоставляет несколько больше возможностей, чем использование Enterprise Manager.

    В этом разделе мы рассмотрим синтаксис оператора RESTORE и различные параметры этого оператора. Оператор RESTORE имеет две следующие формы.

  • RESTORE DATABASE. Восстановление всей базы данных либо файла или группы файлов
  • RESTORE LOG. Восстановление журнала транзакций
  • Как видите, выбор оператора зависит от типа выполняемой вами операции восстановления. Поскольку большинство параметров этих операторов совпадает, мы будет рассматривать все параметры для обоих типов восстановления (база данных и журнал) в одном списке далее.

    Оператор RESTORE

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

    RESTORE DATABASE имя_базы_данных
    [ FROM устройство_резервного_копирования ]
    [ WITH необязательные параметры ]

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

    Оператор восстановления файла или группы файлов имеет следующий синтаксис:

    RESTORE DATABASE имя_базы_данных
    [FILE = имя_файла ]
    [FILEGROUP = имя_группы_файлов ]
    [ FROM устройство_резервного_копирования ]
    [ WITH необязательные параметры ]

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

    Оператор RESTORE для восстановления журнала транзакций имеет следующий синтаксис:

    RESTORE LOG имя_базы_данных
    [ FROM устройство_резервного_копирования ]
    [ WITH необязательные параметры ]

    Во всех этих операторах имя_базы_данных представляет базу данных, для которой будет выполнено восстановление. Устройство_резервного_копирования – это имя логического устройства резервного копирования или имя физического устройства. Если указано физическое устройство, то имени устройства должен предшествовать тип устройства, т.е. DISK =, TAPE = или PIPE =. Вы можете задать одно или несколько устройств. (Имена нескольких устройств разделяются запятыми.)

    Примечание. Если вы не указываете предложение FROM, то восстановление не происходит, но все же происходит воспроизведение (если не задан параметр NORECOVERY ). Этот метод можно использовать для установки базы данных в режим воспроизведения без восстановления каких-либо дополнительных данных. Например, вы можете выполнить несколько операций восстановления из разностных резервных копий и затем запустить операцию RESTORE без предложения FROM, чтобы задать для базы данных режим воспроизведения, запустив тем самым процесс воспроизведения.

    Необязательные параметры

    В табл. 33.1 приводится список дополнительных параметров, которые можно использовать в оператореRESTORE. Как вы увидите, эти параметры обеспечивают высокий уровень гибкости при выполнении операций восстановления. (Один из параметров доступен только для восстановления журнала транзакций, что отмечено в описании.)

    Необязательные параметры оператора RESTORE
    Параметр Описание
    RESTRICTED_USER Задает ограничение доступа к вновь восстановленной базе данных, чтобы разрешать доступ только ролям db_owner, dbcreater и sysadmin
    FILE = номер_файла Указывает используемый набор резервной копии, если носитель содержит более одного набора. Например, если задать значение 2, то будет использоваться второй набор резервной копии на данном носителе
    PASSWORD = пароль Указывает пароль для набора сохранения
    MEDIANAME = имя_носителя Указывает имя носителя
    MEDIAPASSWORD = пароль Указывает пароль, который был присвоен этому набору носителей
    MOVE 'имя_логического_файла' TO 'имя_файла_ОС' Изменяет местоположение восстанавливаемого файла, например: MOVE 'Northwind' TO 'D:\data\Northwind.mdf'. Вы можете использовать этот параметр, если выполняете восстановление на новом диске, поскольку старый диск непригоден
    NORECOVERY | RECOVERY |STANDBY = файл_отката Параметр NORECOVERY указывает, что воспроизведение транзакций (откат или повторное исполнение) не будет выполняться после восстановления. Использование этого параметра необходимо, если вы будете продолжать восстановление с других резервных копий (разностных или журнала транзакций). Используемый по умолчанию параметр RECOVERY указывает, что будет выполнена операция воспроизведения, причем будет выполнен откат всех нефиксированных изменений. Параметр STANDBY указывает, что на случай отмены операции воспроизведения будет создан файл отката
    KEEP_REPLICATION Указывает, что будут сохранены параметры репликации, если база данных восстанавливается на издателе
    NOUNLOAD | UNLOAD Параметр NOUNLOAD указывает, что после операции восстановления носитель не будет выгружаться из устройства (например, лента с резервной копией не будет перемотана в начало или извлечена). Параметр UNLOAD (принятый по умолчанию) указывает, что по окончании операции восстановления носитель будет выгружен
    REPLACE Указывает, что SQL Server будет восстанавливать файлы данных, даже если эти файлы уже существуют. Существующие файлы данных будут удалены и записаны снова. Если вы не задали параметр REPLACE, то SQL Server проверяет, существует ли уже база данных, которую вы указали. Если она существует, то операция восстановления не выполняется. Эта мера предосторожности помогает избежать непреднамеренного восстановления поверх существующей базы данных
    RESTART Указывает, что SQL Server должен перезапускать операцию восстановления, если она была прервана
    STATS [ = процент ] Указывает вывод сообщения после выполнения определенного процента операции восстановления. Его полезно использовать, если вы хотите следить за ходом выполнения операций
    PARTIAL Указывает, что нужно выполнить частичное восстановление
    STOPAT = дата_время Указывает, что базу данных следует восстановить (только восстановление журнала к состоянию, в котором она находилась на дату, транзакций) указанную значением дата_время
    STOPATMARK = 'метка' Указывает, что операция восстановления выполняется, пока не встретится указанная метка
    STOPBEFOREMARK = 'метка' Указывает, что операция восстановления заканчивается непосредственно перед указанной меткой
    Примечание. Именованные транзакции – новая возможность SQL Server 2000. Эти именованные транзакции, создаваемые с помощью оператора BEGIN TRANSACTION ... WITH MARK имя_метки, позволяют вам использовать параметры STOPATMARK и STOPBEFOREMARK оператора RESTORE. Практические советы.

    Использование оператора RESTORE

    В этой врезке мы рассмотрим несколько примеров использования оператора T-SQL RESTORE.

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

    RESTORE DATABASE Example
    FROM Backup_Dev_1, Backup_Dev_2 
    WITH 
    NORECOVERY, 
    STATS = 5 
    GO

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

    RESTORE LOG Example
    FROM Backup_Dev_3, Backup_Dev_4
    WITH
    NORECOVERY,
    STATS = 5,
    UNLOAD
    GO

    На экран будет выводиться процент выполнения операции, а также результаты восстановления. Будет указано количество восстановленных страниц, сколько времени длится восстановление и какова скорость (Мб/с).

    Вы можете также восстановить эту базу данных с помощью следующего оператора:

    RESTORE LOG Example
    WITH RECOVERY 
    GO

    Вы снова увидите статистику, относящуюся к операции восстановления.

    Планирование воспроизведения на случай аварии

    Для увеличения времени работоспособности вашей системы недостаточно использовать кластеризацию ваших серверов (см. лекцию 12) или использовать RAID (см. лекцию 5) – вы должны также планировать воспроизведение на случай аварии до того, как она наступила. Вам необходимо знать, как выполняется качественное резервное копирование и восстановление, когда они требуются, но вы должны быть также готовы к воссозданию вашей системы с самого начала, если возникнет такая необходимость. Эта подготовка означает документирование и планирование. Кроме того, возможно, вам потребуется для обеспечения достаточного уровня восстанавливаемости использовать новое средство SQL Server 2000, которое называется доставкой журнала транзакций (log shipping). Это средство позволяет применять журналы транзакций основной системы к резервным системам.

    Как DBA вы должны разработать план обеспечения максимального времени работоспособности вашей системы. Этот план должен включать следующие составляющие.

  • Документирование текущей конфигурации.
  • Создание отказоустойчивой среды.
  • Подготовка к немедленному восстановлению.
  • Документирование плана воспроизведения базы данных.
  • Все эти шаги предусматривают планирование и/или создание документации. Часто бывает так, что план воспроизведения не документируется, и только разработчик плана способен выполнить его, что может иметь катастрофические последствия, если этот человек отсутствует.

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

    Документирование текущей конфигурации

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

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

  • Конфигурация оборудования. Включите типы и количество элементов оборудования, конфигурацию матриц RAID и другие подробности конфигурации.
  • Инсталлированные программные продукты. Включайте полную информацию обо всем программном обеспечении, инсталлированном на данном сервере.
  • Создание отказоустойчивой среды

    Как вы уже видели в лекции 5, использование отказоустойчивых томов RAID-матриц значительно снижает вероятность отказа системы. Диски являются механическими компонентами и, как таковые, подвержены износу. Использование отказоустойчивого тома, возможно, избавит вас от необходимости реинсталляции операционной системы и SQL Server и восстановления системы с резервных копий, что может оказаться дорогостоящим процессом, отнимающим много времени (дорогостоящим в смысле трудозатрат, а также потерь дохода, связанных с выходом системы из строя).

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

    Подготовка к немедленному восстановлению

    Будьте готовы к немедленному восстановлению базы данных. Резервные копии следует хранить вне рабочего места, чтобы сохранить их от катастроф, таких как пожар или затопление, но вы должны также держать под рукой дубликаты последних резервных копий, поскольку вам не всегда удастся быстро получить резервные копии, хранящиеся вне рабочего места. Использование промежуточной секции резервного копирования является распространенным способом хранения последних резервных копий по месту, а также повышения производительности резервного копирования и восстановления. Промежуточная секция резервного копирования находится в вашей сети и состоит из дисков, на которых сохраняются последние резервные копии баз данных и журналов транзакций. При необходимости восстановления вам не нужно использовать ленты, доставляя их из хранилища, находящегося вне рабочего места, – вы можете немедленно начать восстановление. Этот метод полезно использовать, если вам требуется немедленное восстановление, но он может оказаться достаточно дорогостоящим, поскольку вы должны выделять дополнительные ресурсы оборудования для хранения резервных копий. Вы должны оценить ваш бюджет и ваши потребности, чтобы определить, насколько осуществимо использование промежуточной секции резервного копирования в ваших условиях.

    Документирование плана восстановления базы данных после аварии

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

    Доставка журнала (Log Shipping)

    Средство доставки журнала (Log Shipping) SQL Server 2000 позволяет создать резервную систему и поддерживать ее на уровне текущего состояния базы данных путем применения журналов транзакций к этой резервной системе. Резервная система поддерживается в постоянном режиме воспроизведения с непрерывным применением журналов транзакций к этой системе. Хотя эта система находится в режиме воспроизведения, запросы по чтению все же допускаются, что позволяет вам использовать резервную базу данных для задач отчетности.

    В случае катастрофического отказа на основном сервере резервный сервер можно быстро и легко преобразовать в новый основной сервер. Это средство уже использовалось многими при работе с SQL Server 7, но теперь оно официально поддерживается фирмой Microsoft с добавлением средств упрощения работы. К этим средствам относятся создание и поддержка резервных систем с помощью мастера плана обслуживания базы данных Database Maintenance Plan Wizard и агента SQL Server Agent.

    Заключение

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

    Вернуться к учебному плану