次の方法で共有


クォーラム: データベース ミラーリングにおけるミラーリング ウィットネスがデータベースの可用性に与える影響

データベース ミラーリング セッションに目撃者が設定されている場合は常に、クォーラム が必要です。 クォーラムは、データベース ミラーリング セッション内の 2 つ以上のサーバー インスタンスが相互に接続されている場合に存在するリレーションシップです。 通常、クォーラムには、相互接続された 3 つのサーバー インスタンスが含まれます。 証人サーバーが設定されている場合、データベースを利用可能にするためにはクォーラムが必要です。 自動フェールオーバーを使用する高い安全性モード向けに設計されたクォーラムにより、データベースが一度に 1 つのパートナーのみが所有するようにします。

特定のサーバー インスタンスがミラーリング セッションから切断されると、そのインスタンスはクォーラムを失います。 サーバー インスタンスが接続されていない場合、セッションはクォーラムを失い、データベースは使用できなくなります。 次の 3 種類のクォーラムを使用できます。

  • 完全なクォーラムには、パートナーと証人の両方が含まれます。

  • 監視者とパートナー間のクォーラムは、監視者といずれかのパートナーで構成されます。

  • パートナー間クォーラムは、2 つのパートナーで構成されます。

次の図は、これらの種類のクォーラムを示しています。

クォーラム: 完全、証人とパートナー、両パートナー

現在のプリンシパル サーバーにクォーラムがある限り、このサーバーはプリンシパルの役割を所有し、データベース所有者が手動フェールオーバーを実行しない限り、データベースにサービスを提供し続けます。 プリンシパル サーバーがクォーラムを失うと、データベースの提供が停止します。 自動フェールオーバーは、プリンシパル データベースがクォーラムを失った場合にのみ発生します。これにより、データベースがサービスを提供しなくなったことが保証されます。

切断されたサーバー インスタンスは、セッション内の最新のロールを保存します。 通常、切断されたサーバー インスタンスは、再起動時にセッションに再接続し、クォーラムを回復します。

重要

ウィットネスは、自動フェールオーバーを伴う高安全性モードを使用する場合にのみ設定すべきです。 ハイパフォーマンスモードでは、証人が全く不要であるため、WITNESS プロパティを OFF に設定することを強くお勧めします。 ミラーリング監視サーバーがハイ パフォーマンス モードに与える影響については、「 データベース ミラーリング動作モード」を参照してください。

「High-Safety モード」セッションのクォーラム

高い安全性モードでは、クォーラムは、どのパートナーがプリンシパルの役割を所有するかを判断するクォーラムを持つサーバー インスタンスのコンテキストを提供することで、自動フェールオーバーを可能にします。 プリンシパル サーバーがクォーラムを持っている場合は、データベースにサービスを提供します。 同期されたミラー サーバーとミラーリング監視サーバーがクォーラムを保持しているときにプリンシパル サーバーがクォーラムを失うと、自動フェールオーバーが発生します。

高い安全性モードのクォーラム シナリオは次のとおりです。

  • パートナーと証人の両方で構成される完全なクォーラム

    通常、3 つのサーバーインスタンスすべてが、完全クォーラムと呼ばれる3方向クォーラムに参加します。 完全なクォーラムでは、プリンシパル サーバーとミラー サーバーは引き続きそれぞれの役割を実行します (手動フェールオーバーが発生しない限り)。

  • 証人といずれかのパートナーで構成されるクォーラム。

    パートナーの 1 つが失われたためにパートナー間のネットワーク接続が失われた場合は、次の可能性があります。

    • ミラー サーバーは失われましたが、主サーバーと証人サーバーはクォーラムを維持しています。

      この場合、プリンシパルはデータベースを DISCONNECTED に設定し、ミラーリングを SUSPENDED 状態で実行します。 (データベースは現在ミラー化されていないため、これは 実行中の公開と呼ばれます)。ミラー サーバーがセッションに再び参加すると、サーバーはクォーラムをミラーとして回復し、データベースのコピーの再同期を開始します。

    • プリンシパル サーバーが失われ、証人サーバーとミラー サーバーはクォーラムを保持します。

      この場合、自動フェールオーバーが発生します。 詳細については、「 データベース ミラーリングの動作モード」を参照してください

    • すべてのサーバー インスタンスがクォーラムを失いますが、その後ミラーとウィットネスが再接続します。 この場合、データベースは提供されません。

    フェールオーバー パートナー間のネットワーク接続が失われることはめったにありませんが、両方のパートナーが証人サーバーに接続されたままです。 このイベントでは、証人が連絡役として、個別の2つの証人とパートナーのクォーラムが存在します。 証人サーバーはプリンシパル サーバーがまだ接続されていることをミラー サーバーに通知します。 そのため、自動フェールオーバーは行われません。 代わりに、ミラー サーバーはミラーの役割を保持し、プリンシパルへの再接続を待機します。 この時点で再実行キューにログ レコードが含まれている場合、ミラー サーバーはミラー データベースのロールフォワードを続行します。 再接続時に、ミラー サーバーはミラー データベースを再同期します。

  • 2 つのパートナーで構成される パートナー間クォーラム

    パートナーがクォーラムを保持している限り、データベースは SYNCHRONIZED 状態で続行され、手動フェールオーバーは引き続き可能です。 ウィットネスがいないと、自動フェールオーバーは実行できません。ただし、ウィットネスがクォーラムを回復すると、セッションは通常の操作を再開し、自動フェールオーバーが再びサポートされます。

  • セッションはクォーラムを失います。

    すべてのサーバー インスタンスが互いに切断された場合、セッションは クォーラムを失ったと言われます。 サーバー インスタンスは、相互に再接続すると、相互にクォーラムを回復します。

    • プリンシパル サーバーが他のサーバー インスタンスと再接続すると、データベースが使用可能になります。

    • プリンシパル サーバーが切断されたままで、ミラーと証人サーバーが相互に再接続する場合、データ損失が発生する可能性があるため、自動フェールオーバーはできません。 そのため、プリンシパル サーバーがセッションに再び参加するまで、データベースは使用できなくなります。

    • 3 つのサーバー インスタンスがすべて再接続されると、完全なクォーラムが回復し、セッションは通常の操作を再開します。

重要

セッションにパートナー間クォーラムがある場合、いずれかのパートナーがクォーラムを失うと、セッションはクォーラムを失います。 そのため、ミラーリング監視サーバーが長時間切断されたままであると予想される場合は、ミラーリング監視サーバーをセッションから一時的に削除することをお勧めします。 証人を削除すると、クォーラムの要件がなくなります。 その後、ミラー サーバーが切断された場合、プリンシパル サーバーは引き続きデータベースを処理できます。 ミラーリング監視サーバーを追加または削除する方法については、「 データベース ミラーリング監視サーバー」を参照してください。

クォーラムがデータベースの可用性に与える影響

次の図は、証人とパートナーが連携して、特定の時点でプリンシパルの役割を持つパートナーが一つだけであり、現在のプリンシパル サーバーのみがデータベースを稼働させることを確認する方法を示しています。 どちらのシナリオも、完全なクォーラムから始まり、プリンシパルロールのPartner_AとミラーロールのPartner_Bが含まれています。

証人とパートナーが協力する方法

シナリオ 1 は、元のプリンシパル サーバー (Partner_A) が故障した後に、ミラーリング証人とミラーがプリンシパル サーバー (Partner_A) が利用できなくなったことを確認し、クォーラムを形成する方法を示しています。 ミラーは、 Partner_B プリンシパルロールを引き受けます。 自動フェールオーバーが発生し、 Partner_B、データベースのコピーがオンラインになります。 その後 、Partner_B ダウンし、データベースがオフラインになります。 その後、以前のプリンシパルサーバーPartner_Aは証人サーバーに再接続してクォーラムを回復しますが、証人との通信の際、Partner_Aはデータベースのコピーをオンラインにできないと聞きます。これは、Partner_Bがプリンシパルの役割を現在所有しているためです。 Partner_Bセッションに再び参加すると、データベースがオンラインに戻ります。

シナリオ 2 では、証人はクォーラムを失いますが、パートナーであるPartner_APartner_Bは互いにクォーラムを保持しており、データベースはオンラインのままです。 その後、パートナーもクォーラムを失い、データベースはオフラインになります。 その後、プリンシパル サーバーPartner_Aは、ウィットネスと再接続し、クォーラムを再取得します。 証人はPartner_Aが主要な役割を依然として保持しており、Partner_Aがデータベースを再度オンラインに戻したことを確認します。

こちらもご覧ください

データベース ミラーリングの動作モード
データベース ミラーリング セッション中のロールの切り替え (SQL Server)
データベース ミラーリング監視サーバー
データベース ミラーリング中に発生する可能性のあるエラー
ミラーリング状態 (SQL Server)