適用対象:SQL Server
データベース ミラーリング セッションにミラーリング監視サーバーが設定されている場合は必ず、 クォーラム が必要になります。 クォーラムとは、データベース ミラーリング セッションで複数のサーバー インスタンスが相互接続されているときに存在するリレーションシップです。 通常、クォーラムには 3 つの相互接続されたサーバー インスタンスが関係します。 ミラーリング監視サーバーが設定されている場合、データベースを使用可能にするために、クォーラムが必要になります。 クォーラムは、自動フェールオーバーを伴う高い安全性モードのために設計されています。クォーラムを使用することで、データベースを所有するパートナーが一度に 1 つのみになるように制限できます。
特定のサーバー インスタンスがミラーリング セッションから切断されると、そのインスタンスはクォーラムを失います。 接続されているサーバー インスタンスがない場合、セッションはクォーラムを失い、データベースは使用できなくなります。 次の 3 種類のクォーラムが考えられます。
完全なクォーラム には、両方のパートナーとミラーリング監視サーバーが含まれます。
監視サーバーとパートナーによるクォーラムは、監視サーバーといずれか一方のパートナーで構成されます。
パートナー間クォーラム は、2 つのパートナーから構成されます。
次の図に、これらの種類のクォーラムを示します。
現在のプリンシパル サーバーがクォーラムを保持している限り、データベース所有者が手動フェールオーバーを実行した場合を除き、そのサーバーがプリンシパルの役割を担い、データベースとして機能し続けます。 プリンシパル サーバーは、クォーラムを失った場合、データベースとして機能しなくなります。 自動フェールオーバーは、プリンシパル データベースがクォーラムを失い、プリンシパル データベースが機能しなくなることが確実である場合にのみ、発生する可能性があります。
切断されたサーバー インスタンスは、そのセッションで最後に担っていた役割を保存します。 通常、切断されたサーバー インスタンスは、再起動されたときにセッションに再接続され、クォーラムを再度獲得します。
重要
ウィットネスは、自動フェールオーバーを使用する高安全モードを使用する場合にのみ設定してください。 witness が不要な高パフォーマンス モードでは、WITNESS プロパティを OFF に設定することを強くお勧めします。 高パフォーマンス モードにおける Witness の影響については、「データベース ミラーリングの動作モード」を参照してください。
高安全性モードのセッションでのクォーラム
高い安全性モードでは、クォーラムにより自動フェールオーバーが可能になります。その際、クォーラムから提供されるコンテキストで、クォーラム属性のあるサーバー インスタンスは、プリンシパルの役割を担っているパートナーを特定できます。 プリンシパル サーバーは、クォーラムがあればデータベースを提供します。 同期ミラー サーバーとミラーリング監視サーバーにクォーラムがある場合にプリンシパル サーバーがクォーラムを失うと、自動フェールオーバーが発生します。
高い安全性モードにおけるクォーラムのシナリオは次のとおりです。
両方のパートナーと監視サーバーで構成される完全なクォーラム。
通常は、3 つすべてのサーバー インスタンスが、 完全なクォーラムという 3 方向のクォーラムに参加します。 完全なクォーラムでは、プリンシパル サーバーとミラー サーバーがそれぞれの役割を (手動フェールオーバーが行われない限り) 実行し続けます。
証人サーバーといずれか一方のパートナーで構成される証人サーバーとパートナーのクォーラム。
パートナー間のネットワーク接続が、いずれかのパートナーが失われたことが原因で切断された場合、次の状況が考えられます。
ミラー サーバーが使用不能になり、プリンシパル サーバーと Witness サーバーはクォーラムを保持します。
この場合、プリンシパルは自身のデータベースを DISCONNECTED に設定し、ミラーリングを SUSPENDED 状態で実行します。 (この状態は、データベースが現在ミラー化されていないので、不安定な実行と呼ばれます。)ミラー サーバーがセッションに再度参加すると、ミラーとしてクォーラムを再度獲得し、データベースのコピーの再同期を開始します。
プリンシパル サーバーが失われた場合でも、監視サーバーとミラー サーバーはクォーラムを維持します。
この場合、自動フェールオーバーが発生します。 詳しくは、「 Database Mirroring Operating Modes」をご覧ください。
すべてのサーバー インスタンスでクォーラムが失われますが、その後、ミラー サーバーとミラーリング監視サーバーは再接続されます。 この場合、データベースは提供されません。
まれに、両方のフェールオーバー パートナーがミラーリング監視サーバーに接続されたままでも、パートナー間のネットワーク接続が失われることがあります。 この場合、ミラーリング監視サーバーとパートナー間の別個のクォーラムが 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_AとPartner_Bは互いにクォーラムを保持するため、データベースはオンラインのままです。 次に、両パートナーもクォーラムを失い、データベースがオフラインになります。 その後、プリンシパル サーバーである Partner_Aがミラーリング監視サーバーに再接続し、クォーラムを取り戻します。 ミラーリング監視サーバーは、 Partner_A がまだプリンシパル ロールを保持していることを確認し、 Partner_A がデータベースをオンラインに戻します。