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

Применимо к: даSQL Server (все поддерживаемые версии)

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

Примечание

Базовые сведения о группах доступности см. в разделе Обзор групп доступности AlwaysOn (SQL Server).

Примечание

Вместо командлетов PowerShell вы можете использовать мастер создания группы доступности или Transact-SQL. Дополнительные сведения см. в статьях Использование диалогового окна "Создание группы доступности" (среда SQL Server Management Studio) и Создание группы доступности (Transact-SQL).

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

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

  • Перед созданием группы доступности необходимо, чтобы экземпляры SQL Server , на которых находятся реплики доступности, были расположены на различных узлах одной отказоустойчивой кластеризации Windows Server (WSFC). Также необходимо обеспечить соответствие экземпляров сервера всем другим предварительным условиям для экземпляров сервера; кроме того, следует выполнить все требования Группы доступности AlwaysOn и ознакомиться с соответствующими рекомендациями. Для получения дополнительных сведений настоятельно рекомендуется изучить раздел Предварительные требования, ограничения и рекомендации для групп доступности AlwaysOn (SQL Server).

Permissions

Требуется членство в фиксированной роли сервера sysadmin и одно из разрешений: CREATE AVAILABILITY GROUP, ALTER ANY AVAILABILITY GROUP или CONTROL SERVER.

использование PowerShell для создания и настройки групп доступности

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

Задача Командлеты PowerShell (если доступны) или инструкции Transact-SQL Место выполнения задачи
Создание конечной точки зеркального отображения базы данных (одна точка на экземпляр SQL Server ) New-SqlHadrEndPoint Выполнить на каждом экземпляре сервера, у которого нет конечной точки зеркального отображения базы данных.

Для изменения существующей конечной точки зеркального отображения базы данных используйте Set-SqlHadrEndpoint.
Создание группы доступности Во-первых, используйте командлет New-SqlAvailabilityReplica с параметром -AsTemplate для создания объекта реплики доступности в памяти для каждой из двух реплик доступности, которые планируется включить в группу доступности.

Затем создайте группу доступности с помощью командлета New-SqlAvailabilityGroup , ссылаясь на объекты реплики доступности.
Выполнить на экземпляре сервера, где будет размещена исходная первичная реплика.
Присоединить вторичную реплику к группе доступности Join-SqlAvailabilityGroup Выполнить на каждом экземпляре сервера, размещающем вторичную реплику.
Подготовьте базу данных-получатель Backup-SqlDatabase и Restore-SqlDatabase Создайте резервные копии на экземпляре сервера, размещающем первичную реплику.

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

Примечание

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

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

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

Примечание

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

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

  2. Создайте объект реплики доступности в памяти для первичной реплики.

  3. Создайте объект реплики доступности в памяти для каждой вторичной реплики.

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

    Примечание

    Максимальная длина имени группы доступности составляет 128 символов.

  5. Сведения о присоединении новой вторичной реплики к группе доступности см. в статье Присоединение вторичной реплики к группе доступности (SQL Server).

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

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

  8. (Необязательно) С помощью команды Windows dir проверьте содержимое новой группы доступности.

Примечание

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

Пример

В следующем примере использования PowerShell создается и настраивается простая группа доступности с именем <myAvailabilityGroup> с двумя репликами доступности и с одной базой данных доступности. Пример.

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

  2. Выполняется восстановление базы данных <myDatabase> и ее журнала транзакций с использованием параметра -NoRecovery .

  3. Создается представление первичной реплики в памяти, которая будет размещена локальным экземпляром SQL Server (с именем PrimaryComputer\Instance).

  4. Создается представление вторичной реплики в памяти, которая будет размещена локальным экземпляром SQL Server (с именем SecondaryComputer\Instance).

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

  6. Вторичная реплика присоединяется к группе доступности.

  7. База данных-получатель присоединяется к группе доступности.

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

Настройка экземпляра сервера для групп доступности AlwaysOn

Настройка свойств группы доступности и реплики

Завершение настройки группы доступности

Другие способы создания группы доступности

Устранение неполадок с конфигурацией групп доступности AlwaysOn

См. также:

Конечная точка зеркального отображения базы данных (SQL Server)
Обзор групп доступности AlwaysOn (SQL Server)