Подготовка базы данных-получателя для присоединения к группе доступности Always OnPrepare a secondary database for an Always On availability group

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server нетБаза данных SQL AzureнетХранилище данных SQL AzureнетParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

В этом разделе описывается подготовка базы данных для группы доступности AlwaysOn в SQL ServerSQL Server с помощью среды SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL или PowerShell.This topic describes how to prepare a database for an Always On availability group in SQL ServerSQL Server by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, or PowerShell. Подготовка базы данных выполняется в два этапа:Preparing a database requires two steps:

  1. Восстановление базы данных из последней резервной копии базы данных-источника и соответствующих резервных копий журнала на каждом экземпляре сервера, где размещена вторичная реплика доступности, при помощи инструкции RESTORE WITH NORECOVERY.Restore a recent database backup of the primary database and subsequent log backups onto each server instance that hosts the secondary replica, using RESTORE WITH NORECOVERY
  2. Присоединение восстановленной базы данных к группе доступности.Join the restored database to the availability group.

Совет

Если имеется существующая конфигурация доставки журналов, можно будет преобразовать базу данных-источник доставки журналов вместе с одной (или более) базой данных-получателем в первичную реплику группы доступности и одну (или более) вторичную реплику.If you have an existing log shipping configuration, you might be able to convert the log shipping primary database along with one or more of its secondary databases to an availability group primary replica and one or more secondary replicas. Дополнительные сведения см. далее в разделе Необходимые условия для перехода от использования доставки журналов к использованию групп доступности AlwaysOn (SQL Server).For more information, see Prerequisites for migrating from log Shipping to Always On Availability Groups (SQL Server).

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

  • Убедитесь, что в системе, в которой предполагается разместить базу данных, есть жесткий диск, на котором достаточно свободного места для баз данных-получателей.Make sure that the system where you plan to place database possesses a disk drive with sufficient space for the secondary databases.

  • Имя базы данных-получателя должно совпадать с именем базы данных-источника.The name of the secondary database must be the same as the name of the primary database.

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

  • Если необходимо, чтобы путь к файлам базы данных-получателя отличался от пути к базе данных-источнику (в т. ч. буквой диска), в команду восстановления необходимо добавить параметр WITH MOVE для каждого файла базы данных, чтобы указать для них путь к базе данных-получателю.If the secondary database needs to reside on a different file path (including the drive letter) than the primary database, the restore command must also use the WITH MOVE option for each of the database files to specify them to the path of the secondary database.

  • При восстановлении файловой группы базы данных по файловой группе следует восстановить базу данных целиком.If you restore the database filegroup by filegroup, be sure to restore the whole database.

  • После восстановления базы данных необходимо восстановить (с параметром WITH NORECOVERY) каждую резервную копию журнала, созданную с момента последнего восстановления данных из резервной копии.After restoring the database, you must restore (WITH NORECOVERY) every log backup created since the last restored data backup.

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

  • Для автономных экземпляров SQL ServerSQL Serverрекомендуется, чтобы по возможности путь к файлам (в том числе буква диска) базы данных-получателя совпадал с путем к соответствующей базе данных-источнику.On stand-alone instances of SQL ServerSQL Server, we recommend that, if possible, the file path (including the drive letter) of a given secondary database be identical to the path of the corresponding primary database. Такой подход рекомендуется, поскольку если при создании базы данных-получателя переместить ее файлы, то последующее добавление в нее файлов может завершиться ошибкой, в результате чего ее работа будет приостановлена.This is because if you move the database files when creating a secondary database, a later add-file operation might fail on the secondary database and cause the secondary database to be suspended.

  • Перед подготовкой баз данных-получателей настоятельно рекомендуется приостановить резервное копирование журнала по расписанию для всех баз данных в группе доступности до завершения инициализации вторичных реплик.Before preparing your secondary databases, we strongly recommend that you suspend scheduled log backups on the databases in the availability group until the initialization of secondary replicas has completed.

безопасностьSecurity

При резервном копировании базы данных свойство базы данных TRUSTWORTHY принимает значение OFF.When a database is backed up, the TRUSTWORTHY database property is set to OFF. Поэтому свойство TRUSTWORTHY всегда имеет значение OFF во всех только что восстановленных базах данных.Therefore, TRUSTWORTHY is always OFF on a newly restored database.

PermissionsPermissions

Разрешения BACKUP DATABASE и BACKUP LOG назначены по умолчанию членам предопределенной роли сервера sysadmin и предопределенным ролям базы данных db_owner и db_backupoperator .BACKUP DATABASE and BACKUP LOG permissions default to members of the sysadmin fixed server role and the db_owner and db_backupoperator fixed database roles. Дополнительные сведения см. в разделе BACKUP (Transact-SQL).For more information, see BACKUP (Transact-SQL).

Если восстанавливаемая база данных не существует на нужном экземпляре сервера, для выполнения инструкции RESTORE требуются разрешения CREATE DATABASE.When the database being restored does not exist on the server instance, the RESTORE statement requires CREATE DATABASE permissions. Дополнительные сведения см. в разделе RESTORE (Transact-SQL)невозможно.For more information, see RESTORE (Transact-SQL).

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

Примечание

Если пути для файлов резервного копирования и восстановления на экземпляре сервера, размещающем первичную реплику, и на каждом экземпляре, где размещена вторичная реплика, идентичны, есть возможность создания баз данных вторичных реплик с помощью Мастера создания группы доступности, Мастера добавления реплики в группу доступности или Мастера добавления базы данных в группу доступности.If the backup and restore file paths are identical between the server instance that hosts the primary replica and every instance that hosts a secondary replica, you should be able create secondary replica databases by with New Availability Group Wizard, Add Replica to Availability Group Wizard, or Add Database to Availability Group Wizard.

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

  1. Создайте новую полную или разностную резервную копию базы данных, если у вас еще нет недавней резервной копии базы данных-источника.Unless you already have a recent database backup of the primary database, create a new full or differential database backup. Настоятельно рекомендуется поместить эту резервную копию и все последующие резервные копии журналов в указанную общую сетевую папку.As a best practice, place this backup and any subsequent log backups onto the recommended network share.

  2. Создайте минимум одну новую резервную копию журнала базы данных-источника.Create at least one new log backup of the primary database.

Примечание

Резервная копия журнала транзакций может не требоваться, если резервная копия журнала транзакций не была ранее зафиксирована в базе данных в первичной реплике.A transaction log backup may not be required if a transaction log backup has not been previously captured on the database in the primary replica. Корпорация Майкрософт рекомендует создавать резервную копию журнала транзакций каждый раз, когда новая база данных присоединяется к группе доступности.Microsoft recommends taking a transaction log backup each time a new database is joined to the availability group.

  1. Выполните восстановление из полной резервной копии базы данных-источника на том экземпляре сервера, на котором размещена вторичная реплика (можно также восстановить разностную резервную копию), после чего восстановите все последующие резервные копии журнала.On the server instance that hosts the secondary replica, restore the full database backup of the primary database (and optionally a differential backup) followed by any subsequent log backups.

    На странице RESTORE DATABASE — параметры выберите параметр Оставить базу данных в неработающем состоянии и не выполнять откат незафиксированных транзакций. Можно восстановить дополнительные журналы транзакций. (RESTORE WITH NORECOVERY) .On the RESTORE DATABASE Options page, select Leave the database non-operational, and do not roll back the uncommitted transactions. Additional transaction logs can be restored. (RESTORE WITH NORECOVERY).

    Если пути к файлам базы данных-источника и базы данных-получателя отличаются, например если соответствующие основные базы данных находятся на диске «F:», но на экземпляре сервера, на котором размещена дополнительная реплика, нет диска «F:», используйте параметр MOVE в предложении WITH.If the file paths of the primary database and the secondary database differ, for example, if the primary database is on drive 'F:' but the server instance that hosts the secondary replica lacks an F: drive, include the MOVE option in your WITH clause.

  2. Чтобы завершить настройку базы данных-получателя, необходимо присоединить ее к группе доступности.To complete configuration of the secondary database, you need to join the secondary database to the availability group. Дополнительные сведения см. в разделе Присоединение базы данных-получателя к группе доступности (SQL Server).For more information, Join a Secondary Database to an Availability Group (SQL Server).

Примечание

Дополнительные сведения о выполнении этих операций резервного копирования и восстановления см. в подразделе Связанные задачи резервного копирования и восстановлениядалее в этом разделе.For information about how to perform these backup and restore operations, see Related Backup and Restore Tasks, later in this section.

Связанные задачи резервного копирования и восстановленияRelated Backup and Restore Tasks

Создание резервной копии базы данныхTo create a database backup

Создание резервной копии журналаTo create a log backup

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

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

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

Примечание

Пример этой процедуры см. в подразделе Пример (Transact-SQL)ранее в этом разделе.For an example of this procedure, see Example (Transact-SQL), earlier in this topic.

  1. Если у вас нет недавней полной резервной копии базы данных-источника, выполните подключение к экземпляру сервера, на котором размещена первичная реплика, и создайте полную резервную копию базы данных.Unless you have a recent full backup of the primary database, connect to the server instance that hosts the primary replica and create a full database backup. Настоятельно рекомендуется поместить эту резервную копию и все последующие резервные копии журналов в указанную общую сетевую папку.As a best practice, place this backup and any subsequent log backups onto the recommended network share.

  2. В экземпляре сервера, на котором размещена вторичная реплика доступности, выполните восстановление из полной резервной копии базы данных-источника (также можно восстановить и разностную копию), после чего восстановите последующие копии журнала.On the server instance that hosts the secondary replica, restore the full database backup of the primary database (and optionally a differential backup) followed by all subsequent log backups. Для каждой операции восстановления используйте параметр WITH NORECOVERY.Use WITH NORECOVERY for every restore operation.

    Если пути к файлам базы данных-источника и базы данных-получателя отличаются, например если соответствующие основные базы данных находятся на диске «F:», но на экземпляре сервера, на котором размещена дополнительная реплика, нет диска «F:», используйте параметр MOVE в предложении WITH.If the file paths of the primary database and the secondary database differ, for example, if the primary database is on drive 'F:' but the server instance that hosts the secondary replica lacks an F: drive, include the MOVE option in your WITH clause.

  3. Если с момента последнего обязательного резервного копирования журнала было выполнено резервное копирование журнала базы данных-источника, эти копии также необходимо скопировать на тот экземпляр сервера, на котором размещена вторичная реплика, и применить все эти резервные копии журнала к базе данных-получателю, начиная с самой ранней. При этом необходимо всегда использовать инструкцию RESTORE WITH NORECOVERY.If any log backups have been taken on the primary database since the required log backup, you must also copy these to the server instance that hosts the secondary replica and apply each of those log backups to the secondary database, starting with the earliest and always using RESTORE WITH NORECOVERY.

    Примечание

    Резервной копии журнала может не быть в том случае, если база данных-источник только что создана и в ней еще не было создано ни одной резервной копии журналов либо если модель восстановления только что изменена с SIMPLE на FULL.A log backup would not exist if the primary database has just been created and no log backup has been taken yet or if the recovery model has just been changed from simple to full.

  4. Чтобы завершить настройку базы данных-получателя, необходимо присоединить ее к группе доступности.To complete configuration of the secondary database, you need to join the secondary database to the availability group. Дополнительные сведения см. в разделе Присоединение базы данных-получателя к группе доступности (SQL Server).For more information, Join a Secondary Database to an Availability Group (SQL Server).

Примечание

Дополнительные сведения о выполнении этих операций резервного копирования и восстановления см. в подразделе Связанные задачи резервного копирования и восстановлениядалее в этом разделе.For information about how to perform these backup and restore operations, see Related Backup and Restore Tasks, later in this topic.

Пример (Transact-SQL)Transact-SQL Example

В следующем примере показана подготовка базы данных-получателя.The following example prepares a secondary database. В этом примере используется образец базы данных AdventureWorks2012AdventureWorks2012 , в котором по умолчанию применяется простая модель восстановления.This example uses the AdventureWorks2012AdventureWorks2012 sample database, which uses the simple recovery model by default.

  1. Чтобы использовать базу данных AdventureWorks2012AdventureWorks2012 , следует ее изменить так, чтобы использовалась модель полного восстановления:To use the AdventureWorks2012AdventureWorks2012 database, modify it to use the full recovery model:

    USE master;  
    GO  
    ALTER DATABASE MyDB1   
    SET RECOVERY FULL;  
    GO  
    
  2. После изменения модели восстановления с SIMPLE на FULL создайте полную резервную копию, с помощью которой затем можно будет создать базу данных-получатель.After modifying the recovery model of the database from SIMPLE to FULL, create a full backup, which can be used to create the secondary database. Так как модель восстановления только что была изменена, указывается параметр WITH FORMAT для создания нового набора носителей.Because the recovery model has just been changed, the WITH FORMAT option is specified to create a new media set. Это полезно для отделения резервных копий при модели полного восстановления от резервных копий, сделанных при простой модели восстановления.This is useful to separate the backups under the full recovery model from any previous backups made under the simple recovery model. В данном примере файл резервной копии (C:\AdventureWorks2012AdventureWorks2012.bak) создается на том же диске, что и база данных.For the purpose of this example, the backup file (C:\AdventureWorks2012AdventureWorks2012.bak) is created on the same drive as the database.

    Примечание

    Для производственной базы данных необходимо всегда делать резервные копии на разные устройства.For a production database, you should always back up to a separate device.

    На экземпляре сервера, на котором размещена основная реплика (INSTANCE01), создайте полную резервную копию базы данных-источника, выполнив следующие действия.On the server instance that hosts the primary replica (INSTANCE01), create a full backup of the primary database as follows:

    BACKUP DATABASE MyDB1   
        TO DISK = 'C:\MyDB1.bak'   
        WITH FORMAT  
    GO  
    
  3. Скопируйте полную резервную копию на экземпляр сервера, на котором размещается вторичная реплика.Copy the full backup to the server instance that hosts the secondary replica.

  4. На сервере, на котором размещена вторичная реплика, восстановите полную резервную копию с помощью инструкции RESTORE WITH NORECOVERY.Restore the full backup, using RESTORE WITH NORECOVERY, onto the server instance that hosts the secondary replica. Команда восстановления зависит от того, идентичны ли пути к базе данных-источнику и базе данных-получателю.The restore command depends on whether the paths of primary and secondary databases are identical.

    • Если пути идентичны:If the paths are identical:

      На компьютере, на котором размещена вторичная реплика, выполните восстановление полной резервной копии следующим образом.On the computer that hosts the secondary replica, restore the full backup as follows:

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

      Если путь к базе данных-получателю отличается от пути к базе данных-источнику (например, отличаются имена дисков), то для создания базы данных-получателя в операцию восстановления нужно будет добавить предложение MOVE.If the path of the secondary database differs from the path of the primary database (for instance, their drive letters differ), creating the secondary database requires that the restore operation include a MOVE clause.

      Важно!

      Если пути к базе данных-источнику и базе данных-получателю отличаются, то добавлять файлы нельзя.If the path names of the primary and secondary databases differ, you cannot add a file. Обусловлено это тем, что при получении журнала для выполнения операции добавления файла экземпляр сервера, на котором размещена вторичная реплика, пытается поместить новый файл в местоположение, указанное для базы данных-источника.This is because on receiving the log for the add file operation, the server instance of the secondary replica attempts to place the new file in the same path as used by the primary database.

      Например, следующая команда восстанавливает базу данных-источник из резервной копии, размещенной в каталоге данных экземпляра SQL Server 2017SQL Server 2017по умолчанию, C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA.For example, the following command restores a backup of a primary database that resides in the data directory of the default instance of SQL Server 2017SQL Server 2017, C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA. Операция восстановления базы данных должна переместить базы данных в каталог удаленного экземпляра SQL Server 2017SQL Server 2017 с именем (AlwaysOn1), на котором размещается вторичная реплика на другом узле кластера.The restore database operation must move the database to the data directory of a remote instance of SQL Server 2017SQL Server 2017 named (Always On1), which hosts the secondary replica on another cluster node. Там файлы данных и журнала восстанавливаются в каталог C:\Program Files\Microsoft SQL Server\MSSQL13.On1\MSSQL\DATA .There, the data and log files are restored to the C:\Program Files\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA directory . Операция восстановления использует параметр WITH NORECOVERY, чтобы оставить базу данных-получатель в восстанавливающейся базе данных.The restore operation uses WITH NORECOVERY, to leave the secondary database in the restoring database.

      RESTORE DATABASE MyDB1  
        FROM DISK='C:\MyDB1.bak'  
       WITH NORECOVERY,   
          MOVE 'MyDB1_Data' TO   
           'C:\Program Files\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA\MyDB1_Data.mdf',   
          MOVE 'MyDB1_Log' TO  
           'C:\Program Files\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA\MyDB1_Data.ldf';  
      GO  
      
  5. После того как полная резервная копия базы данных будет восстановлена, необходимо создать резервную копию журнала базы данных-источника.After you restore the full backup, you must create a log backup on the primary database. Например, следующая инструкция Transact-SQLTransact-SQL выполняет резервное копирование журнала в файл резервной копии с именем E:\MyDB1_log.trn:For example, the following Transact-SQLTransact-SQL statement backs up the log to the a backup file named E:\MyDB1_log.trn:

    BACKUP LOG MyDB1   
      TO DISK = 'E:\MyDB1_log.trn'   
    GO  
    
  6. Перед присоединением базы данных к вторичной реплике необходимо применить эту обязательную резервную копию журнала (и все последующие резервные копии журнала).Before you can join the database to the secondary replica, you must apply the required log backup (and any subsequent log backups).

    Например, следующая инструкция Transact-SQLTransact-SQL восстанавливает первый журнал из файла C:\MyDB1.trn:For example, the following Transact-SQLTransact-SQL statement restores the first log from C:\MyDB1.trn:

    RESTORE LOG MyDB1   
      FROM DISK = 'E:\MyDB1_log.trn'   
        WITH FILE=1, NORECOVERY  
    GO  
    
  7. Если перед присоединением базы данных-получателя будут созданы любые дополнительные резервные копии журнала, необходимо будет последовательно восстановить все эти резервные копии журналов на том экземпляре сервера, на котором размещена вторичная реплика. При этом необходимо использовать инструкцию RESTORE WITH NORECOVERY.If any additional log backups occur before the database joins the secondary replica, you must also restore all of those log backups, in sequence, to the server instance that hosts the secondary replica using RESTORE WITH NORECOVERY.

    Например, следующая инструкция Transact-SQLTransact-SQL восстанавливает два дополнительных журнала из файла E:\MyDB1_log.trn:For example, the following Transact-SQLTransact-SQL statement restores two additional logs from E:\MyDB1_log.trn:

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

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

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

  1. Если резервная копия базы данных-источника отсутствует и вы создаете ее самостоятельно, перейдите в каталог (cd) экземпляра сервера, на котором размещена первичная реплика.If you need to create a recent backup of the primary database, change directory (cd) to the server instance that hosts the primary replica.

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

  3. Перейдите в каталог (cd) экземпляра сервера, на котором размещается вторичная реплика.Change directory (cd) to the server instance that hosts the secondary replica.

  4. Чтобы восстановить резервные копии базы данных и журналов для каждой базы данных-источника, используйте командлет restore-SqlDatabase , указывая параметр восстановления NoRecovery .To restore the database and log backups of each primary database, use the restore-SqlDatabase cmdlet, specifying the NoRecovery restore parameter. Если пути к файлам различны на компьютерах, на которых размещена основная реплика и целевая вторичная реплика, также следует использовать параметр восстановления RelocateFile .If the file paths differ between the computers that host the primary replica and the target secondary replica, also use the RelocateFile restore parameter.

    Примечание

    Чтобы просмотреть синтаксис командлета, воспользуйтесь командлетом Get-Help в среде SQL ServerSQL Server PowerShell.To view the syntax of a cmdlet, use the Get-Help cmdlet in the SQL ServerSQL Server PowerShell environment. Дополнительные сведения см. в разделе Get Help SQL Server PowerShell.For more information, see Get Help SQL Server PowerShell.

  5. Чтобы завершить настройку базы данных-получателя, необходимо присоединить ее к группе доступности.To complete configuration of the secondary database, you need to join it to the availability group. Дополнительные сведения см. в разделе Присоединение базы данных-получателя к группе доступности (SQL Server).For more information, Join a Secondary Database to an Availability Group (SQL Server).

Настройка и использование поставщика SQL Server PowerShellTo set up and use the SQL Server PowerShell provider

Образцы скрипта и команды резервного копирования и восстановленияSample backup and restore script and command

Следующие команды PowerShell создают полную резервную копию базы данных и журнала транзакций в общей сетевой папке и восстанавливают базу данных из этой папки.The following PowerShell commands back up a full database backup and transaction log to a network share and restore those backups from that share. В этом примере предполагается, что путь к файлам, в которые выполняется восстановление базы данных, такой же, как и путь к файлам базы данных, резервная копия которых была создана.This example assumes that the file path to which the database is restored is the same as the file path on which the database was backed up.

# 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"  
  

Следующие шагиNext steps

Чтобы завершить настройку базы данных-получателя, необходимо присоединить только что восстановленную базу данных к группе доступности.To complete configuration of the secondary database, join the newly restored database to the availability group. Дополнительные сведения см. в статье Присоединение базы данных-получателя к группе доступности (SQL Server).For more information, see Join a Secondary Database to an Availability Group (SQL Server).

См. также разделSee also

Обзор групп доступности AlwaysOn (SQL Server) Overview of Always On Availability Groups (SQL Server)
BACKUP (Transact-SQL) BACKUP (Transact-SQL)
Аргументы инструкции RESTORE (Transact-SQL) RESTORE Arguments (Transact-SQL)
RESTORE (Transact-SQL) RESTORE (Transact-SQL)
Устранение неполадок с операцией добавления файла, давшей сбой (группы доступности AlwaysOn)Troubleshoot a Failed Add-File Operation (Always On Availability Groups)