クォーラム : データベースの可用性にミラーリング監視サーバーが与える影響

データベース ミラーリング セッションにミラーリング監視サーバーが設定されている場合は必ず、クォーラムが必要になります。クォーラムとは、データベース ミラーリング セッションで複数のサーバー インスタンスが相互接続されているときに存在するリレーションシップです。通常、クォーラムには 3 つの相互接続されたサーバー インスタンスが関係します。ミラーリング監視サーバーが設定されている場合、データベースを使用可能にするために、クォーラムが必要になります。クォーラムは、自動フェールオーバーを伴う高い安全性モードのために設計されています。クォーラムを使用することで、データベースを所有するパートナーが一度に 1 つのみになるように制限できます。

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

  • 完全なクォーラムには、両方のパートナーとミラーリング監視サーバーが含まれます。

  • ミラーリング監視サーバーとパートナー間のクォーラムは、ミラーリング監視サーバーといずれかのパートナーから構成されます。

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

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

クォーラム: 完全; ミラーリング監視サーバーおよびパートナー; 両方のパートナー

現在のプリンシパル サーバーがクォーラムを保持している限り、データベース所有者が手動フェールオーバーを実行した場合を除き、そのサーバーがプリンシパルの役割を担い、データベースとして機能し続けます。プリンシパル サーバーは、クォーラムを失った場合、データベースとして機能しなくなります。自動フェールオーバーは、プリンシパル データベースがクォーラムを失い、プリンシパル データベースが機能しなくなることが確実である場合にのみ、発生する可能性があります。

切断されたサーバー インスタンスは、そのセッションで最後に担っていた役割を保存します。通常、切断されたサーバー インスタンスは、再起動されたときにセッションに再接続され、クォーラムを再度獲得します。

重要な注意事項重要

ミラーリング監視サーバーは、自動フェールオーバーを伴う高い安全性モードを使用する場合にのみ設定してください。ミラーリング監視サーバーが必要になることがない高パフォーマンス モードでは、WITNESS プロパティを OFF に設定することを強くお勧めします。高パフォーマンス モード セッションでデータベースの可用性にミラーリング監視サーバーが与える影響については、「非同期データベース ミラーリング (高パフォーマンス モード)」を参照してください。

高い安全性モードのセッションにおけるクォーラム

高い安全性モードでは、クォーラムにより自動フェールオーバーが可能になります。その際、クォーラムから提供されるコンテキストで、クォーラム属性のあるサーバー インスタンスは、プリンシパルの役割を担っているパートナーを特定できます。プリンシパル サーバーは、クォーラムがあればデータベースを提供します。同期ミラー サーバーとミラーリング監視サーバーにクォーラムがある場合にプリンシパル サーバーがクォーラムを失うと、自動フェールオーバーが発生します。

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

  • 両方のパートナーとミラーリング監視サーバーから構成されている完全なクォーラム。

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

  • ミラーリング監視サーバーといずれかのパートナーから構成されるミラーリング監視サーバーとパートナー間のクォーラム。

    パートナー間のネットワーク接続が、いずれかのパートナーが失われたことが原因で切断された場合、次の 2 つの状況が考えられます。

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

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

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

      この場合、自動フェールオーバーが発生します。詳細については、「自動フェールオーバー」を参照してください。

    フェールオーバー パートナーがどちらもミラーリング監視サーバーに接続されている間に、パートナー間のネットワーク接続が切断されることがまれにあります。切断された場合は、ミラーリング監視サーバーとパートナー間のクォーラムが 2 つ別々に存在し、ミラーリング監視サーバーが連絡役となります。ミラーリング監視サーバーは、プリンシパル サーバーがまだ接続されていることをミラー サーバーに通知します。そのため、自動フェールオーバーは行われません。この場合、ミラー サーバーはミラーの役割を維持し、プリンシパルへの再接続を待ちます。再実行キューにこの時点のログ レコードが含まれている場合、ミラー サーバーはミラー データベースのロールフォワードを続行します。再接続時に、ミラー サーバーはミラー データベースとの再同期を実行します。

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

    パートナーがクォーラムを保持している限り、データベースは SYNCHRONIZED の状態で続行され、手動フェールオーバーも引き続き実行できます。ミラーリング監視サーバーがないと自動フェールオーバーを行えません。ただし、ミラーリング監視サーバーがクォーラムを保持している場合、セッションは通常の動作を再開し、自動フェールオーバーが再びサポートされます。

  • セッションがクォーラムを失う。

    すべてのサーバー インスタンスが互いに切断された場合、セッションがクォーラムを失うといいます。サーバー インスタンスは互いに再接続されるときに、他の各サーバー インスタンスとのクォーラムを再度獲得します。

    • プリンシパル サーバーが他のサーバー インスタンスのいずれかと再接続すると、データベースを使用できるようになります。

    • プリンシパル サーバーが切断された状態で、ミラー サーバーとミラーリング監視サーバーが互いに再接続されても、データの損失が発生することがあるため自動フェールオーバーは行われません。そのため、プリンシパル サーバーがセッションに再度参加するまでは、データベースを使用できません。

    • 3 つすべてのサーバー インスタンスが再接続されたら、完全なクォーラムは再度獲得され、セッションは通常の動作を再開します。

重要な注意事項重要

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

クォーラムによるデータベースの可用性への影響

次の図は、一度に 1 つのパートナーのみがプリンシパル ロールを保持し、現在のプリンシパル サーバーのみが自身のデータベースをオンラインにできるようにするために、ミラーリング監視サーバーとパートナーを連携させる方法について示しています。どちらのシナリオも、完全なクォーラムがあり、Partner_A にプリンシパル ロール、Partner_B にミラー ロールが割り当てられた状態で始まります。

ミラーリング監視サーバーとパートナーによる相互作用の方法

シナリオ 1 は、元のプリンシパル サーバー (Partner_A) に障害が発生した後に、Partner_A が使用不可となったものとミラーリング監視サーバーおよびミラー サーバーが判断し、クォーラムを形成する様子を示しています。ミラーの Partner_B がプリンシパル ロールを引き継ぎます。自動フェールオーバーが発生すると、Partner_B は自身が持っているデータベースのコピーをオンラインにします。次に Partner_B に障害が発生し、データベースがオフラインになります。後で、以前のプリンシパル サーバーである Partner_A がミラーリング監視サーバーに再接続してクォーラムを取り戻しますが、ミラーリング監視サーバーと通信した結果、現在は Partner_B がプリンシパル ロールであるために、Partner_A は自身が持っているデータベースのコピーをオンラインにできないことを認識します。Partner_B は、セッションに再び加わると、データベースを再びオンラインにします。

シナリオ 2 では、ミラーリング監視サーバーがクォーラムを失いますが、Partner_APartner_B のパートナーが互いにクォーラムを保持し、データベースをオンライン状態に保ちます。次に、両パートナーもクォーラムを失い、データベースがオフラインになります。その後、プリンシパル サーバーである Partner_A がミラーリング監視サーバーに再接続し、クォーラムを取り戻します。ミラーリング監視サーバーは、Partner_A がまだプリンシパル ロールを保持していることを確認し、Partner_A がデータベースをオンラインに戻します。