SQL Server AlwaysOn – это мощная функция, которая обеспечивает высокую доступность и резервное копирование для баз данных SQL Server. Хотя для управления AlwaysOn можно использовать SQL Server Management Studio и T-SQL, в SQL Server Denali CTP 3 было представлено 25 командлетов, которые предлагают полное покрытие для создания, настройки и администрирования функции AlwaysOn. В этой статье блога мы рассмотрим, как использовать PowerShell для выполнения различных задач по управлению AlwaysOn.
Начало работы
Для начала работы с PowerShell и AlwaysOn вам понадобится простой кластер Windows 2008 R2 с двумя отдельными установками SQL Server. Для тестирования вы можете настроить двухузловой кластер отказоустойчивости Windows Server с двумя серверами, работающими на операционной системе Windows Server 2008 R2 Enterprise Edition. Рекомендуется использовать двухузловой кластер без диска кворума и настроить общую сетевую папку, к которой имеет доступ учетная запись службы кластера.
Настройка кластера отказоустойчивости Windows
Перед настройкой AlwaysOn необходимо добавить функцию управления кластером отказоустойчивости в оба узла кластера. Это можно сделать с помощью команд PowerShell:
import-module ServerManager
Add-WindowsFeature -Name Failover-Clustering
После добавления функции вы можете создать кластер, выполнив следующие команды PowerShell на одном из узлов:
import-module FailoverClusters
new-cluster clusterxm -Node node1, node2 -StaticAddress 192.168.1.70 -NoStorage
После создания кластера вы можете установить SQL Server на обоих узлах в качестве отдельных экземпляров. Важно установить учетную запись службы SQL Server в доменную учетную запись. Вам также понадобится база данных в режиме полного восстановления, которая еще не является частью группы доступности AlwaysOn и была резервным копированием. Для тестирования вы можете использовать образец базы данных pubs.
Использование PowerShell для создания и настройки AlwaysOn
После выполнения предварительных требований вы можете использовать PowerShell для создания и настройки AlwaysOn. Вот несколько примеров команд PowerShell:
# Включение службы HADRService на обоих узлах
Enable-SqlHADRService -ServerInstance NODE1 -Force
Enable-SqlHADRService -ServerInstance NODE2 -Force
# Настройка конечных точек HADR
cd SQLSERVER:\SQL\NODE1\DEFAULT\Endpoints
New-SqlHADREndpoint -Name "hadr_endpoint" -Port 5022
dir | Set-SqlHADREndpoint -State "Started"
cd SQLSERVER:\SQL\NODE2\DEFAULT\Endpoints
New-SqlHADREndpoint -Name "hadr_endpoint" -Port 5022
dir | Set-SqlHADREndpoint -State "Started"
# Резервное копирование базы данных и журнала транзакций
cd SQLSERVER:\SQL\NODE1\DEFAULT
Backup-SqlDatabase pubs \\NODE1\sqlrec\pubs.bak
Backup-SqlDatabase pubs \\NODE1\sqlrec\pubs.trn -BackupAction Log
# Создание реплик
$replica1 = New-SqlAvailabilityReplica -Name NODE1 -EndpointURL "TCP://NODE1:5022" -AsTemplate -AvailabilityMode SynchronousCommit -FailoverMode Automatic -ConnectionModeInSecondaryRole AllowAllConnections
$replica2 = New-SqlAvailabilityReplica -Name NODE2 -EndpointURL "TCP://NODE2:5022" -AsTemplate -AvailabilityMode SynchronousCommit -FailoverMode Automatic -ConnectionModeInSecondaryRole AllowAllConnections
# Создание группы доступности
New-SqlAvailabilityGroup AVGPubs -AvailabilityReplica ($replica1, $replica2) -Database pubs
# Присоединение группы доступности на вторичном узле
cd SQLSERVER:\SQL\NODE2\DEFAULT
Join-SqlAvailabilityGroup -Name AVGPubs
# Восстановление базы данных и журнала транзакций на вторичном узле
cd SQLSERVER:\SQL\NODE2\DEFAULT
Restore-SqlDatabase pubs \\NODE1\sqlrec\pubs.bak -NoRecovery
Restore-SqlDatabase pubs \\NODE1\sqlrec\pubs.trn -RestoreAction "Log" -NoRecovery
# Добавление базы данных в группу доступности на вторичном узле
cd SQLSERVER:\SQL\NODE2\DEFAULT\AvailabilityGroups\AVGPubs\AvailabilityDatabases
dir | Add-SqlAvailabilityDatabase -Database pubs
# Создание слушателя группы доступности
cd SQLSERVER:\
New-SqlAvailabilityGroupListener -Name Network1 -StaticIp 192.168.1.73/255.255.255.0 -path SQLSERVER:\SQL\NODE1\DEFAULT\AvailabilityGroups\AVGPubs
# Проверка групп доступности
cd SQLSERVER:\SQL\NODE1\DEFAULT\AvailabilityGroups\AVGPubs
dir | select -ExpandProperty AvailabilityReplicas | select name, ConnectionModeInPrimaryRole, ConnectionModeInSecondaryRole
# Ручное переключение группы доступности
cd SQLSERVER:\SQL\NODE2\DEFAULT\AvailabilityGroups\AVGPubs
Switch-SqlAvailabilityGroup
# Приостановка и возобновление группы доступности
cd SQLSERVER:\SQL\NODE1\DEFAULT\AvailabilityGroups\AVGPubs\AvailabilityDatabases
dir | Suspend-SqlAvailabilityDatabase
dir | Resume-SqlAvailabilityDatabase
Это всего лишь несколько примеров командлетов PowerShell, доступных для управления AlwaysOn. Используя PowerShell, вы можете автоматизировать и упростить настройку и администрирование вашей среды AlwaysOn.
Вывод
PowerShell предоставляет мощный и эффективный способ управления SQL Server AlwaysOn. С помощью доступных командлетов вы легко можете создавать, настраивать и администрировать вашу среду AlwaysOn. Используя PowerShell, вы можете автоматизировать повторяющиеся задачи и обеспечить согласованность в вашей конфигурации. Попробуйте PowerShell и посмотрите, как он может упростить управление SQL Server AlwaysOn.