Share via


可用性グループの作成 (SQL Server PowerShell)

このトピックでは、SQL Server 2012 の AlwaysOn 可用性グループを PowerShell コマンドレットで作成および構成する方法について説明します。 可用性グループは、1 つのまとまりとしてフェールオーバーする一連のユーザー データベースと、フェールオーバーをサポートする一連のフェールオーバー パートナー (可用性レプリカ) を定義します。

注意

可用性グループの概要については、「AlwaysOn 可用性グループの概要 (SQL Server)」を参照してください。

  • 作業を開始する準備: 

    前提条件、制限事項、および推奨事項

    セキュリティ

    作業の概要および対応する PowerShell コマンドレット

    SQL Server PowerShell プロバイダーを設定して使用するには

  • 以下を使用して可用性グループを作成および構成するには: PowerShell を使用した可用性グループの作成と構成

  • **例: **PowerShell による可用性グループの作成

  • 関連タスク

  • 関連コンテンツ

注意

PowerShell のコマンドレットの代わりに、可用性グループの作成ウィザードや Transact-SQL を使用する方法もあります。 詳細については、「[新しい可用性グループ] ダイアログ ボックスの使用 (SQL Server Management Studio)」または「可用性グループの作成 (Transact-SQL)」を参照してください。

作業を開始する準備

可用性グループを初めて作成する場合は、あらかじめこのセクションに目を通しておくことを強くお勧めします。

前提条件、制限事項、および推奨事項

  • 可用性グループを作成する前に、SQL Server の各ホスト インスタンスが、同じ Windows Server Failover Clustering (WSFC) フェールオーバー クラスタリングのそれぞれ異なる WSFC ノードに存在していることを確認します。 また、使用するサーバー インスタンスが、他のサーバー インスタンスの前提条件を満たしていることと、他の AlwaysOn 可用性グループ の要件がすべて満たされていること、さらに、自分自身も推奨事項を認識していることを確認してください。 詳細については、「AlwaysOn 可用性グループの前提条件、制限事項、および推奨事項 (SQL Server)」をお読みいただくよう強くお勧めします。

[トップに戻る] リンクで使用される矢印アイコン[Top]

セキュリティ

権限

sysadmin 固定サーバー ロールのメンバーシップと、CREATE AVAILABILITY GROUP サーバー権限、ALTER ANY AVAILABILITY GROUP 権限、CONTROL SERVER 権限のいずれかが必要です。

[トップに戻る] リンクで使用される矢印アイコン[Top]

作業の概要および対応する PowerShell コマンドレット

次の表は、可用性グループの構成に伴う基本的な作業の一覧です。一覧には PowerShell コマンドレットによってサポートされる作業が示されています。 AlwaysOn 可用性グループ に関連したこれらの作業は、この表に示されている順に実行する必要があります。

作業

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

セカンダリ レプリカをホストする各サーバー インスタンスで実行します。

* ここに記載されたサーバー インスタンスを対象として作業を実行します。作業対象を変更するには、ディレクトリ変更 (cd) コマンドを使用します。

[トップに戻る] リンクで使用される矢印アイコン[Top]

SQL Server PowerShell プロバイダーを設定して使用するには

[トップに戻る] リンクで使用される矢印アイコン[Top]

PowerShell を使用した可用性グループの作成と構成

注意

特定のコマンドレットの構文や例を表示するには、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 コマンドを使用し、新しい可用性グループの内容を確認します。

注意

2 つのサーバー インスタンスの SQL Server サービス アカウントが、互いに異なるドメイン ユーザー アカウントで実行されている場合、それぞれのサーバー インスタンス上に、相手のサーバー インスタンス用のログインを作成し、このログイン権限に、ローカルのデータベース ミラーリング エンドポイントの CONNECT アクセス権を付与します。

[トップに戻る] リンクで使用される矢印アイコン[Top]

例 :PowerShell による可用性グループの作成

以下の PowerShell スクリプトは、2 つの可用性レプリカと 1 つの可用性データベースから成る MyAG という名前の単純な可用性グループを作成、構成する例です。 この例では、次の処理を実行します。

  1. MyDatabase とそのトランザクション ログをバックアップします。

  2. MyDatabase とそのトランザクション ログを -NoRecovery オプションを使用して復元します。

  3. SQL Server のローカル インスタンス (PrimaryComputer\Instance) によってホストされるプライマリ レプリカのメモリ内表現を作成します。

  4. SQL Server のインスタンス (SecondaryComputer\Instance) によってホストされるセカンダリ レプリカのメモリ内表現を作成します。

  5. MyAG という名前の可用性グループを作成します。

  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 11 `
    -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 11 `
    -AsTemplate

# Create the availability group
New-SqlAvailabilityGroup `
    -Name "MyAG" `
    -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 "MyAG"

# Join the secondary database to the availability group.
Add-SqlAvailabilityDatabase -Path "SQLSERVER:\SQL\SecondaryComputer\Instance\AvailabilityGroups\MyAG" -Database "MyDatabase"

関連タスク

AlwaysOn 可用性グループのサーバー インスタンスを構成するには

可用性グループおよびレプリカのプロパティを構成するには

可用性グループの構成を完了するには

別の方法で可用性グループを作成する

AlwaysOn 可用性グループ構成のトラブルシューティングを行うには

[トップに戻る] リンクで使用される矢印アイコン[Top]

関連コンテンツ

[トップに戻る] リンクで使用される矢印アイコン[Top]

関連項目

概念

データベース ミラーリング エンドポイント (SQL Server)

AlwaysOn 可用性グループの概要 (SQL Server)