Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: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.
Перейдите в каталог (cd) экземпляра сервера, на котором размещается первичная реплика.
Создайте объект реплики доступности в памяти для первичной реплики.
Создайте в оперативной памяти объект реплики доступности для каждой из вторичных реплик.
Создайте группу доступности.
Примечание.
Максимальная длина имени группы доступности составляет 128 символов.
Сведения о присоединении новой вторичной реплики к группе доступности см. в статье Присоединение вторичной реплики к группе доступности (SQL Server).
Для каждой базы данных в группе доступности создайте вторичную базу данных, восстановив последние резервные копии первичной базы данных с использованием RESTORE WITH NORECOVERY.
Присоедините каждую новую вторичную базу данных к группе доступности; см. Присоединение вторичной реплики к группе доступности (SQL Server).
(Необязательно) С помощью команды Windows dir проверьте содержимое новой группы доступности.
Примечание.
Если учетные записи служб SQL Server экземпляров сервера работают под разными учетными записями доменных пользователей, на каждом экземпляре сервера создайте учетную запись входа для другого экземпляра сервера и предоставьте этой учетной записи входа разрешение CONNECT для локальной конечной точки зеркального отображения базы данных.
Пример
В следующем примере использования PowerShell создается и настраивается простая группа доступности с именем <myAvailabilityGroup> с двумя репликами доступности и с одной базой данных доступности. Пример.
Выполняется резервное копирование базы данных
<myDatabase>и ее журнала транзакций.Выполняется восстановление базы данных
<myDatabase>и ее журнала транзакций с использованием параметра -NoRecovery .Создает в памяти представление основной реплики, которая будет размещена локальным экземпляром SQL Server (с именем
PrimaryComputer\Instance).Создает в памяти представление вторичной реплики, которая будет размещена экземпляром SQL Server (с именем
SecondaryComputer\Instance).Создается группа доступности с именем
<myAvailabilityGroup>.Присоединяет вторичную реплику к группе доступности.
Присоединяет вторичную базу данных к группе доступности.
# 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
Настройка свойств группы доступности и реплики
Изменение режима доступности реплики доступности (SQL Server)
Изменение режима отработки отказа для реплики доступности (SQL Server)
Создание или настройка прослушивателя группы доступности (SQL Server)
Укажите URL-адрес конечной точки при добавлении или изменении реплики доступности (SQL Server)
Настройка резервного копирования на репликах доступности (SQL Server)
Настройка доступа только для чтения в реплике доступности (SQL Server)
Настройка маршрутизации только для чтения в группе доступности (SQL Server)
Изменение периода времени ожидания сеанса для реплики доступности (SQL Server)
Завершение настройки группы доступности
Присоединение вторичной реплики к группе доступности (SQL Server)
Подготовка вторичной базы данных для группы доступности вручную (SQL Server)
Присоединение вторичной базы данных к группе доступности (SQL Server)
Создание или настройка прослушивателя группы доступности (SQL Server)
Другие способы создания группы доступности
Использование мастера групп доступности (SQL Server Management Studio)
Использование диалогового окна "Создание группы доступности" (SQL Server Management Studio)
Устранение неполадок с конфигурацией групп доступности AlwaysOn
Поиск и устранение неисправностей конфигурации групп доступности Always On (SQL Server)
Устранение неполадок при сбое операции добавления файла (группы доступности Always On)
Связанные материалы
Блоги
Обучающая серия AlwaysOn — HADRON: использование рабочего пула для баз данных с поддержкой HADRON
Технические документы
См. также
Конечная точка зеркального отображения базы данных (SQL Server)
Обзор групп доступности Always On (SQL Server)