Always On 可用性グループに柔軟な自動フェールオーバー ポリシーを構成するConfigure a flexible automatic failover policy for an Always On availability group

適用対象: ○SQL Server (Windows のみ)×Azure SQL Database ×Azure SQL Data Warehouse ×Parallel Data Warehouse APPLIES TO: yesSQL Server (Windows only) noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

このトピックでは、 Transact-SQLTransact-SQLSQL Server 2017SQL Server 2017または PowerShell を使用して AlwaysOn 可用性グループの柔軟なフェールオーバー ポリシーを構成する方法について説明します。This topic describes how to configure the flexible failover policy for an Always On availability group by using Transact-SQLTransact-SQL or PowerShell in SQL Server 2017SQL Server 2017. 柔軟なフェールオーバー ポリシーを使用すると、可用性グループの自動フェールオーバーを実行する条件をきめ細かく制御できます。A flexible failover policy provides granular control over the conditions that cause automatic failover for an availability group. 自動フェールオーバーを実行するエラー条件および正常性チェックの頻度を変更することで、自動フェールオーバーの確率値を増減して高可用性の SLA をサポートできます。By changing the failure conditions that trigger an automatic failover and the frequency of health checks, you can increase or decrease the likelihood of an automatic failover to support your SLA for high availability.

> [!NOTE]  
>  The flexible failover policy of an availability group cannot be configured by using [!INCLUDE[ssManStudioFull](../../../includes/ssmanstudiofull-md.md)].  

自動フェールオーバーの制限Limitations on Automatic Failovers

  • 自動フェールオーバーが行われるには、現在のプライマリ レプリカおよび 1 つのセカンダリ レプリカが自動フェールオーバーを使用する同期コミット可用性モード用に構成され、セカンダリ レプリカがプライマリ レプリカと同期している必要があります。For an automatic failover to occur, the current primary replica and one secondary replica must be configured for synchronous-commit availability mode with automatic failover and the secondary replica must be synchronized with the primary replica.

  • 自動フェールオーバーでサポートされるレプリカは 3 つだけです。Only three replicas are supported for automatic failover.

  • WSFC クラスターでは、可用性グループが WSFC のエラーしきい値を超えると、自動フェールオーバーはその可用性グループに対して実行されません。If an availability group exceeds its WSFC failure threshold, the WSFC cluster will not attempt an automatic failover for the availability group. また、クラスター管理者が失敗したリソース グループを手動でオンラインにするか、データベース管理者が可用性グループの手動フェールオーバーを実行するまで、可用性グループの WSFC リソース グループはエラー状態のままになります。Furthermore, the WSFC resource group of the availability group remains in a failed state until either the cluster administrator manually brings the failed resource group online or the database administrator performs a manual failover of the availability group. WSFC のエラーしきい値 は、特定の期間に可用性グループに対して許容されるエラーの最大数として定義されています。The WSFC failure threshold is defined as the maximum number of failures supported for the availability group during a given time period. 既定の期間は 6 時間であり、この期間のエラーの最大数の既定値は n-1 です ( n は WSFC ノードの数です)。The default time period is six hours, and the default value for the maximum number of failures during this period is n-1, where n is the number of WSFC nodes. 特定の可用性グループのエラーしきい値を変更するには、WSFC フェールオーバー マネージャー コンソールを使用します。To change the failure-threshold values for a given availability group, use the WSFC Failover Manager Console.

前提条件Prerequisites

  • プライマリ レプリカをホストするサーバー インスタンスに接続されている必要があります。You must be connected to the server instance that hosts the primary replica.

PermissionsPermissions

タスクTask アクセス許可Permissions
新しい可用性グループの柔軟なフェールオーバー ポリシーを構成するTo configure the flexible failover policy for a new availability group 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.
既存の可用性グループのポリシーを変更するTo modify the policy of an existing availability group 可用性グループの ALTER AVAILABILITY GROUP 権限、CONTROL AVAILABILITY GROUP 権限、ALTER ANY AVAILABILITY GROUP 権限、または CONTROL SERVER 権限が必要です。Requires ALTER AVAILABILITY GROUP permission on the availability group, CONTROL AVAILABILITY GROUP permission, ALTER ANY AVAILABILITY GROUP permission, or CONTROL SERVER permission.

Transact-SQL の使用Using Transact-SQL

柔軟なフェールオーバー ポリシーを構成するにはTo configure the flexible failover policy

  1. プライマリ レプリカをホストするサーバー インスタンスに接続します。Connect to the server instance that hosts the primary replica.

  2. 新しい可用性グループの場合は、 CREATE AVAILABILITY GROUPTransact-SQLTransact-SQL ステートメントを使用します。For a new availability group, use the CREATE AVAILABILITY GROUPTransact-SQLTransact-SQL statement. 既存の可用性グループを変更する場合は、 ALTER AVAILABILITY GROUPTransact-SQLTransact-SQL ステートメントを使用します。If you are modifying an existing availability group, use the ALTER AVAILABILITY GROUPTransact-SQLTransact-SQL statement.

    • フェールオーバーの条件レベルを設定するには、FAILURE_CONDITION_LEVEL = n オプションを使用します。ここで、 n は 1 ~ 5 の整数です。To set the failover condition level, use the FAILURE_CONDITION_LEVEL = n option, where, n is an integer from 1 to 5.

      たとえば、次の Transact-SQLTransact-SQL ステートメントでは、既存の可用性グループ AG1のエラー条件レベルをレベル 1 に変更します。For example, the following Transact-SQLTransact-SQL statement changes the failure-condition level of an existing availability group, AG1, to level one:

      
      ALTER AVAILABILITY GROUP AG1 SET (FAILURE_CONDITION_LEVEL = 1);  
      

      これらの整数値とエラー条件レベルの関係は次のとおりです。The relationship of these integer values to the failure condition levels is as follows:

      Transact-SQLTransact-SQL の値Value LevelLevel 自動フェールオーバーが開始される条件Automatic Is Failover Initiated When...
      11 1One サーバーの停止。On server down. フェールオーバーまたは再起動のため、SQL Server サービスが停止した場合。The SQL Server service stops because of a failover or restart.
      22 2Two サーバーの応答停止。On server unresponsive. 下限値の任意の条件が満たされた場合、SQL Server サービスがクラスターに接続され正常性チェックのタイムアウトしきい値を超えた場合、または現在のプライマリ レプリカがエラー状態になった場合。Any condition of lower value is satisfied, the SQL Server service is connected to the cluster and the health check timeout threshold is exceeded, or the current primary replica is in a failed state.
      33 3Three 重大なサーバー エラー。On critical server error. 下限値の任意の条件が満たされるか、重大な内部サーバー エラーが発生した場合。Any condition of lower value is satisfied or an internal critical server error occurs.

      これは既定のレベルです。This is the default level.
      44 4Four 中程度のサーバー エラー。On moderate server error. 下限値の任意の条件が満たされるか、中程度のサーバー エラーが発生した場合。Any condition of lower value is satisfied or a moderate Server error occurs.
      55 5Five 任意の限定されたエラー条件。On any qualified failure conditions. 下限値の任意の条件が満たされるか、限定されたエラー条件が発生した場合。Any condition of lower value is satisfied or a qualifying failure condition occurs.

      詳細については、「可用性グループの自動フェールオーバーのための柔軟なフェールオーバー ポリシー (SQL Server)」を参照してください。For more information about the failover condition levels, see Flexible Failover Policy for Automatic Failover of an Availability Group (SQL Server).

    • 正常性チェックのタイムアウトしきい値を構成するには、HEALTH_CHECK_TIMEOUT = n オプションを使用します。ここで n は 15000 ミリ秒 (15 秒) ~ 4294967295 ミリ秒の整数です。To configure the health check timeout threshold, use the HEALTH_CHECK_TIMEOUT = n option, where, n is an integer from 15000 milliseconds (15 seconds) to 4294967295 milliseconds. 既定値は 30000 ミリ秒 (30 秒) です。The default value is 30000 milliseconds (30 seconds)

      たとえば、次の Transact-SQLTransact-SQL ステートメントでは、既存の可用性グループ AG1の正常性チェックのタイムアウトしきい値が 60,000 ミリ秒 (1 分) に変更されます。For example, the following Transact-SQLTransact-SQL statement changes the health-check timeout threshold of an existing availability group, AG1, to 60,000 milliseconds (one minute).

      
      ALTER AVAILABILITY GROUP AG1 SET (HEALTH_CHECK_TIMEOUT = 60000);  
      

PowerShell の使用Using PowerShell

柔軟なフェールオーバー ポリシーを構成するにはTo configure the flexible failover policy

  1. 既定 (cd) を、プライマリ レプリカをホストするサーバー インスタンスに設定します。Set default (cd) to the server instance that hosts the primary replica.

  2. 可用性グループに可用性レプリカを追加する場合は、 New-SqlAvailabilityGroup コマンドレットを使用します。When adding an availability replica to an availability group, use the New-SqlAvailabilityGroup cmdlet. 既存の可用性レプリカを変更する場合は、 Set-SqlAvailabilityGroup コマンドレットを使用します。When modifying an existing availability replica, use the Set-SqlAvailabilityGroup cmdlet.

    • フェールオーバーの条件レベルを設定するには、 FailureConditionLevellevel パラメーターを使用します。この level は次の値のいずれかになります。To set the failover condition level, use the FailureConditionLevellevel parameter, where, level is one of the following values:

      [値]Value LevelLevel 自動フェールオーバーが開始される条件Automatic Is Failover Initiated When...
      OnServerDownOnServerDown 1One サーバーの停止。On server down. フェールオーバーまたは再起動のため、SQL Server サービスが停止した場合。The SQL Server service stops because of a failover or restart.
      OnServerUnresponsiveOnServerUnresponsive 2Two サーバーの応答停止。On server unresponsive. 下限値の任意の条件が満たされた場合、SQL Server サービスがクラスターに接続され正常性チェックのタイムアウトしきい値を超えた場合、または現在のプライマリ レプリカがエラー状態になった場合。Any condition of lower value is satisfied, the SQL Server service is connected to the cluster and the health check timeout threshold is exceeded, or the current primary replica is in a failed state.
      OnCriticalServerErrorOnCriticalServerError 3Three 重大なサーバー エラー。On critical server error. 下限値の任意の条件が満たされるか、重大な内部サーバー エラーが発生した場合。Any condition of lower value is satisfied or an internal critical server error occurs.

      これは既定のレベルです。This is the default level.
      OnModerateServerErrorOnModerateServerError 4Four 中程度のサーバー エラー。On moderate server error. 下限値の任意の条件が満たされるか、中程度のサーバー エラーが発生した場合。Any condition of lower value is satisfied or a moderate Server error occurs.
      OnAnyQualifiedFailureConditionsOnAnyQualifiedFailureConditions 5Five 任意の限定されたエラー条件。On any qualified failure conditions. 下限値の任意の条件が満たされるか、限定されたエラー条件が発生した場合。Any condition of lower value is satisfied or a qualifying failure condition occurs.

      詳細については、「可用性グループの自動フェールオーバーのための柔軟なフェールオーバー ポリシー (SQL Server)」を参照してください。For more information about the failover condition levels, see Flexible Failover Policy for Automatic Failover of an Availability Group (SQL Server).

      たとえば、次のコマンドでは、既存の可用性グループ AG1 のエラー条件レベルをレベル 1 に変更します。For example, the following command changes the failure-condition level of an existing availability group, AG1, to level one.

      Set-SqlAvailabilityGroup `   
      -Path SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MyAg `   
      -FailureConditionLevel OnServerDown  
      
    • 正常性チェックのタイムアウトしきい値を設定するには、 HealthCheckTimeoutn パラメーターを使用します。ここで n は 15000 ミリ秒 (15 秒) ~ 4294967295 ミリ秒の整数です。To set the health check timeout threshold, use the HealthCheckTimeoutn parameter, where, n is an integer from 15000 milliseconds (15 seconds) to 4294967295 milliseconds. 既定値は 30000 ミリ秒 (30 秒) です。The default value is 30000 milliseconds (30 seconds).

      たとえば、次のコマンドでは、既存の可用性グループ AG1の正常性チェックのタイムアウトしきい値が 120,000 ミリ秒 (2 分) に変更されます。For example, the following command changes the health-check timeout threshold of an existing availability group, AG1, to 120,000 milliseconds (two minutes).

      Set-SqlAvailabilityGroup `   
      -Path SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MyAG `   
      -HealthCheckTimeout 120000  
      

注意

コマンドレットの構文を表示するには、 PowerShell 環境で Get-Help SQL ServerSQL Server コマンドレットを使用します。To view the syntax of a 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.

SQL Server PowerShell プロバイダーを設定して使用するにはTo set up and use the SQL Server PowerShell provider

参照See Also

AlwaysOn 可用性グループの概要 (SQL Server) Overview of Always On Availability Groups (SQL Server)
可用性モード (AlwaysOn 可用性グループ) Availability Modes (Always On Availability Groups)
フェールオーバーとフェールオーバー モード (AlwaysOn 可用性グループ) Failover and Failover Modes (Always On Availability Groups)
Windows Server フェールオーバー クラスタリング (WSFC) と SQL Server Windows Server Failover Clustering (WSFC) with SQL Server
フェールオーバー クラスター インスタンスのフェールオーバー ポリシー Failover Policy for Failover Cluster Instances
sp_server_diagnostics (Transact-SQL)sp_server_diagnostics (Transact-SQL)