Использование 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. Кроме того, убедитесь, что экземпляры сервера соответствуют другим предварительным требованиям к экземплярам сервера, что все остальные требования для групп доступности Always On выполнены и что вы ознакомлены с рекомендациями. Для получения дополнительных сведений настоятельно рекомендуется изучить статью Предварительные требования, ограничения и рекомендации для групп доступности 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>"  

Связанные задачи

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

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

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

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

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

Связанные материалы

См. также

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