Использование PowerShell для создания группы доступности Always OnCreate an Always On availability group using PowerShell

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions)

В данном разделе описывается использование командлетов PowerShell для создания и настройки группы доступности AlwaysOn в SQL Server 2019 (15.x)SQL Server 2019 (15.x).This topic describes how to use PowerShell cmdlets to create and configure an Always On availability group by using PowerShell in SQL Server 2019 (15.x)SQL Server 2019 (15.x). Группа доступности определяет набор пользовательских баз данных, которые будут действовать при сбое как единое целое, а также набор партнеров по обеспечению отработки отказа, называемых репликами доступности и поддерживающих отработку отказа.An availability group defines a set of user databases that will fail over as a single unit and a set of failover partners, known as availability replicas, which support failover.

Примечание

Базовые сведения о группах доступности см. в разделе Обзор групп доступности AlwaysOn (SQL Server).For an introduction to availability groups, see Overview of Always On Availability Groups (SQL Server).

Примечание

Вместо командлетов PowerShell вы можете использовать мастер создания группы доступности или Transact-SQLTransact-SQL.As an alternative to using PowerShell cmdlets, you can use the Create Availability Group wizard or Transact-SQLTransact-SQL. Дополнительные сведения см. в статьях Использование диалогового окна "Создание группы доступности" (среда SQL Server Management Studio) и Создание группы доступности (Transact-SQL).For more information, see Use the New Availability Group Dialog Box (SQL Server Management Studio) or Create an Availability Group (Transact-SQL).

Перед началомBefore You Begin

Предварительные условия, ограничения и рекомендацииPrerequisites, Restrictions, and Recommendations

  • Перед созданием группы доступности необходимо, чтобы экземпляры SQL ServerSQL Server , на которых находятся реплики доступности, были расположены на различных узлах одной отказоустойчивой кластеризации Windows Server (WSFC).Before creating an availability group, verify that the host instances of SQL ServerSQL Server each resides on a different Windows Server Failover Clustering (WSFC) node of a single WSFC failover cluster. Также необходимо обеспечить соответствие экземпляров сервера всем другим предварительным условиям для экземпляров сервера; кроме того, следует выполнить все требования Группы доступности AlwaysOnAlways On availability groups и ознакомиться с соответствующими рекомендациями.Also, verify that your server instances met the other server-instance prerequisites and that all of the other Группы доступности AlwaysOnAlways On availability groups requirements are meet and that you are aware of the recommendations. Для получения дополнительных сведений настоятельно рекомендуется изучить раздел Предварительные требования, ограничения и рекомендации для групп доступности AlwaysOn (SQL Server).For more information, we strongly recommend that you read Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server).

PermissionsPermissions

Требуется членство в фиксированной роли сервера sysadmin и одно из разрешений: CREATE AVAILABILITY GROUP, ALTER ANY AVAILABILITY GROUP или CONTROL SERVER.Requires membership in the sysadmin fixed server role and either CREATE AVAILABILITY GROUP server permission, ALTER ANY AVAILABILITY GROUP permission, or CONTROL SERVER permission.

использование PowerShell для создания и настройки групп доступностиUsing PowerShell to Create and Configure an Availability Group

В следующей таблице перечислены основные задачи, входящие в настройку группы доступности, и указывается, какие из них поддерживаются командлетами PowerShell.The following table lists the basic tasks involved in configuring an availability group and indicates those that are supported by PowerShell cmdlets. Задачи Группы доступности AlwaysOnAlways On availability groups должны выполняться в той последовательности, в которой они перечислены в таблице.The Группы доступности AlwaysOnAlways On availability groups tasks must be performed in the sequence in which they are presented in the table.

ЗадачаTask Командлеты PowerShell (если доступны) или инструкции Transact-SQLPowerShell Cmdlets (if Available) or Transact-SQL Statement Место выполнения задачиWhere to Perform Task
Создание конечной точки зеркального отображения базы данных (одна точка на экземпляр SQL ServerSQL Server )Create database mirroring endpoint (once per SQL ServerSQL Server instance) New-SqlHadrEndPointNew-SqlHadrEndPoint Выполнить на каждом экземпляре сервера, у которого нет конечной точки зеркального отображения базы данных.Execute on each server instance that lacks database mirroring endpoint.

Для изменения существующей конечной точки зеркального отображения базы данных используйте Set-SqlHadrEndpoint.To alter an existing database mirroring endpoint, use Set-SqlHadrEndpoint.
Создание группы доступностиCreate availability group Во-первых, используйте командлет New-SqlAvailabilityReplica с параметром -AsTemplate для создания объекта реплики доступности в памяти для каждой из двух реплик доступности, которые планируется включить в группу доступности.First, use the New-SqlAvailabilityReplica cmdlet with the -AsTemplate parameter to create an in-memory availability-replica object for each of the two availability replicas that you plan to include in the availability group.

Затем создайте группу доступности с помощью командлета New-SqlAvailabilityGroup , ссылаясь на объекты реплики доступности.Then, create the availability group by using the New-SqlAvailabilityGroup cmdlet and referencing your availability-replica objects.
Выполнить на экземпляре сервера, где будет размещена исходная первичная реплика.Execute on the server instance that is to host the initial primary replica.
Присоединить вторичную реплику к группе доступностиJoin secondary replica to availability group Join-SqlAvailabilityGroupJoin-SqlAvailabilityGroup Выполнить на каждом экземпляре сервера, размещающем вторичную реплику.Execute on each server instance that is hosts a secondary replica.
Подготовьте базу данных-получательPrepare the secondary database Backup-SqlDatabase и Restore-SqlDatabaseBackup-SqlDatabase and Restore-SqlDatabase Создайте резервные копии на экземпляре сервера, размещающем первичную реплику.Create backups on the server instance that hosts the primary replica.

Восстановите резервные копии на каждом из тех экземпляров сервера, на которых размещена вторичная реплика, при помощи параметра восстановления NoRecovery .Restore backups on each server instance that hosts a secondary replica, using 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.
Запуск синхронизации данных с помощью присоединения каждой базы данных-получателя к группе доступностиStart data synchronization by joining each secondary database to availability group Add-SqlAvailabilityDatabaseAdd-SqlAvailabilityDatabase Выполнить на каждом экземпляре сервера, размещающем вторичную реплику.Execute on each server instance that hosts a secondary replica.

Примечание

Для выполнения данных задач измените каталог (cd) на соответствующий экземпляр или экземпляры сервера.To perform the given tasks, change directory (cd) to the indicated server instance or instances.

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

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

Примечание

Чтобы просмотреть синтаксис и пример определенного командлета, воспользуйтесь командлетом Get-Help в среде SQL ServerSQL Server PowerShell.To view the syntax and an example of a given 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.

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

  2. Создайте объект реплики доступности в памяти для первичной реплики.Create an in-memory availability-replica object for the primary replica.

  3. Создайте объект реплики доступности в памяти для каждой вторичной реплики.Create an in-memory availability-replica object for each of the secondary replicas.

  4. Создайте группу доступности.Create the availability group.

    Примечание

    Максимальная длина имени группы доступности составляет 128 символов.The maximum length for an availability group name is 128 characters.

  5. Сведения о присоединении новой вторичной реплики к группе доступности см. в статье Присоединение вторичной реплики к группе доступности (SQL Server).Join the new secondary replica to the availability group, see Join a Secondary Replica to an Availability Group (SQL Server).

  6. Для каждой базы данных в группе доступности создайте базу данных-получатель путем восстановления последней резервной копии базы данных-источника с помощью инструкции RESTORE WITH NORECOVERY.For each database in the availability group, create a secondary database by restoring recent backups of the primary database, using RESTORE WITH NORECOVERY.

  7. Сведения о присоединении новой базы данных-получателя к группе доступности см. в статье Присоединение вторичной реплики к группе доступности (SQL Server).Join every new secondary database to the availability group, see Join a Secondary Replica to an Availability Group (SQL Server).

  8. (Необязательно) С помощью команды Windows dir проверьте содержимое новой группы доступности.(optional) Use the Windows dir command to verify the contents of the new availability group.

Примечание

Если учетные записи службы SQL ServerSQL Server экземпляров сервера запускаются в контексте других учетных записей пользователей домена, создайте имя входа для другого экземпляра сервера и предоставьте этому имени разрешение CONNECT для подключения к конечной точке зеркального отображения локальной базы данных.If the SQL ServerSQL Server service accounts of the server instances run under different domain user accounts, on each server instance, create a login for the other server instance and grant this login CONNECT permission to the local database mirroring endpoint.

ПримерExample

В следующем примере использования PowerShell создается и настраивается простая группа доступности с именем <myAvailabilityGroup> с двумя репликами доступности и с одной базой данных доступности.The following PowerShell example creates and configures a simple availability group named <myAvailabilityGroup> with two availability replicas and one availability database. Пример.The example:

  1. Выполняется резервное копирование базы данных <myDatabase> и ее журнала транзакций.Backs up <myDatabase> and its transaction log.

  2. Выполняется восстановление базы данных <myDatabase> и ее журнала транзакций с использованием параметра -NoRecovery .Restores <myDatabase> and its transaction log, using the -NoRecovery option.

  3. Создается представление первичной реплики в памяти, которая будет размещена локальным экземпляром SQL ServerSQL Server (с именем PrimaryComputer\Instance).Creates an in-memory representation of the primary replica, which will be hosted by the local instance of SQL ServerSQL Server (named PrimaryComputer\Instance).

  4. Создается представление вторичной реплики в памяти, которая будет размещена локальным экземпляром SQL ServerSQL Server (с именем SecondaryComputer\Instance).Creates an in-memory representation of the secondary replica, which will be hosted by an instance of SQL ServerSQL Server (named SecondaryComputer\Instance).

  5. Создается группа доступности с именем <myAvailabilityGroup>.Creates an availability group named <myAvailabilityGroup>.

  6. Вторичная реплика присоединяется к группе доступности.Joins the secondary replica to the availability group.

  7. База данных-получатель присоединяется к группе доступности.Joins the secondary database to the availability group.

# Backup my database and its log on the primary  
Backup-SqlDatabase `  
    -Database "<myDatabase>" `  
    -BackupFile "\\share\backups\<myDatabase>.bak" `  
    -ServerInstance "PrimaryComputer\Instance"  
  
Backup-SqlDatabase `  
    -Database "<myDatabase>" `  
    -BackupFile "\\share\backups\<myDatabase>.log" `  
    -ServerInstance "PrimaryComputer\Instance" `  
    -BackupAction Log   
  
# Restore the database and log on the secondary (using NO RECOVERY)  
Restore-SqlDatabase `  
    -Database "<myDatabase>" `  
    -BackupFile "\\share\backups\<myDatabase>.bak" `  
    -ServerInstance "SecondaryComputer\Instance" `  
    -NoRecovery  
  
Restore-SqlDatabase `  
    -Database "<myDatabase>" `  
    -BackupFile "\\share\backups\<myDatabase>.log" `  
    -ServerInstance "SecondaryComputer\Instance" `  
    -RestoreAction Log `  
    -NoRecovery  
  
# Create an in-memory representation of the primary replica.  
$primaryReplica = New-SqlAvailabilityReplica `  
    -Name "PrimaryComputer\Instance" `  
    -EndpointURL "TCP://PrimaryComputer.domain.com:5022" `  
    -AvailabilityMode "SynchronousCommit" `  
    -FailoverMode "Automatic" `  
    -Version 12 `  
    -AsTemplate  
  
# Create an in-memory representation of the secondary replica.  
$secondaryReplica = New-SqlAvailabilityReplica `  
    -Name "SecondaryComputer\Instance" `  
    -EndpointURL "TCP://SecondaryComputer.domain.com:5022" `  
    -AvailabilityMode "SynchronousCommit" `  
    -FailoverMode "Automatic" `  
    -Version 12 `  
    -AsTemplate  
  
# Create the availability group  
New-SqlAvailabilityGroup `  
    -Name "<myAvailabilityGroup>" `  
    -Path "SQLSERVER:\SQL\PrimaryComputer\Instance" `  
    -AvailabilityReplica @($primaryReplica,$secondaryReplica) `  
    -Database "<myDatabase>"  
  
# Join the secondary replica to the availability group.  
Join-SqlAvailabilityGroup -Path "SQLSERVER:\SQL\SecondaryComputer\Instance" -Name "<myAvailabilityGroup>"  
  
# Join the secondary database to the availability group.  
Add-SqlAvailabilityDatabase -Path "SQLSERVER:\SQL\SecondaryComputer\Instance\AvailabilityGroups\<myAvailabilityGroup>" -Database "<myDatabase>"  

Настройка экземпляра сервера для групп доступности AlwaysOnTo configure a server instance for Always On Availability Groups

Настройка свойств группы доступности и репликиTo configure availability group and replica properties

Завершение настройки группы доступностиTo complete availability group configuration

Другие способы создания группы доступностиAlternative ways to create an availability group

Устранение неполадок с конфигурацией групп доступности AlwaysOnTo troubleshoot Always On Availability Groups configuration

См. также:See Also

Конечная точка зеркального отображения базы данных (SQL Server) The Database Mirroring Endpoint (SQL Server)
Обзор групп доступности AlwaysOn (SQL Server)Overview of Always On Availability Groups (SQL Server)