PowerShell による Always On 可用性グループの作成Create an Always On availability group using PowerShell

適用対象: ○SQL Server XAzure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

このトピックでは、 SQL Server 2017SQL Server 2017の Always On 可用性グループを PowerShell コマンドレットで作成および構成する方法について説明します。This topic describes how to use PowerShell cmdlets to create and configure an Always On availability group by using PowerShell in SQL Server 2017SQL Server 2017. 可用性グループ は、1 つのまとまりとしてフェールオーバーする一連のユーザー データベースと、フェールオーバーをサポートする一連のフェールオーバー パートナー ( 可用性レプリカ) を定義します。An availability group defines a set of user databases that will fail over as a single unit and a set of failover partners, known as availability replicas, which support failover.

注意

可用性グループの概要については、「 Always On 可用性グループの概要 (SQL Server)の Always On 可用性グループを PowerShell コマンドレットで作成および構成する方法について説明します。For an introduction to availability groups, see Overview of Always On Availability Groups (SQL Server).

注意

PowerShell のコマンドレットの代わりに、可用性グループの作成ウィザードや Transact-SQLTransact-SQLを使用する方法もあります。As an alternative to using PowerShell cmdlets, you can use the Create Availability Group wizard or Transact-SQLTransact-SQL. 詳細については、「 [新しい可用性グループ] ダイアログ ボックスの使用 (SQL Server Management Studio) 」または「 可用性グループの作成 (Transact-SQL)の Always On 可用性グループを PowerShell コマンドレットで作成および構成する方法について説明します。For more information, see Use the New Availability Group Dialog Box (SQL Server Management Studio) or Create an Availability Group (Transact-SQL).

はじめにBefore You Begin

可用性グループを初めて作成する場合は、あらかじめこのセクションに目を通しておくことを強くお勧めします。We strongly recommend that you read this section before attempting to create your first availability group.

前提条件、制限事項、および推奨事項Prerequisites, Restrictions, and Recommendations

  • 可用性グループを作成する前に、 SQL ServerSQL Server の各ホスト インスタンスが、同じ Windows Server Failover Clustering (WSFC) フェールオーバー クラスタリングのそれぞれ異なる WSFC ノードに存在していることを確認します。Before creating an availability group, verify that the host instances of SQL ServerSQL Server each resides on a different Windows Server Failover Clustering (WSFC) node of a single WSFC failover cluster. また、使用するサーバー インスタンスが、他のサーバー インスタンスの前提条件を満たしていることと、他の Always On 可用性グループAlways On availability groupsの要件がすべて満たされていること、さらに、自分自身も推奨事項を認識していることを確認してください。Also, verify that your server instances met the other server-instance prerequisites and that all of the other Always On 可用性グループAlways On availability groups requirements are meet and that you are aware of the recommendations. 詳細については、「Always On 可用性グループの前提条件、制限事項、および推奨事項 (SQL Server)」を参照することを強くお勧めします。For more information, we strongly recommend that you read Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server).

セキュリティSecurity

PermissionsPermissions

sysadmin 固定サーバー ロールのメンバーシップと、CREATE AVAILABILITY GROUP サーバー権限、ALTER ANY AVAILABILITY GROUP 権限、CONTROL SERVER 権限のいずれかが必要です。Requires membership in the sysadmin fixed server role and either CREATE AVAILABILITY GROUP server permission, ALTER ANY AVAILABILITY GROUP permission, or CONTROL SERVER permission.

作業の概要および対応する PowerShell コマンドレットSummary of Tasks and Corresponding PowerShell Cmdlets

次の表は、可用性グループの構成に伴う基本的な作業の一覧です。一覧には PowerShell コマンドレットによってサポートされる作業が示されています。The following table lists the basic tasks involved in configuring an availability group and indicates those that are supported by PowerShell cmdlets. Always On 可用性グループAlways On availability groups に関連したこれらの作業は、この表に示されている順に実行する必要があります。The Always On 可用性グループAlways On availability groups tasks must be performed in the sequence in which they are presented in the table.

タスクTask PowerShell コマンドレット (利用可能な場合) または Transact SQL ステートメントPowerShell Cmdlets (if Available) or Transact-SQL Statement 作業の実行場所 *Where to Perform Task *
データベース ミラーリング エンドポイントを作成する ( SQL ServerSQL Server インスタンスごとに 1 回)Create database mirroring endpoint (once per SQL ServerSQL Server instance) New-SqlHadrEndPointNew-SqlHadrEndPoint データベース ミラーリング エンドポイントが欠落している各サーバー インスタンスで実行します。Execute on each server instance that lacks database mirroring endpoint.

注:既存のデータベース ミラーリング エンドポイントに変更を加えるには、Set-SqlHadrEndpoint を使用します。Note: To alter an existing database mirroring endpoint, use Set-SqlHadrEndpoint.
可用性グループを作成するCreate availability group まず、 New-SqlAvailabilityReplica コマンドレットに -AsTemplate パラメーターを指定し、可用性グループに追加する予定の 2 つの可用性レプリカのそれぞれについて、インメモリの可用性レプリカ オブジェクトを作成します。First, use the New-SqlAvailabilityReplica cmdlet with the -AsTemplate parameter to create an in-memory availability-replica object for each of the two availability replicas that you plan to include in the availability group.

次に、 New-SqlAvailabilityGroup コマンドレットを使用し、可用性レプリカ オブジェクトを参照して、可用性グループを作成します。Then, create the availability group by using the New-SqlAvailabilityGroup cmdlet and referencing your availability-replica objects.
初期プライマリ レプリカをホストするサーバー インスタンスで実行します。Execute on the server instance that is to host the initial primary replica.
セカンダリ レプリカを可用性グループに参加させるJoin secondary replica to availability group Join-SqlAvailabilityGroupJoin-SqlAvailabilityGroup セカンダリ レプリカをホストする各サーバー インスタンスで実行します。Execute on each server instance that is hosts a secondary replica.
セカンダリ データベースを準備するPrepare the secondary database Backup-SqlDatabaseRestore-SqlDatabaseBackup-SqlDatabase and Restore-SqlDatabase プライマリ レプリカをホストするサーバー インスタンスでバックアップを作成します。Create backups on the server instance that hosts the primary replica.

セカンダリ レプリカをホストする各サーバー インスタンス上で、 NoRecovery 復元パラメーターを使用してバックアップを復元します。Restore backups on each server instance that hosts a secondary replica, using the NoRecovery restore parameter. プライマリ レプリカをホストするコンピューターとターゲット セカンダリ レプリカをホストするコンピューターとでファイル パスが異なる場合は、 RelocateFile 復元パラメーターも使用します。If the file paths differ between the computers that host the primary replica and the target secondary replica, also use the RelocateFile restore parameter.
各セカンダリ データベースを可用性グループに参加させてデータ同期を開始するStart data synchronization by joining each secondary database to availability group Add-SqlAvailabilityDatabaseAdd-SqlAvailabilityDatabase セカンダリ レプリカをホストする各サーバー インスタンスで実行します。Execute on each server instance that hosts a secondary replica.

*ここに記載されたサーバー インスタンスを対象として作業を実行します。作業対象を変更するには、ディレクトリ変更 (cd) コマンドを使用します。*To perform a given task, change directory (cd) to the indicated server instance or instances.

PowerShell を使用した可用性グループの作成と構成Using PowerShell to Create and Configure an Availability Group

注意

特定のコマンドレットの構文や例を表示するには、 PowerShell 環境で Get-Help SQL ServerSQL Server コマンドレットを使用します。To view the syntax and an example of a given cmdlet, use the Get-Help cmdlet in the SQL ServerSQL Server PowerShell environment. 詳細については、「 Get Help SQL Server PowerShell」を参照してください。For more information, see Get Help SQL Server PowerShell.

  1. プライマリ レプリカをホストするサーバー インスタンスにディレクトリを変更 (cd) します。Change directory (cd) to the server instance that is to host the primary replica.

  2. プライマリ レプリカのインメモリの可用性レプリカ オブジェクトを作成します。Create an in-memory availability-replica object for the primary replica.

  3. セカンダリ レプリカごとにインメモリの可用性レプリカ オブジェクトを作成します。Create an in-memory availability-replica object for each of the secondary replicas.

  4. 可用性グループを作成します。Create the availability group.

    注意

    可用性グループ名の最大文字数は 128 文字です。The maximum length for an availability group name is 128 characters.

  5. 新しいセカンダリ レプリカを可用性グループに参加させます。Join the new secondary replica to the availability group. 詳細については、「 可用性グループへのセカンダリ レプリカの参加 (SQL Server)、または PowerShell を使用して、既存の AlwaysOn 可用性グループにセカンダリ レプリカを追加する方法について説明します。For more information, see Join a Secondary Replica to an Availability Group (SQL Server).

  6. 可用性グループ内の各データベースについて、セカンダリ データベースを作成します。これは、プライマリ データベースの最新のバックアップを、RESTORE WITH NORECOVERY で復元することによって行います。For each database in the availability group, create a secondary database by restoring recent backups of the primary database, using RESTORE WITH NORECOVERY.

  7. 新しいセカンダリ データベースをすべて可用性グループに参加させます。Join every new secondary database to the availability group. 詳細については、「 可用性グループへのセカンダリ レプリカの参加 (SQL Server)の Always On 可用性グループを PowerShell コマンドレットで作成および構成する方法について説明します。For more information, see Join a Secondary Replica to an Availability Group (SQL Server).

  8. 必要に応じて、Windows の dir コマンドを使用し、新しい可用性グループの内容を確認します。Optionally, use the Windows dir command to verify the contents of the new availability group.

注意

複数のサーバー インスタンスの SQL ServerSQL Server サービス アカウントが、それぞれ異なるドメイン ユーザー アカウントで実行されている場合、それぞれのサーバー インスタンス上に、もう一方のサーバー インスタンス用のログインを作成し、そのログインにローカルのデータベース ミラーリング エンドポイントへの CONNECT 権限を付与します。If the SQL ServerSQL Server service accounts of the server instances run under different domain user accounts, on each server instance, create a login for the other server instance and grant this login CONNECT permission to the local database mirroring endpoint.

例:PowerShell による可用性グループの作成Example: Using PowerShell to Create an Availability Group

以下の PowerShell スクリプトは、2 つの可用性レプリカと 1 つの可用性データベースから成る MyAG という名前の単純な可用性グループを作成、構成する例です。The following PowerShell example creates and configures a simple availability group named MyAG with two availability replicas and one availability database. この例では、次の処理を実行します。The example:

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

  2. MyDatabase とそのトランザクション ログを -NoRecovery オプションを使用して復元します。Restores MyDatabase and its transaction log, using the -NoRecovery option.

  3. SQL ServerSQL Server のローカル インスタンス (名前は PrimaryComputer\Instance) によってホストされるプライマリ レプリカのメモリ内表現を作成します。Creates an in-memory representation of the primary replica, which will be hosted by the local instance of SQL ServerSQL Server (named PrimaryComputer\Instance).

  4. SQL ServerSQL Server のインスタンス (名前は SecondaryComputer\Instance) によってホストされるセカンダリ レプリカのメモリ内表現を作成します。Creates an in-memory representation of the secondary replica, which will be hosted by an instance of SQL ServerSQL Server (named SecondaryComputer\Instance).

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

  6. セカンダリ レプリカを可用性グループに参加させます。Joins the secondary replica to the availability group.

  7. セカンダリ データベースを可用性グループに参加させます。Joins the secondary database to the availability group.

# 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 "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"  

関連タスクRelated Tasks

Always On 可用性グループのサーバー インスタンスを構成するにはTo configure a server instance for Always On Availability Groups

可用性グループおよびレプリカのプロパティを構成するにはTo configure availability group and replica properties

可用性グループの構成を完了するにはTo complete availability group configuration

別の方法で可用性グループを作成するAlternative ways to create an availability group

Always On 可用性グループの構成のトラブルシューティング方法To troubleshoot Always On Availability Groups configuration

関連コンテンツRelated Content

参照See Also

データベース ミラーリング エンドポイント (SQL Server) The Database Mirroring Endpoint (SQL Server)
Always On 可用性グループの概要 (SQL Server)Overview of Always On Availability Groups (SQL Server)