適用対象:SQL Server
このトピックでは、 SQL Serverの Always On 可用性グループを PowerShell コマンドレットで作成および構成する方法について説明します。 可用性グループ は、1 つのまとまりとしてフェールオーバーする一連のユーザー データベースと、フェールオーバーをサポートする一連のフェールオーバー パートナー ( 可用性レプリカ) を定義します。
注
可用性グループの概要については、「Always On 可用性グループとは (SQL Server)」を参照してください。
注
PowerShell のコマンドレットの代わりに、可用性グループの作成ウィザードや Transact-SQL を使用する方法もあります。 詳細については、「[新しい可用性グループ] ダイアログ ボックスの使用 (SQL Server Management Studio)」または「可用性グループの作成 (Transact-SQL)」を参照してください。
はじめに
前提条件、制限事項、および推奨事項
- 可用性グループを作成する前に、 SQL Server の各ホスト インスタンスが、同じ Windows Server Failover Clustering (WSFC) フェールオーバー クラスタリングのそれぞれ異なる WSFC ノードに存在していることを確認します。 また、使用するサーバー インスタンスが、他のサーバー インスタンスの前提条件を満たしていることと、他の Always On 可用性グループの要件がすべて満たされていること、さらに、自分自身も推奨事項を認識していることを確認してください。 詳細については、「Always On 可用性グループの前提条件、制限事項、および推奨事項 (SQL Server)」を参照することを強くお勧めします。
アクセス許可
sysadmin 固定サーバー ロールのメンバーシップと、CREATE AVAILABILITY GROUP サーバー権限、ALTER ANY AVAILABILITY GROUP 権限、または CONTROL SERVER 権限が必要です。
PowerShell を使用した可用性グループの作成と構成
次の表は、可用性グループの構成に伴う基本的な作業の一覧です。一覧には PowerShell コマンドレットによってサポートされる作業が示されています。 Always On 可用性グループ に関連したこれらの作業は、この表に示されている順に実行する必要があります。
| タスク | PowerShell コマンドレット (利用可能な場合) または Transact SQL ステートメント | タスクを実行する場所 |
|---|---|---|
| データベース ミラーリング エンドポイントを作成する ( SQL Server インスタンスごとに 1 回) | New-SqlHadrEndPoint | データベース ミラーリング エンドポイントが欠落している各サーバー インスタンスで実行します。 既存のデータベース ミラーリング エンドポイントに変更を加えるには、Set-SqlHadrEndpoint を使用します。 |
| 可用性グループを作成する | まず、 New-SqlAvailabilityReplica コマンドレットに -AsTemplate パラメーターを指定し、可用性グループに追加する予定の 2 つの可用性レプリカのそれぞれについて、インメモリの可用性レプリカ オブジェクトを作成します。 次に、 New-SqlAvailabilityGroup コマンドレットを使用し、可用性レプリカ オブジェクトを参照して、可用性グループを作成します。 |
初期プライマリ レプリカをホストするサーバー インスタンスで実行します。 |
| セカンダリ レプリカを可用性グループに参加させる | Join-SqlAvailabilityGroup | セカンダリ レプリカをホストする各サーバー インスタンスで実行します。 |
| セカンダリ データベースを準備する | Backup-SqlDatabase と Restore-SqlDatabase | プライマリ レプリカをホストするサーバー インスタンスでバックアップを作成します。 セカンダリ レプリカをホストする各サーバー インスタンス上で、 NoRecovery 復元パラメーターを使用してバックアップを復元します。 プライマリ レプリカをホストするコンピューターとターゲット セカンダリ レプリカをホストするコンピューターとでファイル パスが異なる場合は、 RelocateFile 復元パラメーターも使用します。 |
| 各セカンダリ データベースを可用性グループに参加させてデータ同期を開始する | Add-SqlAvailabilityDatabase | セカンダリ レプリカをホストする各サーバー インスタンスで実行します。 |
注
特定のタスクを実行するには、示されているサーバー インスタンス (1 つまたは複数) にディレクトリを変更します (cd)。
PowerShell の使用
SQL Server PowerShell プロバイダーを設定して使用します。
注
特定のコマンドレットの構文や例を表示するには、 PowerShell 環境で Get-Help SQL Server コマンドレットを使用します。 詳細については、「 Get Help SQL Server PowerShell」を参照してください。
プライマリ レプリカをホストするサーバー インスタンスにディレクトリを変更 (cd) します。
プライマリ レプリカ用に、可用性レプリカのインメモリ オブジェクトを作成します。
セカンダリ レプリカごとにインメモリの可用性レプリカ オブジェクトを作成します。
可用性グループを作成します。
注
可用性グループ名の最大文字数は 128 文字です。
新しいセカンダリ レプリカを、可用性グループに参加させます。可用性グループへのセカンダリ レプリカの参加 (SQL Server) に関する記事を参照してください。
可用性グループ内のデータベースごとに、 WITH NORECOVERY を使用して、プライマリ データベースの最近のバックアップを復元してセカンダリ データベースを作成します。
すべての新しいセカンダリ データベースを、可用性グループに参加させます。可用性グループへのセカンダリ レプリカの参加 (SQL Server) に関する記事を参照してください。
(省略可能) Windows の dir コマンドを使用して、新しい可用性グループの内容を確認します。
注
複数のサーバー インスタンスの SQL Server サービス アカウントが、それぞれ異なるドメイン ユーザー アカウントで実行されている場合、それぞれのサーバー インスタンス上に、もう一方のサーバー インスタンス用のログインを作成し、そのログインにローカルのデータベース ミラーリング エンドポイントへの CONNECT 権限を付与します。
例
以下の PowerShell スクリプトは、2 つの可用性レプリカと 1 つの可用性データベースから成る <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 可用性グループのサーバー インスタンスを構成するには
可用性グループおよびレプリカのプロパティを構成するには
可用性グループの構成を完了するには
別の方法で可用性グループを作成する
Always On 可用性グループ構成のトラブルシューティング
関連コンテンツ
ブログ:
AlwaysOn - HADRON 学習シリーズ: HADRON 対応データベースのワーカー プールの使用
SQL Server PowerShell を使用した Always On の構成
SQL Server Always On チームのブログ: SQL Server Always On チームのオフィシャル ブログ
ホワイト ペーパー:
参照
データベース ミラーリング エンドポイント (SQL Server)
Always On 可用性グループの概要 (SQL Server)