Как подготовить зеркальную базу данных для зеркального отображения (Transact-SQL)

Изменения: 17 ноября 2008 г.

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

Если зеркальное отображение было удалено, а зеркальная база данных остается в состоянии RECOVERING, то зеркальное отображение можно запустить повторно. Однако, во-первых, необходимо создать хотя бы одну резервную копию журналов основной базы данных. Во-вторых, в зеркальной безе данных следует восстановить с параметром WITH NORECOVERY все резервные копии журналов, созданные в основной базе данных с момента удаления зеркальной базы данных.

ms189047.note(ru-ru,SQL.90).gifПримечание.
Нельзя зеркально отображать системные базы данных master, msdb, temp и model.

Процедура

Создание базы данных для зеркального отображения базы данных

  1. Убедитесь, что компонент Microsoft SQL Server 2005 установлен как в основном, так и в зеркальном экземпляре сервера.

  2. Проверьте, что базы данных используют полную модель восстановления.

    Дополнительные сведения см. в разделах Как просмотреть или изменить модель восстановления базы данных (среда SQL Server Management Studio), sys.databases (Transact-SQL) и ALTER DATABASE (Transact-SQL).

  3. Сделайте полную резервную копию основной базы данных.

    Дополнительные сведения см. в разделе Как создать резервную копию базы данных (среда SQL Server Management Studio) или Как создать полную резервную копию базы данных (Transact-SQL).

    ms189047.note(ru-ru,SQL.90).gifПримечание.
    Кроме того, можно восстановить существующую резервную копию базы данных и при необходимости разностную резервную копию, за которой восстанавливаются все последующие резервные копии журналов.
  4. Убедитесь, что в системе, где предполагается создать зеркальную базу данных, есть жесткий диск, на котором достаточно свободного места.

  5. Если резервная копия находится не на сетевом диске, доступном для обеих систем, скопируйте резервную копию базы данных в эту систему.

  6. Для создания зеркальной базы данных восстановите на экземпляре зеркального сервера полную резервную копию базы данных. Инструкция RESTORE DATABASE имя_базы_данных должна содержать предложение WITH NORECOVERY, где имя_базы_данных — имя зеркальной базы данных.

    ms189047.note(ru-ru,SQL.90).gifПримечание.
    При восстановлении файловой группы базы данных по файловой группе следует восстановить базу данных целиком.

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

    Если размещение файлов различается, например если основная база данных расположена на диске «F:», а на зеркальной системе нет диска «F:», то в инструкцию RESTORE необходимо включить параметр MOVE.

    ms189047.note(ru-ru,SQL.90).gifВажно!
    Чтобы добавить файл во время сеанса зеркального отображения без влияния на сеанс, необходимо существование пути к файлу на обоих серверах. Таким образом, после перемещения файлов базы данных при создании зеркальной базы данных последующее добавление файлов может привести к ошибкам в зеркальной базе данных или приостановке зеркального отображения. Дополнительные сведения об обработке ошибок операции создания файла см. в разделе Устранение неполадок при установке зеркального отображения базы данных.

    Дополнительные сведения см. в разделах RESTORE (Transact-SQL) и Аргументы инструкции RESTORE (Transact-SQL).

  7. Обычно в основной базе данных необходимо создать хотя бы одну резервную копию журналов, скопировать ее на зеркальный сервер и восстановить ее в зеркальной базе данных (с параметром WITH NORECOVERY). Однако резервная копия журналов может не понадобиться, если база данных только что создана и в ней еще не было создано ни одной резервной копии журналов либо если модель восстановления только что изменена с SIMPLE на FULL.

    Применить резервную копию журналов к зеркальной базе данных можно с помощью SQL Server или Transact-SQL.

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

ms189047.security(ru-ru,SQL.90).gifПримечание безопасности.
Параметр TRUSTWORTHY устанавливается в значение OFF каждый раз при создании резервной копии базы данных. Таким образом, в новой зеркальной базе данных он всегда имеет значение OFF. Если после перехода на другой ресурс необходимо, чтобы база данных снова стала надежной, следует выполнить дополнительные действия. Дополнительные сведения см. в разделе Как настроить зеркальную базу данных на использование свойства TRUSTWORTHY.
ms189047.note(ru-ru,SQL.90).gifВажно!
Если зеркальное отображение базы данных остановлено, то перед его повторным запуском к зеркальной базе данных необходимо применить все последующие резервные копии журналов, полученные с основной базы данных.

Пример

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

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

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

    USE master;
    GO
    ALTER DATABASE AdventureWorks 
    SET RECOVERY FULL;
    GO
    
  2. После изменения модели восстановления с SIMPLE на FULL создайте полную резервную копию, с помощью которой затем можно будет создать зеркальную базу данных. Так как модель восстановления только что была изменена, указывается параметр WITH FORMAT для создания нового набора носителей. Это полезно для отделения резервных копий при полной модели восстановления от резервных копий, сделанных при простой модели восстановления. В данном примере файл резервной копии (C:\AdventureWorks.bak) создается на том же диске, что и база данных.

    ms189047.note(ru-ru,SQL.90).gifПримечание.
    Для производственной базы данных необходимо всегда делать резервные копии на разные устройства.

    На экземпляре основного сервера (PARTNERHOST1) создайте полную резервную копию основной базы данных следующим образом:

    BACKUP DATABASE AdventureWorks 
        TO DISK = 'C:\AdventureWorks.bak' 
        WITH FORMAT
    GO
    
  3. Создайте полную резервную копию на зеркальном сервере.

  4. Восстановите ее на экземпляр зеркального сервера с параметром WITH NORECOVERY. Команда восстановления зависит от того, идентичны ли пути основной и зеркальной баз данных.

    • Если пути идентичны:
      на экземпляре зеркального сервера (PARTNERHOST5) выполните восстановление из полной резервной копии следующим образом:

      RESTORE DATABASE AdventureWorks 
          FROM DISK = 'C:\AdventureWorks.bak' 
          WITH NORECOVERY
      GO
      
    • Если пути отличаются:
      Если путь зеркальной базы данных отличается от пути основной базы данных (например, отличаются имена дисков), то при создании зеркальной базы данных в операцию восстановления нужно будет добавить предложение MOVE.

      ms189047.note(ru-ru,SQL.90).gifВажно!
      Если отличаются пути основной и зеркальной баз данных, то добавлять файлы нельзя. Это происходит потому, что при появлении в журнале записи об операции добавления файла экземпляр зеркального сервера пытается поместить новый файл в местоположение, указанное для основной базы данных.

      Например, следующая команда восстанавливает резервную копию основной базы данных, которая находится в каталоге «C:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\», в другое расположение, «D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\», где должна находиться зеркальная база данных.

      RESTORE DATABASE AdventureWorks
         FROM DISK='C:\AdventureWorks.bak'
         WITH NORECOVERY, 
            MOVE 'AdventureWorks_Data' TO 
               'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks_Data.mdf', 
            MOVE 'AdventureWorks_Log' TO
               'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks_Log.ldf';
      GO
      
  5. После создания полной резервной копии обязательно создается резервная копия журналов для основной базы данных. В следующем примере с помощью инструкции Transact-SQL создается резервная копия журналов для того же файла, который использовался в предыдущей полной резервной копии.

    BACKUP LOG AdventureWorks 
        TO DISK = 'C:\AdventureWorks.bak' 
    GO
    
  6. Перед тем как приступать к зеркальному отображению, необходимо применить требуемую резервную копию журналов (и все последующие резервные копии журналов).
    Например, следующая инструкция Transact-SQL восстанавливает первый журнал из файла C:\AdventureWorks.bak.

    RESTORE LOG AdventureWorks 
        FROM DISK = 'C:\AdventureWorks.bak' 
        WITH FILE=1, NORECOVERY
    GO
    
  7. Если перед запуском зеркального отображения создавались дополнительные резервные копии журналов, то необходимо последовательно восстановить их на зеркальном сервере с параметром WITH NORECOVERY.
    Например, следующая инструкция Transact-SQL восстанавливает два дополнительных журнала из файла C:\AdventureWorks.bak.

    RESTORE LOG AdventureWorks 
        FROM DISK = 'C:\AdventureWorks.bak' 
        WITH FILE=2, NORECOVERY
    GO
    RESTORE LOG AdventureWorks 
        FROM DISK = 'C:\AdventureWorks.bak' 
        WITH FILE=3, NORECOVERY
    GO
    

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

См. также

Задачи

Как настроить сеанс зеркального отображения базы данных (среда SQL Server Management Studio)
Как создать сеанс зеркального отображения базы данных с использованием проверки подлинности Windows (Transact-SQL)

Основные понятия

Подготовка зеркальной базы данных к зеркальному отображению
Защита транспорта зеркального отображения базы данных
Зеркальное отображение баз данных и полнотекстовые каталоги
Обзор зеркального отображения базы данных
Репликация и зеркальное отображение базы данных

Другие ресурсы

BACKUP (Transact-SQL)
Аргументы инструкции RESTORE (Transact-SQL)
RESTORE (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005