Failover Policy for Failover Cluster InstancesFailover Policy for Failover Cluster Instances

適用対象: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

SQL ServerSQL Server フェールオーバー クラスター インスタンス (FCI) において、特定の時点で Windows Server フェールオーバー クラスター (WSFC) クラスター リソース グループを所有できるノードは 1 つだけです。In a SQL ServerSQL Server failover cluster instance (FCI), only one node can own the Windows Server Failover Cluster (WSFC) cluster resource group at a given time. FCI のこのノードを通じて、クライアント要求が処理されます。The client requests are served through this node in the FCI. 万一障害が発生した場合や再起動が失敗した場合、グループの所有権が、FCI 内の別の WSFC ノードに移ります。In the case of a failure and an unsuccessful restart, the group ownership is moved to another WSFC node in the FCI. この処理はフェールオーバーと呼ばれます。This process is called failover. SQL ServerSQL Server では、障害検出の信頼性が向上し、柔軟なフェールオーバー ポリシーが提供されます。increases the reliability of failure detection and provides a flexible failover policy.

SQL ServerSQL Server FCI は、基になる WSFC サービスにフェールオーバー検出を依存します。A SQL ServerSQL Server FCI depends on the underlying WSFC service for failover detection. したがって、FCI のフェールオーバー動作は、ネイティブ WSFC 機能と、 SQL ServerSQL Server セットアップによって追加される機能の 2 つのメカニズムによって決定されます。Therefore, two mechanisms determine the failover behavior for FCI: the former is native WSFC functionality, and the latter is functionality added by SQL ServerSQL Server setup.

  • WSFC クラスターはクォーラム構成を保持するため、自動フェールオーバーにおいて一意のフェールオーバー ターゲットが保証されます。The WSFC cluster maintains the quorum configuration, which ensures a unique failover target in an automatic failover. WSFC サービスは、クラスターが常に最適なクォーラム状態であるかどうかを判定したうえで、リソース グループをオンラインまたはオフラインにします。The WSFC service determines whether the cluster is in optimal quorum health at all times and brings the resource group online and offline accordingly.

  • アクティブな SQL ServerSQL Server インスタンスは、専用接続を介して、コンポーネント診断のセットを WSFC リソース グループに定期的に報告します。The active SQL ServerSQL Server instance periodically reports a set of component diagnostics to the WSFC resource group over a dedicated connection. WSFC リソース グループは、再起動およびフェールオーバーをトリガーする障害条件を定義するフェールオーバー ポリシーを保持します。The WSFC resource group maintains the failover policy, which defines the failure conditions that trigger restarts and failovers.

このトピックでは、上記の 2 番目のメカニズムについて説明します。This topic discusses the second mechanism above. クォーラム構成および正常性状態の検出のための WSFC 動作の詳細については、「WSFC クォーラム モードと投票の構成 (SQL Server)」を参照してください。For more information on the WSFC behavior for quorum configuration and health detection, see WSFC Quorum Modes and Voting Configuration (SQL Server).

重要

FCI との間の自動フェールオーバーは AlwaysOn 可用性グループでは許可されません。Automatic failovers to and from an FCI are not allowed in an Always On availability group. ただし、FCI との間の手動フェールオーバーは AlwaysOn 可用性グループで許可されます。However, manual failovers to and from and FCI are allowed in an Always On availability group.

フェールオーバー ポリシーの概要Failover Policy Overview

フェールオーバー プロセスは、次の手順に分けることができます。The failover process can be broken down into the following steps:

  1. 正常性状態の監視Monitor the Health Status

  2. エラーの特定Determining Failures

  3. エラーへの対応Responding to Failures

正常性状態の監視Monitor the Health Status

FCI に対して監視される正常性状態には、次の 3 種類があります。There are three types of health statuses that are monitored for the FCI:

SQL Server サービスの状態State of the SQL Server service

WSFC サービスは、アクティブな FCI ノード上の SQL Server サービスの開始状態を監視して、SQL Server サービスの停止を検出します。The WSFC service monitors the start state of the SQL Server service on the active FCI node to detect when the SQL Server service is stopped.

SQL Server インスタンスの応答時間Responsiveness of the SQL Server instance

SQL Server の起動時、WSFC サービスは、SQL Server データベース エンジン リソース DLL を使用して、正常性状態の監視にのみ使用される新しい接続を別個のスレッド上に作成します。During SQL Server startup, the WSFC service uses the SQL Server Database Engine resource DLL to create a new connection to on a separate thread that is used exclusively for monitoring the health status. これにより、負荷があるときの正常性状態を SQL インスタンスがレポートするために必要なリソースが確保されます。This ensures that there the SQL instance has the required resources to report its health status while under load. この専用の接続を使用して、SQL Server は sp_server_diagnostics (Transact-SQL) システム ストアド プロシージャを繰り返しモードで実行し、SQL Server コンポーネントの正常性状態をリソース DLL に定期的に報告します。Using this dedicated connection, SQL Server runs the sp_server_diagnostics (Transact-SQL) system stored procedure in repeat mode to periodically report the health status of the SQL Server components to the resource DLL.

リソース DLL は、正常性チェックのタイムアウトを使用して SQL インスタンスの応答時間を判定します。The resource DLL determines the responsiveness of the SQL instance using a health check timeout. HealthCheckTimeout プロパティは、リソース DLL が sp_server_diagnostics ストアド プロシージャを待機する時間を定義します。この待機時間を経過すると、SQL インスタンスは応答不能と見なされ、その旨が WSFC サービスに報告されます。The HealthCheckTimeout property defines how long the resource DLL should wait for the sp_server_diagnostics stored procedure before it reports the SQL instance as unresponsive to the WSFC service. このプロパティは、フェールオーバー クラスター マネージャー スナップインに加え、T-SQL を使用して構成できます。This property is configurable using T-SQL as well as in the Failover Cluster Manager snap-in. 詳細については、「 HealthCheckTimeout プロパティ設定の構成」を参照してください。For more information, see Configure HealthCheckTimeout Property Settings. 次に、このプロパティがタイムアウトに与える影響、およびリピート間隔設定について説明します。The following items describe how this property affects timeout and repeat interval settings:

  • リソース DLL によって sp_server_diagnostics ストアド プロシージャが呼び出され、リピート間隔が HealthCheckTimeout 設定の 1/3 に設定されます。The resource DLL calls the sp_server_diagnostics stored procedure and sets the repeat interval to one-third of the HealthCheckTimeout setting.

  • sp_server_diagnostics ストアド プロシージャの処理が遅いか、情報が返されない場合、リソース DDL は HealthCheckTimeout によって指定された時間待機した後、SQL インスタンスが応答していないことを WSFC サービスに通知します。If the sp_server_diagnostics stored procedure is slow or is not returning information, the resource DLL will wait for the interval specified by HealthCheckTimeout before it reports to the WSFC service that the SQL instance is unresponsive.

  • 専用の接続が失われた場合、リソース DLL は、HealthCheckTimeout によって指定された時間にわたって SQL インスタンスへの接続を再試行した後、SQL インスタンスが応答していないことを WSFC サービスに通知します。If the dedicated connection is lost, the resource DLL will retry the connection to the SQL instance for the interval specified by HealthCheckTimeout before it reports to the WSFC service that the SQL instance is unresponsive.

SQL Server コンポーネント診断SQL Server component diagnostics

システム ストアド プロシージャ sp_server_diagnostics は、SQL インスタンスで定期的にコンポーネント診断を収集します。The system stored procedure sp_server_diagnostics periodically collects component diagnostics on the SQL instance. 収集された診断情報は、次の各コンポーネント用の行として表され、呼び出し側スレッドに渡されます。The diagnostic information that is collected is surfaced as a row for each of the following components and passed to the calling thread.

  1. システムsystem

  2. resourceresource

  3. query processquery process

  4. io_subsystemio_subsystem

  5. イベントevents

system、resource、および query process コンポーネントはエラー検出に使用されます。The system, resource, and query process components are used for failure detection. io_subsytem および events コンポーネントは、診断目的でのみ使用されます。The io_subsytem and events components are used for diagnostic purposes only.

それぞれの情報の行セットは、SQL Server クラスター診断ログに書き込まれます。Each rowset of information is also written to the SQL Server cluster diagnostics log. 詳細については、「 フェールオーバー クラスター インスタンスの診断ログを表示して読む方法」を参照してください。For more information, see View and Read Failover Cluster Instance Diagnostics Log.

ヒント

sp_server_diagnostic ストアド プロシージャは SQL Server AlwaysOn テクノロジによって使用されるほか、問題の検出とトラブルシューティングを行うために任意の SQL Server インスタンスで使用できます。While the sp_server_diagnostic stored procedure is used by SQL Server Always On technology, it is available for use in any SQL Server instance to help detect and troubleshoot problems.

エラーの特定Determining Failures

SQL Server データベース エンジン リソース DLL は、FailureConditionLevel プロパティを使用して、検出された正常性状態がエラー条件に該当するかどうかを判定します。The SQL Server Database Engine resource DLL determines whether the detected health status is a condition for failure using the FailureConditionLevel property. FailureConditionLevel プロパティは、どの検出された正常性状態に基づいて再起動またはフェールオーバーを発生させるかを定義します。The FailureConditionLevel property defines which detected health statuses cause restarts or failovers. "自動フェールオーバーまたは再起動なし" から自動再起動またはフェールオーバーを発生させる可能性のあるあらゆるエラー条件に至るまで、複数レベルのオプションを使用できます。Multiple levels of options are available, ranging from no automatic restart or failover to all possible failure conditions resulting in an automatic restart or failover. このプロパティの構成方法については、「 FailureConditionLevel プロパティ設定の構成」を参照してください。For more information about how to configure this property, see Configure FailureConditionLevel Property Settings.

エラー状態にはレベルが設定されています。The failure conditions are set on an increasing scale. レベル 1 ~ 5 の各レベルには、前のレベルのすべての状態に加えて独自の状態が含まれています。For levels 1-5, each level includes all the conditions from the previous levels in addition to its own conditions. これは、それぞれのレベルで、フェールオーバーまたは再起動の可能性が増加することを意味します。This means that with each level, there is an increased probability of a failover or restart. 次の表では、エラー状態のレベルについて説明しています。The failure condition levels are described in the following table.

sp_server_diagnostics (Transact-SQL)」を確認してください。このシステム ストアド プロシージャは、エラー条件レベルで重要な役割を果たします。Review sp_server_diagnostics (Transact-SQL) as this system stored procedure plays in important role in the failure condition levels.

LevelLevel 条件Condition [説明]Description
00 自動フェールオーバーまたは再起動なしNo automatic failover or restart どのようなエラー状態でも、フェールオーバーまたは再起動が自動的に行われないことを示します。Indicates that no failover or restart will be triggered automatically on any failure conditions. このレベルは、システム メンテナンスの目的でのみ使用されます。This level is for system maintenance purposes only.
11 サーバーの停止によるフェールオーバーまたは再起動Failover or restart on server down 次の状態が発生した場合に、サーバーの再起動またはフェールオーバーが行われることを示します。Indicates that a server restart or failover will be triggered if the following condition is raised:

SQL Server サービスが停止した。SQL Server service is down.
22 サーバーの応答停止によるフェールオーバーまたは再起動Failover or restart on server unresponsive 次のいずれかの状態が発生した場合に、サーバーの再起動またはフェールオーバーが行われることを示します。Indicates that a server restart or failover will be triggered if any of the following conditions are raised:

SQL Server サービスが停止した。SQL Server service is down.

SQL Server インスタンスが応答しない (リソース DLL が HealthCheckTimeout の設定時間内に sp_server_diagnostics からデータを受け取れない)。SQL Server instance is not responsive (Resource DLL cannot receive data from sp_server_diagnostics within the HealthCheckTimeout settings).
3*3* 重大なサーバー エラーによるフェールオーバーまたは再起動Failover or restart on critical server errors 次のいずれかの状態が発生した場合に、サーバーの再起動またはフェールオーバーが行われることを示します。Indicates that a server restart or failover will be triggered if any of the following conditions are raised:

SQL Server サービスが停止した。SQL Server service is down.

SQL Server インスタンスが応答しない (リソース DLL が HealthCheckTimeout の設定時間内に sp_server_diagnostics からデータを受け取れない)。SQL Server instance is not responsive (Resource DLL cannot receive data from sp_server_diagnostics within the HealthCheckTimeout settings).

システム ストアド プロシージャ sp_server_diagnostics から 'system エラー' が返される。System stored procedure sp_server_diagnostics returns 'system error'.
44 中程度のサーバー エラーによるフェールオーバーまたは再起動Failover or restart on moderate server errors 次のいずれかの状態が発生した場合に、サーバーの再起動またはフェールオーバーが行われることを示します。Indicates that a server restart or failover will be triggered if any of the following conditions are raised:

SQL Server サービスが停止した。SQL Server service is down.

SQL Server インスタンスが応答しない (リソース DLL が HealthCheckTimeout の設定時間内に sp_server_diagnostics からデータを受け取れない)。SQL Server instance is not responsive (Resource DLL cannot receive data from sp_server_diagnostics within the HealthCheckTimeout settings).

システム ストアド プロシージャ sp_server_diagnostics から 'system エラー' が返される。System stored procedure sp_server_diagnostics returns 'system error'.

システム ストアド プロシージャ sp_server_diagnostics から 'resource エラー' が返される。System stored procedure sp_server_diagnostics returns 'resource error'.
55 限定されたエラー状態によるフェールオーバーまたは再起動Failover or restart on any qualified failure conditions 次のいずれかの状態が発生した場合に、サーバーの再起動またはフェールオーバーが行われることを示します。Indicates that a server restart or failover will be triggered if any of the following conditions are raised:

SQL Server サービスが停止した。SQL Server service is down.

SQL Server インスタンスが応答しない (リソース DLL が HealthCheckTimeout の設定時間内に sp_server_diagnostics からデータを受け取れない)。SQL Server instance is not responsive (Resource DLL cannot receive data from sp_server_diagnostics within the HealthCheckTimeout settings).

システム ストアド プロシージャ sp_server_diagnostics から 'system エラー' が返される。System stored procedure sp_server_diagnostics returns 'system error'.

システム ストアド プロシージャ sp_server_diagnostics から 'resource エラー' が返される。System stored procedure sp_server_diagnostics returns 'resource error'.

システム ストアド プロシージャ sp_server_diagnostics から 'query_processing エラー' が返される。System stored procedure sp_server_diagnostics returns 'query_processing error'.

* 既定値*Default Value

エラーへの対応Responding to Failures

1 つまたは複数のエラー条件が検出された後で WSFC サービスがどのようにエラーに対応するかは、WSFC クォーラムの状態と、FCI リソース グループの再起動およびフェールオーバー設定に依存します。After one or more failure conditions are detected, how the WSFC service responds to the failures depends on the WSFC quorum state and the restart and failover settings of the FCI resource group. FCI がその WSFC クォーラムを失った場合、FCI 全体がオフラインになり、FCI は高可用性を失います。If the FCI has lost its WSFC quorum, then the entire FCI is brought offline and the FCI has lost its high availability. FCI が WSFC クォーラムを保持し続けた場合、WSFC サービスは、最初に障害が発生したノードの再起動を試み、再起動の試行が失敗した場合はフェールオーバーを実行することによって対応します。If the FCI still retains its WSFC quorum, then the WSFC service may respond by first attempting to restart the failed node and then failover if the restart attempts are unsuccessful. 再起動とフェールオーバーの設定は、フェールオーバー クラスター マネージャー スナップインで構成します。The restart and failover settings are configured in the Failover Cluster Manager snap-in. これらの設定の詳細については、「<リソース> プロパティ: [ポリシー] タブ」を参照してください。For more information these settings, see <Resource> Properties: Policies Tab.

クォーラムの正常性の維持については、「WSFC クォーラム モードと投票の構成 (SQL Server)」をご覧ください。For more information on maintaining quorum health, see WSFC Quorum Modes and Voting Configuration (SQL Server).

参照See Also

ALTER SERVER CONFIGURATION (Transact-SQL)ALTER SERVER CONFIGURATION (Transact-SQL)