非同期データベース ミラーリング (高パフォーマンス モード)

更新 : 2005 年 12 月 5 日

トランザクションの安全性が OFF に設定されていると、データベース ミラーリング セッションが非同期に動作します。非同期動作は、高パフォーマンス モードという動作モードのみでサポートされています。このモードでは高可用性という点を譲歩してパフォーマンスが強化されています。高パフォーマンス モードでは、プリンシパル サーバーおよびミラー サーバーのみを使用します。ミラー サーバーで発生した問題がプリンシパル サーバーに影響を及ぼすことはありません。プリンシパル サーバーが停止した場合、ミラー データベースは DISCONNECTED になりますがウォーム スタンバイ状態で利用できます。

高パフォーマンス モードでサポートされている役割の交代方法は、"強制されたサービス" のみです (データ損失の可能性があります)。この方法では、ミラー サーバーをウォーム スタンバイ サーバーとして使用します。強制されたサービスは、プリンシパル サーバーの障害に対して取ることのできる対応の 1 つです。データの損失が発生する可能性があるので、ミラーにサービスを強制する前に、まず別の対応策がないか検討してください。詳細については、このトピックの「プリンシパルの障害への対応」を参照してください。

下図に、高パフォーマンス モードのセッション構成を示します。

パートナーのみの構成によるセッション

高パフォーマンス モードでは、プリンシパル サーバーはミラー サーバーにトランザクションのログを送信すると、その直後にミラー サーバーからの受信確認を待機することなくクライアントに確認を送信します。トランザクションは、ミラー サーバーでログがディスクに書き込まれるのを待機することなく、コミットされます。非同期動作では、トランザクションの遅延を最小限に抑えてプリンシパル サーバーを実行できます。

ミラー サーバーはプリンシパル サーバーから送信されるログ レコードとの時間差を埋めようとします。ミラー データベースは、プリンシパル データベースよりやや遅れることがありますが、データベース間の時間差は通常小さくなります。ただし、プリンシパル サーバーのワークロードが高い場合やミラー サーバーのシステムの負荷が限界を超えた場合は、この時間差が大きくなることがあります。

高パフォーマンス モードの使用を推奨するケース

プリンシパル サーバーから非常に離れた場所にミラー サーバーを設置していたり、軽度のエラーによるプリンシパル サーバーへの影響でも不都合が生じる災害復旧シナリオでは、高パフォーマンス モードが適切である場合があります。

ms187110.note(ja-jp,SQL.90).gifメモ :
ログ配布はデータベース ミラーリングを補うことができ、非同期データベース ミラーリングの有効な代替手段です。ログ配布の利点については、「高可用性の構成」を参照してください。データベース ミラーリングとログ配布の併用の詳細については、「データベース ミラーリングとログ配布」を参照してください。

高パフォーマンス モードのミラーリング監視の影響

Transact-SQL を使用して高パフォーマンス モードを構成する場合、SAFETY プロパティを OFF に設定した際には常に、WITNESS プロパティも OFF に設定することを強くお勧めします。ミラーリング監視は高パフォーマンス モードでも使用できますが、使用による利点はなく、リスクが増えるだけです。

いずれかのパートナーがダウンし、ミラーリング監視がセッションから切断された場合、データベースは使用できなくなります。この理由は、高パフォーマンス モードにミラーリング監視は本来必要でないにもかかわらず、ミラーリング監視が設定されている場合、セッションには 2 つ以上のサーバー インスタンスから構成されるクォーラムが必要になるからです。セッションがクォーラムを失った場合、データベースとして機能することができません。

ミラーリング監視が高パフォーマンス モード セッションで設定された場合、クォーラムを適用すると次のようになります。

  • ミラー サーバーが失われた場合、プリンシパル サーバーをミラーリング監視サーバーに接続する必要があります。クォーラムがない場合、プリンシパル サーバーは、ミラーリング監視サーバーまたはミラー サーバーのいずれかが再度セッションに参加するまで、データベースをオフラインにします。
  • プリンシパル サーバーが失われた場合、ミラー サーバーにサービスを強制するには、ミラー サーバーがミラーリング監視に接続している必要があります。
ms187110.note(ja-jp,SQL.90).gifメモ :
クォーラムの種類の詳細については、「クォーラム : データベースの可用性にミラーリング監視サーバーが与える影響」を参照してください。

プリンシパルの障害への対応

プリンシパルに障害が発生した場合、データベースの所有者は次のいずれかを選択できます。

  • プリンシパルが再度使用できるようになるまで、データベースを復旧しない。
    プリンシパル データベースおよびそのトランザクション ログが破損していない場合、コミットされたすべてのトランザクションを維持できますが、可用性の点で譲歩が必要になります。
  • データベース ミラーリング セッションを停止し、手動でデータベースを更新してから、新しいデータベース ミラーリング セッションを開始する。
    プリンシパル データベースが損失していても、プリンシパル サーバーが実行中であればプリンシパル データベースのログ末尾を早急にバックアップします。ログ末尾のバックアップに成功したら、ミラーリングを削除することが通常は最善の選択肢です。ミラーリングを削除した後は、すべてのデータが保存されている、以前のミラー データベースにログを復元できます。
    ms187110.note(ja-jp,SQL.90).gifメモ :
    ログ末尾のバックアップに失敗してプリンシパル サーバーの復旧を待てない場合、サービスの強制を検討してください。この方法には、セッションの状態を維持できるという利点があります。
  • ミラー サーバーにサービスを強制する (データが損失する可能性があります)。
    強制されたサービスは、厳密には災害時の復旧方法なので、慎重に使用する必要があります。サービスを強制できるのは、プリンシパル サーバーがダウンし、セッションが非同期である (トランザクションの安全性が OFF に設定されている) 状態で、セッションにミラーリング監視サーバーが存在しない (WITNESS プロパティが OFF に設定されている) か、ミラーリング監視サーバーがミラー サーバーに接続している (つまり、クォーラムがある) かのいずれかの場合に限ります。
    サービスを強制されたミラー サーバーは、プリンシパルの役割を引き継ぎ、サーバー内にあるデータベースのコピーをクライアントに提供します。サービスが強制された時点でミラー サーバーに送信されていないプリンシパルのトランザクション ログは、すべて失われます。このため、強制されたサービスを使用する方法は、データを損失する可能性を許容でき、データベースの早急な復旧が最優先される場合にのみ使用するようにしてください。サービス強制のしくみ、およびそれを使用する際のベスト プラクティスの詳細については、「強制的なサービスの起動 (データ損失の可能性あり)」を参照してください。

参照

概念

強制的なサービスの起動 (データ損失の可能性あり)
同期データベース ミラーリング (高い安全性モード)
Transact-SQL の設定とデータベース ミラーリングの動作モード
ログ配布について

ヘルプおよび情報

SQL Server 2005 の参考資料の入手