Ручная подготовка базы данных-получателя для присоединения к группе доступности (SQL Server)

В этом разделе описывается подготовка базы данных-получателя для группы доступности AlwaysOn в SQL Server 2012 при помощи среды Среда SQL Server Management Studio, Transact-SQL или PowerShell. Подготовка базы данных-получателя выполняется в два этапа: (1) восстановление базы данных из последней резервной копии базы данных-источника и соответствующих резервных копий журнала на каждом экземпляре сервера, где размещена вторичная реплика доступности, при помощи инструкции RESTORE WITH NORECOVERY и (2) присоединение восстановленной базы данных к группе доступности.

СоветСовет

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

  • Перед началом работы выполните следующие действия.  

    Требования и ограничения

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

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

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

    Среда SQL Server Management Studio

    Transact-SQL

    PowerShell

  • Связанные задачи резервного копирования и восстановления

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

Перед началом работы

Требования и ограничения

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

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

  • Для каждой операции восстановления используйте инструкцию RESTORE WITH NORECOVERY.

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

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

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

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

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

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

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

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

Разрешения

Разрешения BACKUP DATABASE и BACKUP LOG назначены по умолчанию членам предопределенной роли сервера sysadmin, а также членам предопределенных ролей базы данных db_owner и db_backupoperator. Дополнительные сведения см. в разделе BACKUP (Transact-SQL).

Если восстанавливаемая база данных не существует на нужном экземпляре сервера, для выполнения инструкции RESTORE требуются разрешения CREATE DATABASE. Дополнительные сведения см. в разделе RESTORE (Transact-SQL).

Использование среды SQL Server Management Studio

ПримечаниеПримечание

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

Подготовка базы данных-получателя

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

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

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

    На странице RESTORE DATABASEпараметры выберите параметр Оставить базу данных нерабочей и не выполнять откат незафиксированных транзакций. Можно восстановить дополнительные журналы транзакций. (RESTORE WITH NORECOVERY).

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

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

ПримечаниеПримечание

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

Связанные задачи резервного копирования и восстановления

Создание резервной копии базы данных

Создание резервной копии журнала

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

Значок стрелки, используемый со ссылкой «В начало»[В начало]

Использование Transact-SQL

Подготовка базы данных-получателя

ПримечаниеПримечание

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

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

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

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

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

    ПримечаниеПримечание

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

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

ПримечаниеПримечание

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

Пример (Transact-SQL)

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

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

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

    ПримечаниеПримечание

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

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

    BACKUP DATABASE MyDB1 
        TO DISK = 'C:\MyDB1.bak' 
        WITH FORMAT
    GO
    
  3. Скопируйте полную резервную копию на экземпляр сервера, на котором размещается вторичная реплика.

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

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

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

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

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

      Важное примечаниеВажно!

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

      Например, следующая команда восстанавливает базу данных-источник из резервной копии, размещенной в каталоге данных экземпляра SQL Server 2012 по умолчанию, C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA. Операция восстановления базы данных должна переместить базы данных в каталог удаленного экземпляра SQL Server 2012 с именем (AlwaysOn1), на котором размещается вторичная реплика на другом узле кластера. Там файлы данных и журнала восстанавливаются в каталог C:\Program Files\Microsoft SQL Server\MSSQL11.ALWAYSON1\MSSQL\DATA. Операция восстановления использует параметр WITH NORECOVERY, чтобы оставить базу данных-получатель в восстанавливающейся базе данных.

      RESTORE DATABASE MyDB1
        FROM DISK='C:\MyDB1.bak'
       WITH NORECOVERY, 
          MOVE 'MyDB1_Data' TO 
           'C:\Program Files\Microsoft SQL Server\MSSQL11.ALWAYSON1\MSSQL\DATA\MyDB1_Data.mdf', 
          MOVE 'MyDB1_Log' TO
           'C:\Program Files\Microsoft SQL Server\MSSQL11.ALWAYSON1\MSSQL\DATA\MyDB1_Data.ldf';
      GO
      
  5. После того как полная резервная копия базы данных будет восстановлена, необходимо создать резервную копию журнала базы данных-источника. Например, следующая инструкция Transact-SQL выполняет резервное копирование журнала в файл резервной копии с именем E:\MyDB1_log.bak:

    BACKUP LOG MyDB1 
      TO DISK = 'E:\MyDB1_log.bak' 
    GO
    
  6. Перед присоединением базы данных к вторичной реплике необходимо применить эту обязательную резервную копию журнала (и все последующие резервные копии журнала).

    Например, следующая инструкция Transact-SQL восстанавливает первый журнал из файла C:\MyDB1.bak.

    RESTORE LOG MyDB1 
      FROM DISK = 'E:\MyDB1_log.bak' 
        WITH FILE=1, NORECOVERY
    GO
    
  7. Если перед присоединением базы данных-получателя будут созданы любые дополнительные резервные копии журнала, необходимо будет последовательно восстановить все эти резервные копии журналов на том экземпляре сервера, на котором размещена вторичная реплика. При этом необходимо использовать инструкцию RESTORE WITH NORECOVERY.

    Например, следующая инструкция Transact-SQL восстанавливает два дополнительных журнала из файла E:\MyDB1_log.bak.

    RESTORE LOG MyDB1 
      FROM DISK = 'E:\MyDB1_log.bak' 
        WITH FILE=2, NORECOVERY
    GO
    RESTORE LOG MyDB1 
      FROM DISK = 'E:\MyDB1_log.bak' 
        WITH FILE=3, NORECOVERY
    GO
    

[В начало]

Использование PowerShell

Подготовка базы данных-получателя

  1. В случае если резервная копия базы данных-источника отсутствует и вы создаете ее самостоятельно, перейдите в каталог (cd) экземпляра сервера, на котором размещена первичная реплика.

  2. Используйте командлет Backup-SqlDatabase, чтобы создать каждую их этих резервных копий.

  3. Перейдите в каталог (cd) экземпляра сервера, на котором размещается вторичная реплика.

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

    ПримечаниеПримечание

    Чтобы просмотреть синтаксис командлета, воспользуйтесь командлетом Get-Help в среде SQL Server PowerShell. Дополнительные сведения см. в разделе Получение справок по SQL Server PowerShell.

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

Настройка и использование поставщика SQL Server PowerShell

Образцы скрипта и команды резервного копирования и восстановления

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

# Create database backup
Backup-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.bak" -ServerInstance "SourceMachine\Instance"
# Create log backup
Backup-SqlDatabase -Database "MyDB1" -BackupAction "Log" -BackupFile "\\share\backups\MyDB1.trn" -ServerInstance "SourceMachine\Instance"
# Restore database backup 
Restore-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.bak" -NoRecovery -ServerInstance "DestinationMachine\Instance"
# Restore log backup 
Restore-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.trn" -RestoreAction "Log" -NoRecovery –ServerInstance "DestinationMachine\Instance"

Дальнейшие действия. После подготовки базы данных-получателя

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

См. также

Справочник

BACKUP (Transact-SQL)

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

RESTORE (Transact-SQL)

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

Обзор групп доступности AlwaysOn (SQL Server)

Устранение неполадок с операцией добавления файла, давшей сбой (группы доступности AlwaysOn)