可用性グループの構成の高可用性とデータの保護High availability and data protection for availability group configurations

適用対象: はいSQL サーバー (Linux のみ)ありませんAzure SQL DatabaseありませんAzure SQL Data Warehouseありません並列データ ウェアハウス APPLIES TO: yesSQL Server (Linux only) noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

この記事では、Linux サーバー上の SQL Server Always On 可用性グループのサポートされる展開構成を表示します。This article presents supported deployment configurations for SQL Server Always On availability groups on Linux servers. 可用性グループは、高可用性とデータ保護をサポートします。An availability group supports high availability and data protection. 障害の自動検出、自動フェールオーバー、およびフェールオーバー後に、透過的な再接続は、高可用性を提供します。Automatic failure detection, automatic failover, and transparent reconnection after failover provide high availability. 同期されたレプリカは、データ保護を提供します。Synchronized replicas provide data protection.

Windows Server フェールオーバー クラスター (WSFC)、高可用性のための一般的な構成を使用して 2 つの同期レプリカと 3 番目のサーバーまたはファイル共有クォーラムを提供します。On a Windows Server Failover Cluster (WSFC), a common configuration for high availability uses two synchronous replicas and a third server or file share to provide quorum. ファイル共有のミラーリング監視サーバーは、たとえば可用性グループ構成の同期の状態と、レプリカのロールを検証します。The file-share witness validates the availability group configuration - status of synchronization, and the role of the replica, for example. この構成により、セカンダリ レプリカのフェールオーバー ターゲットは、最新のデータと可用性グループ構成の変更を選択します。This configuration ensures that the secondary replica chosen as the failover target has the latest data and availability group configuration changes.

WSFC は、可用性グループのレプリカと、ファイル共有のミラーリング監視サーバーの間のフェールオーバー調停の構成メタデータを同期します。The WSFC synchronizes configuration metadata for failover arbitration between the availability group replicas and the file-share witness. Wsfc 可用性グループがないときに、SQL Server インスタンスは、master データベースの構成メタデータを格納します。When an availability group is not on a WSFC, the SQL Server instances store configuration metadata in the master database.

たとえば、Linux クラスター上の可用性グループはCLUSTER_TYPE = EXTERNALします。For example, an availability group on a Linux cluster has CLUSTER_TYPE = EXTERNAL. WSFC フェールオーバーを判別することはありません。There is no WSFC to arbitrate failover. ここで、構成メタデータが管理され、SQL Server インスタンスによって管理されます。In this case the configuration metadata is managed and maintained by the SQL Server instances. このクラスターでミラーリング監視サーバーがないために、構成の状態のメタデータを格納する 3 つ目の SQL Server インスタンスが必要です。Because there is no witness server in this cluster, a third SQL Server instance is required to store configuration state metadata. これら 3 つすべての SQL Server インスタンスは、クラスターの分散型のメタデータの記憶域を提供できます。All three SQL Server instances together provide distributed metadata storage for the cluster.

クラスター マネージャーでは、SQL Server のインスタンスを可用性グループ内のクエリを実行でき、高可用性を維持するためにフェールオーバーを調整することができます。The cluster manager can query the instances of SQL Server in the availability group, and orchestrate failover to maintain high availability. Linux クラスターでは、Pacemaker は、クラスター マネージャーです。In a Linux cluster, Pacemaker is the cluster manager.

SQL Server 2017 CU 1 により、高可用性を持つ可用性グループのCLUSTER_TYPE = EXTERNALの 2 つの同期レプリカと構成のみのレプリカ。SQL Server 2017 CU 1 enables high availability for an availability group with CLUSTER_TYPE = EXTERNAL for two synchronous replicas plus a configuration only replica. SQL Server Express edition を含む任意のエディションの SQL Server 2017 CU1 以降の構成のみのレプリカをホストできます。The configuration only replica can be hosted on any edition of SQL Server 2017 CU1 or later - including SQL Server Express edition. 構成のみのレプリカでは、master データベースに可用性グループに関する構成情報は保持しますが、可用性グループ内のユーザー データベースが含まれていません。The configuration only replica maintains configuration information about the availability group in the master database but does not contain the user databases in the availability group.

構成が既定のリソースの設定に与える影響How the configuration affects default resource settings

SQL Server 2017 で導入、REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMITクラスター リソース設定します。SQL Server 2017 introduces the REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT cluster resource setting. この設定は、指定した数のセカンダリ レプリカの書き込みのプライマリ レプリカは、各トランザクションをコミットする前にログに記録するトランザクション データを保証します。This setting guarantees the specified number of secondary replicas write the transaction data to log before the primary replica commits each transaction. 外部のクラスター マネージャーを使用するときに、この設定は高可用性とデータ保護の両方に影響します。When you use an external cluster manager, this setting affects both high availability and data protection. 設定の既定値は、クラスター リソースの作成時に、アーキテクチャとは異なります。The default value for the setting depends on the architecture at the time the cluster resource is created. SQL Server リソース エージェントをインストールするときにmssql-server-ha- と可用性グループのクラスター リソースの作成、クラスター マネージャーには、可用性が検出されたグループの構成とセットREQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMITそれに応じて。When you install the SQL Server resource agent - mssql-server-ha - and create a cluster resource for the availability group, the cluster manager detects the availability group configuration and sets REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT accordingly.

構成、リソース エージェントのパラメーターでサポートされている場合REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT高可用性とデータ保護を提供する値に設定されます。If supported by the configuration, the resource agent parameter REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT is set to the value that provides high availability and data protection. 詳細については、次を参照してください。 pacemaker の理解の SQL Server リソース エージェントします。For more information, see Understand SQL Server resource agent for pacemaker.

次のセクションでは、クラスター リソースの既定の動作を説明します。The following sections explain the default behavior for the cluster resource.

高可用性、データ保護、および読み取りスケールの特定のビジネス要件を満たすために可用性グループの設計を選択します。Choose an availability group design to meet specific business requirements for high availability, data protection, and read-scale.

次の構成では、可用性グループの設計パターンと、各パターンの機能について説明します。The following configurations describe the availability group design patterns and the capabilities of each pattern. これらの設計パターンは、可用性グループに適用CLUSTER_TYPE = EXTERNALの高可用性ソリューション。These design patterns apply to availability groups with CLUSTER_TYPE = EXTERNAL for high availability solutions.

  • 次の 3 つの同期レプリカThree synchronous replicas
  • 2 つの同期レプリカTwo synchronous replicas
  • 2 つの同期レプリカと構成のみのレプリカTwo synchronous replicas and a configuration only replica

次の 3 つの同期レプリカThree synchronous replicas

この構成は、次の 3 つの同期レプリカで構成されます。This configuration consists of three synchronous replicas. 既定では、高可用性とデータ保護を提供します。By default, it provides high availability and data protection. 読み取りスケールも提供できます。It can also provide read-scale.

3 つのレプリカ

次の 3 つの同期レプリカを可用性グループには、読み取りスケール、高可用性、およびデータ保護を提供できます。An availability group with three synchronous replicas can provide read-scale, high availability, and data protection. 次の表では、可用性の動作について説明します。The following table describes availability behavior.

読み取りスケールread-scale 高可用性 (& a)High availability &
データの保護data protection
データ保護Data protection
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT= 00 1*1* 22
プライマリ停止Primary outage 手動フェールオーバー。Manual failover. データが失われる可能性があります。Might have data loss. 新しいプライマリは R/w ですNew primary is R/W. 自動フェールオーバー。Automatic failover. 新しいプライマリは R/w ですNew primary is R/W. 自動フェールオーバー。Automatic failover. 前のプライマリが回復し、セカンダリとして可用性グループに参加するまでにも、新しいプライマリはユーザー トランザクションでご利用いただけません。New primary is not available for user transactions until former primary recovers and joins availability group as secondary.
1 つのセカンダリ レプリカ停止One secondary replica outage R は、プライマリ/w ですPrimary is R/W. プライマリが失敗した場合のない自動フェールオーバー。No automatic failover if primary fails. R は、プライマリ/w ですPrimary is R/W. プライマリにも失敗した場合のない自動フェールオーバー。No automatic failover if primary fails as well. プライマリでは、ユーザー トランザクションで使用できません。Primary is not available for user transactions.

* 既定値* Default

2 つの同期レプリカTwo synchronous replicas

この構成では、データの保護を実現します。This configuration enables data protection. その他の可用性グループ構成のような読み取りスケールを有効にすることできます。Like the other availability group configurations, it can enable read-scale. 2 つの同期レプリカの構成では、自動高可用性は提供されません。The two synchronous replicas configuration does not provide automatic high availability.

2 つの同期レプリカ

2 つの同期レプリカを可用性グループは、読み取りスケールとデータ保護を提供します。An availability group with two synchronous replicas provides read-scale and data protection. 次の表では、可用性の動作について説明します。The following table describes availability behavior.

読み取りスケールread-scale データ保護Data protection
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT= 0 *0 * 11
プライマリ停止Primary outage 手動フェールオーバー。Manual failover. データが失われる可能性があります。Might have data loss. 新しいプライマリは R/w ですNew primary is R/W. 自動フェールオーバー。Automatic failover. 前のプライマリが回復し、セカンダリとして可用性グループに参加するまでにも、新しいプライマリはユーザー トランザクションでご利用いただけません。New primary is not available for user transactions until former primary recovers and joins availability group as secondary.
1 つのセカンダリ レプリカ停止One secondary replica outage プライマリは、データの損失に不安定な実行、読み取り/書き込みです。Primary is R/W, running exposed to data loss. プライマリはセカンダリが復旧するまではユーザー トランザクションで使用できません。Primary is not available for user transactions until secondary recovers.

* 既定値* Default

注意

上記のシナリオでは、SQL Server 2017 CU 1 より前の動作です。The preceding scenario is the behavior prior to SQL Server 2017 CU 1.

2 つの同期レプリカと構成のみのレプリカTwo synchronous replicas and a configuration only replica

同期レプリカが 2 つ (以上) と構成のみのレプリカを可用性グループはデータ保護を提供し、高可用性を実現も可能性があります。An availability group with two (or more) synchronous replicas and a configuration only replica provides data protection and may also provide high availability. 次の図は、このアーキテクチャを表します。The following diagram represents this architecture:

構成のみの可用性グループ

  1. セカンダリ レプリカへのユーザー データの同期レプリケーション。Synchronous replication of user data to the secondary replica. 可用性グループ構成メタデータも含まれています。It also includes availability group configuration metadata.
  2. 可用性グループ構成メタデータの同期レプリケーション。Synchronous replication of availability group configuration metadata. ユーザー データは含まれません。It does not include user data.

可用性グループの図では、プライマリ レプリカは、構成のみのレプリカとセカンダリ レプリカの両方に構成データをプッシュします。In the availability group diagram, a primary replica pushes configuration data to both the secondary replica and the configuration only replica. セカンダリ レプリカでは、ユーザー データも受信します。The secondary replica also receives user data. 構成のみのレプリカは、ユーザー データを受信しません。The configuration only replica does not receive user data. セカンダリ レプリカは同期可用性モードです。The secondary replica is in synchronous availability mode. 構成のみのレプリカに可用性グループ - 可用性グループに関するメタデータのみのデータベースが含まれていません。The configuration only replica does not contain the databases in the availability group - only metadata about the availability group. 構成のみのレプリカで構成データが同期的にコミットします。Configuration data on the configuration only replica is committed synchronously.

注意

構成のみのレプリカ、availabilility グループは SQL Server 2017 CU1 の新機能です。An availabilility group with configuration only replica is new for SQL Server 2017 CU1. SQL Server 可用性グループ内のすべてのインスタンスは、SQL Server 2017 CU1 をする必要がありますまたはそれ以降。All instances of SQL Server in the availability group must be SQL Server 2017 CU1 or later.

既定値 REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT は 0 です。The default value for REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT is 0. 次の表では、可用性の動作について説明します。The following table describes availability behavior.

高可用性 (& a)High availability &
データの保護data protection
データ保護Data protection
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT= 0 *0 * 11
プライマリ停止Primary outage 自動フェールオーバー。Automatic failover. 新しいプライマリは R/w ですNew primary is R/W. 自動フェールオーバー。Automatic failover. 新しいプライマリでは、ユーザー トランザクションで使用できません。New primary is not available for user transactions.
セカンダリ レプリカの停止Secondary replica outage プライマリでは、読み取り/書き込みを実行している公開データの損失 (プライマリが失敗し、復旧できない) 場合です。Primary is R/W, running exposed to data loss (if primary fails and cannot be recovered). プライマリにも失敗した場合のない自動フェールオーバー。No automatic failover if primary fails as well. プライマリでは、ユーザー トランザクションで使用できません。Primary is not available for user transactions. プライマリにも失敗した場合にフェールオーバーするレプリカがありません。No replica to fail over to if primary fails as well.
構成のみのレプリカ停止Configuration only replica outage R は、プライマリ/w ですPrimary is R/W. プライマリにも失敗した場合のない自動フェールオーバー。No automatic failover if primary fails as well. R は、プライマリ/w ですPrimary is R/W. プライマリにも失敗した場合のない自動フェールオーバー。No automatic failover if primary fails as well.
同期セカンダリ + の構成のみのレプリカの停止Synchronous secondary + configuration only replica outage プライマリでは、ユーザー トランザクションで使用できません。Primary is not available for user transactions. 自動フェールオーバーはありません。No automatic failover. プライマリでは、ユーザー トランザクションで使用できません。Primary is not available for user transactions. レプリカにフェールオーバーする場合はプライマリにも失敗しません。No replica to failover to if primary fails as well.

* 既定値* Default

注意

構成のみのレプリカをホストする SQL Server のインスタンスでは、他のデータベースもホストできます。The instance of SQL Server that hosts the configuration only replica can also host other databases. 1 つ以上の可用性グループの構成専用のデータベースとして参加できます。It can also participate as a configuration only database for more than one availability group.

要件Requirements

  • 構成のみのレプリカを可用性グループ内のすべてのレプリカは、SQL Server 2017 CU 1 またはそれ以降である必要があります。All replicas in an availability group with a configuration only replica must be SQL Server 2017 CU 1 or later.
  • SQL Server の任意のエディションでは、SQL Server Express を含む、構成専用レプリカをホストできます。Any edition of SQL Server can host a configuration only replica, including SQL Server Express.
  • 可用性グループには、プライマリ レプリカだけでなく、少なくとも 1 つのセカンダリ レプリカが必要があります。The availability group needs at least one secondary replica - in addition to the primary replica.
  • 構成のみのレプリカは、SQL Server のインスタンスごとのレプリカの最大数にはカウントされません。Configuration only replicas do not count towards the maximum number of replicas per instance of SQL Server. 最大 3 つのレプリカ SQL Server standard edition、SQL Server Enterprise Edition が最大 9 を使用できます。SQL Server standard edition allows up to three replicas, SQL Server Enterprise Edition allows up to 9.

考慮事項Considerations

  • 可用性グループごとの複数の構成のみのレプリカ。No more than one configuration only replica per availability group.
  • 構成のみのレプリカは、プライマリ レプリカにすることはできません。A configuration only replica cannot be a primary replica.
  • 構成のみのレプリカの可用性モードを変更することはできません。You cannot modify the availability mode of a configuration only replica. 同期または非同期のセカンダリ レプリカには、構成のみのレプリカから変更するには、構成のみのレプリカを削除し、必要な可用性モードでのセカンダリ レプリカを追加します。To change from a configuration only replica to a synchronous or asynchronous secondary replica, remove the configuration only replica, and add a secondary replica with the required availability mode.
  • 構成のみのレプリカの可用性グループ メタデータと同期しています。A configuration only replica is synchronous with the availability group metadata. ユーザー データがありません。There is no user data.
  • 1 つのプライマリ レプリカと 1 つの構成のみのレプリカがないセカンダリ レプリカを可用性グループが無効です。An availability group with one primary replica and one configuration only replica, but no secondary replica is not valid.
  • 可用性グループは、SQL Server Express edition のインスタンスを作成できません。You cannot create an availability group on an instance of SQL Server Express edition.

Pacemaker 用 SQL Server リソース エージェントを理解します。Understand SQL Server resource agent for pacemaker

SQL Server 2017 CTP 1.4 追加sequence_numbersys.availability_groupsレプリカがプライマリ レプリカとはどのように最新の状態のセカンダリを識別するために Pacemaker を許可します。SQL Server 2017 CTP 1.4 added sequence_number to sys.availability_groups to allow Pacemaker to identify how up-to-date secondary replicas are with the primary replica. sequence_number 最新であるか、ローカルの可用性グループのレプリカを表す、単調増加 BIGINT です。sequence_number is a monotonically increasing BIGINT that represents how up-to-date the local availability group replica is. Pacemaker の更新プログラム、sequence_number各可用性グループ構成の変更。Pacemaker updates the sequence_number with each availability group configuration change. 構成の変更の例には、フェールオーバー、レプリカの追加または削除が含まれます。Examples of configuration changes include failover, replica addition, or removal. 数が、プライマリ上で更新し、セカンダリ レプリカにレプリケートします。The number is updated on the primary, then replicated to secondary replicas. このため最新の状態が構成されているセカンダリ レプリカは、プライマリと同じシーケンス番号です。Thus a secondary replica that has up-to-date configuration has the same sequence number as the primary.

まず送り Pacemaker は、プライマリ レプリカを昇格を決定したら、昇格前すべてのレプリカに通知します。When Pacemaker decides to promote a replica to primary, it first sends a pre-promote notification to all replicas. レプリカは、シーケンス番号を返します。The replicas return the sequence number. 次に、Pacemaker は、実際にレプリカをプライマリに昇格しようとするときに、レプリカのみ昇格自体がシーケンス番号が最も高いすべてのシーケンス番号の場合。Next, when Pacemaker actually tries to promote a replica to primary, the replica only promotes itself if its sequence number is the highest of all the sequence numbers. 独自のシーケンス番号が最大のシーケンス番号が一致しない場合、レプリカは、昇格操作を拒否します。If its own sequence number does not match the highest sequence number, the replica rejects the promote operation. この方法により、最大のシーケンス番号を持つレプリカだけがプライマリに昇格できるようになるため、データの損失が回避されます。In this way only the replica with the highest sequence number can be promoted to primary, ensuring no data loss.

このプロセスでは、前のプライマリと同じシーケンス番号とプロモーションの利用可能な少なくとも 1 つのレプリカが必要です。This process requires at least one replica available for promotion with the same sequence number as the previous primary. Pacemaker リソース エージェントのセットREQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMITを少なくとも 1 つの同期セカンダリ レプリカが最新であり、既定では、自動フェールオーバーのターゲットにすることができます。The Pacemaker resource agent sets REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT such that at least one synchronous secondary replica is up-to-date and available to be the target of an automatic failover by default. 各監視アクションの値とREQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT計算 (および必要に応じて更新) です。With each monitoring action, the value of REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT is computed (and updated if necessary). REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT値が 2 で 'の同期レプリカの数' 割った値します。The REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT value is 'number of synchronous replicas' divided by 2. フェールオーバー時に、リソース エージェントが必要です (total number of replicas - REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMITレプリカ) に応答する、昇格前通知します。At failover time, the resource agent requires (total number of replicas - REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT replicas) to respond to the pre-promote notification. 最高の値を持つレプリカsequence_numberがプライマリに昇格します。The replica with the highest sequence_number is promoted to primary.

たとえば、次の 3 つの同期レプリカの 1 つのプライマリ レプリカと 2 つの同期セカンダリ レプリカを可用性グループ。For example, An availability group with three synchronous replicas - one primary replica and two synchronous secondary replicas.

  • REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT 1 になります。(3/2 -> 1)。REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT is 1; (3 / 2 -> 1).

  • 昇格前アクションに応答するレプリカの必要な数は 2 です。(3-1 = 2)。The required number of replicas to respond to pre-promote action is 2; (3 - 1 = 2).

このシナリオでは、2 つのレプリカは、フェールオーバーをトリガーする応答する必要があります。In this scenario, two replicas have to respond for the failover to be triggered. 両方のセカンダリ レプリカをプライマリ レプリカの停止後に自動フェールオーバーを正常は、最新の状態にして、対応する必要があります、昇格前通知します。For successful automatic failover after a primary replica outage, both secondary replicas need to be up-to-date and respond to the pre-promote notification. Online と同期する場合は、同じシーケンス番号があります。If they are online and synchronous, they have the same sequence number. 可用性グループでは、1 つ昇格させます。The availability group promotes one of them. セカンダリ レプリカの 1 つに応答するだけの場合、昇格前アクション、リソース エージェントが応答したセカンダリが最も高い得られずのフェールオーバーはトリガーされませんを保証できません。If only one of the secondary replicas responds to the pre-promote action, the resource agent cannot guarantee that the secondary that responded has the highest sequence_number, and a failover is not triggered.

重要

REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT が 0 の場合、データ損失のリスクがあります。When REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT is 0 there is risk of data loss. プライマリ レプリカの停止中に、リソース エージェントで自動的にフェールオーバーは発生しません。During a primary replica outage, the resource agent does not automatically trigger a failover. プライマリを回復するまで待機するか、手動フェールオーバーを使用して行うFORCE_FAILOVER_ALLOW_DATA_LOSSします。You can either wait for primary to recover, or manually fail over using FORCE_FAILOVER_ALLOW_DATA_LOSS.

既定の動作をオーバーライドし、設定を可用性グループ リソースを防ぐことができますREQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT自動的にします。You can choose to override the default behavior, and prevent the availability group resource from setting REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT automatically.

次のスクリプト セットREQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMITという名前の可用性グループに対して、0 に<**ag1**>します。The following script sets REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT to 0 on an availability group named <**ag1**>. 実行する前に、<**ag1**> を実際の可用性グループの名前に置き換えます。Before you run replace <**ag1**> with the name of your availability group.

sudo pcs resource update <**ag1**> required_synchronized_secondaries_to_commit=0

実行、可用性グループの構成に基づいて、既定値に戻す。To revert to default value, based on the availability group configuration run:

sudo pcs resource update <**ag1**> required_synchronized_secondaries_to_commit=

注意

上記のコマンドを実行すると、プライマリは一時的に降格セカンダリ、再度昇格しました。When you run the preceding commands, the primary is temporarily demoted to secondary, then promoted again. リソースの更新には、すべてのレプリカが停止して再起動が発生します。The resource update causes all replicas to stop and restart. 新しい値REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT、瞬時にないレプリカが再起動後にのみ設定します。The new value forREQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT is only set once replicas are restarted, not instantaneously.

関連項目See also

Linux 上の可用性グループAvailability groups on Linux