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