Подготовка зеркальной базы данных к зеркальному отображению (SQL Server)

Область применения: SQL Server (все поддерживаемые версии)

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

В этом разделе описана процедура подготовки зеркальной базы данных в SQL Server с помощью среды SQL Server Management Studio или Transact-SQL.

Перед началом

Требования

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

  • На основном сервере и на экземплярах зеркального сервера должен работать один и тот же выпуск SQL Server. Сведения о поддержке зеркального отображения базы данных в SQL Server см. в разделе Функции, поддерживаемые различными выпусками SQL Server 2017.

  • База данных должна использовать модель полного восстановления.

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

  • Имя зеркальной базы данных должно совпадать с именем основной базы данных.

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

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

Ограничения

  • Зеркальное отображение системных баз данных master, msdb, tempи model невозможно.

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

Рекомендации

  • Используйте либо самую последнюю полную копию базы данных, либо разностную резервную копию основной базы данных.

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

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

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

    Важно!

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

  • Если основная база данных содержит любые полнотекстовые каталоги, см. раздел Зеркальное отображение баз данных и полнотекстовые каталоги (SQL Server).

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

Безопасность

Параметр TRUSTWORTHY устанавливается в значение OFF каждый раз при создании резервной копии базы данных. Таким образом, в новой зеркальной базе данных он всегда имеет значение OFF. Если после отработки отказа необходимо, чтобы база данных снова стала надежной, следует выполнить дополнительные действия. Дополнительные сведения см. в разделе Настройка зеркальной базы данных на использование свойства TRUSTWORTHY (Transact-SQL).

Сведения о включении автоматической расшифровки главного ключа базы данных в зеркальной базе данных см. в статье Настройка зашифрованной зеркальной базы данных.

Разрешения

Владелец базы данных или системный администратор.

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

Если зеркальное отображение было удалено, а зеркальная база данных остается в состоянии RECOVERING, то зеркальное отображение можно запустить повторно.

  1. Создайте хотя бы одну резервную копию журналов основной базы данных. Дополнительные сведения см. в разделе Создание резервной копии журнала транзакций (SQL Server).

  2. В зеркальной базе данных следует восстановить с помощью инструкции RESTORE WITH NORECOVERY все резервные копии журналов, созданные в основной базе данных с момента удаления зеркальной базы данных. Дополнительные сведения см. в разделе Восстановление резервной копии журнала транзакций (SQL Server).

Подготовка новой зеркальной базы данных

Подготовка зеркальной базы данных

Примечание

Пример этой процедуры на языке Transact-SQL см. в подразделе Пример (Transact-SQL)далее в этом разделе.

  1. Установите соединение с основным экземпляром на сервере.

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

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

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

  5. Установите соединение с зеркальным экземпляром сервера.

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

    Примечание

    При восстановлении файловой группы базы данных по файловой группе следует восстановить базу данных целиком.

  7. С помощью инструкции RESTORE WITH NORECOVERY примените все необработанные резервные копии и резервные копии журналов на зеркальной базе данных.

Пример (Transact-SQL)

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

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

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

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

    Примечание

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

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

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

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

    • Если пути идентичны:

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

      RESTORE DATABASE AdventureWorks   
          FROM DISK = 'C:\AdventureWorks.bak'   
          WITH NORECOVERY  
      GO  
      
    • Если пути отличаются:

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

      Важно!

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

      Например, следующая команда восстанавливает резервную копию основной базы данных, которая находится в каталоге "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).

Продолжение: после подготовки зеркальной базы данных

  1. Если были сняты какие-либо дополнительные резервные копии журналов с момента самой последней операции RESTORE LOG, то необходимо вручную применить каждую дополнительную резервную копию с параметром RESTORE WITH NORECOVERY.

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

  3. Если задание резервного копирования в основной базе данных отключено, то необходимо снова включить его.

  4. Если для базы данных после отработки отказа с переходом на другой ресурс требуется доверие, это потребует дополнительных действий по настройке после начала зеркального отображения. Дополнительные сведения см. в разделе Настройка зеркальной базы данных на использование свойства TRUSTWORTHY (Transact-SQL).

Связанные задачи

См. также:

Зеркальное отображение базы данных (SQL Server)
Безопасность транспорта для зеркального отображения баз данных и групп доступности AlwaysOn (SQL Server)
Настройка зеркального отображения базы данных (SQL Server)
Создание резервных копий и восстановление полнотекстовых каталогов и индексов
Зеркальное отображение баз данных и полнотекстовые каталоги (SQL Server)
Зеркальное отображение и репликация баз данных (SQL Server)
BACKUP (Transact-SQL)
RESTORE (Transact-SQL)
Аргументы инструкции RESTORE (Transact-SQL)