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

Область применения: SQL Server

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

Примечание.

Базовые сведения о группах доступности см. в статье Что такое группа доступности Always On?.

Примечание.

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

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

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

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

Разрешения

Требуется членство в фиксированной роли сервера 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)
Обзор групп доступности Always On (SQL Server)