Published on

November 24, 2011

Использование PowerShell для управления SQL Server AlwaysOn

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.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.