データベース ミラーリングの概要

更新 : 2005 年 12 月 5 日

データベース ミラーリングは、データベースの可用性を高めるための、主要なソフトウェア ソリューションです。ミラーリングはデータベースごとに実装され、完全復旧モデルを使用するデータベースでのみ機能します。単純復旧モデルと一括ログ復旧モデルでは、データベース ミラーリングがサポートされていません。そのため、常にすべての一括操作が完全にログに記録されます。データベース ミラーリングは、サポートされているすべてのデータベース互換性レベルで動作します。

ms189852.note(ja-jp,SQL.90).gifメモ :
mastermsdbtempdbmodel の各データベースはミラー化できません。

データベース ミラーリングでは、データベースのコピーが 2 つ保持されます。2 つのコピーは、SQL Server データベース エンジンの異なるインスタンス (サーバー インスタンス) に配置する必要があります。通常、これらのサーバー インスタンスは、別の場所のコンピュータに存在します。ミラーリング セッションの構成と状態に応じて、一方のサーバー インスタンスはクライアントにデータベースを提供し (プリンシパル サーバー)、もう一方のサーバー インスタンスはホット スタンバイ サーバーまたはウォーム スタンバイ サーバーとして動作します (ミラー サーバー)。データベース ミラーリング セッションが同期される場合、データベース ミラーリングにより、高速のフェールオーバーをサポートするホット スタンバイ サーバーが提供され、コミット済みのトランザクションのデータが失われることはありません。セッションが同期されない場合、ミラー サーバーは通常ウォーム スタンバイ サーバーとして使用できます (データ損失の可能性があります)。

データベース ミラーリングの利点

データベース ミラーリングは単純なストラテジで、次に示す利点があります。

  • データの保護が強化されます。
    データベース ミラーリングを使用すると、動作モードが高い安全性モードであるか高パフォーマンス モードであるかに応じて、データの冗長化が完全に、またはほぼ完全に行われます。詳細については、このトピックの「動作モード」を参照してください。
  • データベースの可用性が向上します。
    障害が発生した場合、自動フェールオーバーを伴う高い安全性モードでは、フェールオーバーによりデータベースのスタンバイ コピーが即座にオンラインになります (データ損失の可能性はありません)。他の動作モードでは、データベース管理者はデータベースのスタンバイ コピーにサービスを強制する代替の方法 (データ損失の可能性あり) を使用できます。詳細については、このトピックの「役割の交代」を参照してください。
  • アップグレード中の実稼働データベースの可用性が向上します。
    ミラー化されたデータベースのダウンタイムを最小限に抑えるために、データベース ミラーリング セッションに参加している SQL Server のインスタンスを順番にアップグレードし、単一のフェールオーバーのダウンタイムのみを発生させることができます。この形式のアップグレードを、ローリング アップグレードといいます。詳細については、「ミラー化されたデータベースのダウンタイムを最小限に抑えてシステムに Service Pack をインストールする方法」を参照してください。

データベース ミラーリングのしくみ

プリンシパル サーバーとミラー サーバーは、データベース ミラーリング セッションの中でパートナーとして相互に通信および連携します。2 つのパートナーは、セッション内でプリンシパルおよびミラーという相互に補完する役割を担います。任意の時点で、一方のパートナーがプリンシパルの役割を担い、もう一方のパートナーがミラーの役割を担います。それぞれのパートナーは現在の役割を所有しているといいます。プリンシパルの役割を所有するパートナーをプリンシパル サーバーといい、このパートナーのデータベースのコピーが現在のプリンシパル データベースになります。ミラーの役割を所有するパートナーをミラー サーバーといい、このパートナーのデータベースのコピーが現在のミラー データベースになります。データベース ミラーリングを実稼働環境に配置した場合、プリンシパル データベースが実稼働データベースとなります。

データベース ミラーリングでは、プリンシパル データベースで発生したすべての挿入、更新、および削除操作が、できるだけ早くミラー データベースで再実行されます。再実行は、アクティブなすべてのトランザクション ログ レコードをミラー サーバーに送信することにより行われます。ログ レコードは、できるだけ早く順番にミラー データベースに適用されます。論理レベルで機能するレプリケーションとは異なり、データベース ミラーリングは物理ログ レコードのレベルで機能します。

動作モード

データベース ミラーリング セッションは、同期動作または非同期動作のどちらかで実行されます。非同期動作では、ミラー サーバーでログがディスクに書き込まれるのを待機することなくトランザクションがコミットされるので、パフォーマンスが最大限に高められます。同期動作では、コミットしたトランザクションが両方のパートナーでコミットされる反面、トランザクションの遅延が大きくなるというデメリットがあります。

ミラーリングには、2 つの動作モードがあります。1 つ目の動作モードである高い安全性モードでは、同期操作がサポートされています。このモードでは、セッションが開始すると、できるだけ早くミラー サーバーのミラー データベースとプリンシパル データベースが同期されます。これらのデータベースが同期されると、コミットしたトランザクションが両方のパートナーでコミットされる反面、トランザクションの遅延が大きくなるというデメリットがあります。

2 つ目の動作モードである高パフォーマンス モードは、非同期で実行されます。ミラー サーバーはプリンシパル サーバーから送信されるログ レコードとの時間差を埋めようとします。ミラー データベースは、プリンシパル データベースよりやや遅れることがありますが、データベース間の時間差は通常小さくなります。ただし、プリンシパル サーバーのワークロードが高い場合やミラー サーバーのシステムの負荷が過剰に高い場合は、この時間差が大きくなることがあります。

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

すべてのデータベース ミラーリング セッションでは、1 つのプリンシパル サーバーと 1 つのミラー サーバーだけがサポートされます。次の図は、この構成を示しています。

データベース ミラーリング セッションのパートナー

自動フェールオーバーを伴う高い安全性モードでは、ミラーリング監視サーバーと呼ばれる第 3 のサーバー インスタンスが必要です。2 つのパートナーとは異なり、ミラーリング監視サーバーではデータベースの操作は行いません。ミラーリング監視サーバーは、プリンシパル サーバーが正常に動作しているかどうかを確認することにより、自動フェールオーバーをサポートするだけです。ミラー サーバーが自動フェールオーバーを開始するのは、ミラー サーバーとミラーリング監視サーバーの両方がプリンシパル サーバーから切断された後、そのまま相互に接続されている場合だけです。

下図に、ミラーリング監視サーバーを含めた構成を示します。

ミラーリング監視サーバーを含むミラーリング セッション

詳細については、このトピックの「役割の交代」を参照してください。

トランザクションの安全性と動作モード

動作モードは、トランザクションの安全性の設定によって、同期または非同期のいずれかになります。SQL Server Management Studio だけを使用してデータベース ミラーリングを構成する場合、動作モードを選択するとトランザクションの安全性の設定が自動的に構成されます。

Transact-SQL を使用してデータベース ミラーリングを構成する場合は、トランザクションの安全性の設定方法を理解しておく必要があります。トランザクションの安全性は、ALTER DATABASE ステートメントの SAFETY プロパティにより制御されます。ミラー化されるデータベースでは、SAFETY は FULL または OFF になります。

  • SAFETY オプションが FULL に設定されている場合、初期同期フェーズの後、データベース ミラーリング動作が同期されます。ミラーリング監視サーバーが高い安全性モードに設定されている場合、セッションでは自動フェールオーバーがサポートされます。
  • SAFETY オプションを OFF に設定している場合、データベース ミラーリング動作は非同期になります。セッションは高パフォーマンス モードで実行され、WITNESS オプションを OFF にする必要があります。

詳細については、「Transact-SQL の設定とデータベース ミラーリングの動作モード」を参照してください。

役割の交代

データベース ミラーリング セッションでは、役割の交代という処理により、一般的にプリンシパルとミラーの役割を相互交換できます。役割の交代では、プリンシパルの役割がミラー サーバーに移行されます。役割の交代では、ミラー サーバーがプリンシパル サーバーのフェールオーバー パートナーとして動作します。役割の交代が発生すると、ミラー サーバーがプリンシパルの役割を継承し、データベースのコピーがプリンシパル データベースとしてオンラインになります。以前のプリンシパル サーバーは利用可能であればミラーの役割を担い、サーバー内のデータベースを新しいミラー データベースにします。場合によっては、役割を何度も交代できます。

役割の交代には次の 3 つの形態があります。

  • 自動フェールオーバー
    これには高い安全性モードが必要で、ミラー サーバーとミラーリング監視サーバーが存在している必要があります。データベースは既に同期されている必要があり、ミラーリング監視サーバーはミラー サーバーに接続している必要があります。
    ミラーリング監視サーバーの役割は、特定のパートナー サーバーが稼働しているかどうかを確認することです。ミラー サーバーがプリンシパル サーバーへの接続を失っても、ミラーリング監視サーバーがそのままプリンシパル サーバーに接続している場合、ミラー サーバーはフェールオーバーを開始しません。詳細については、「データベース ミラーリング監視サーバー」を参照してください。
  • 手動フェールオーバー
    これには高い安全性モードが必要です。パートナーは互いに接続されている必要があり、データベースは既に同期されている必要があります。
  • サービスの強制 (データ損失の可能性あり)
    自動フェールオーバーを伴わない高パフォーマンス モードと高い安全性モードでは、プリンシパル サーバーで障害が発生し、ミラー サーバーが使用可能な場合、サービスの強制が可能です。
    ms189852.note(ja-jp,SQL.90).gif重要 :
    高パフォーマンス モードは、ミラーリング監視サーバーなしでの実行を想定しています。ミラーリング監視サーバーが存在する場合、サービスの強制を行うにはミラーリング監視サーバーがミラー サーバーに接続している必要があります。

どの役割の交代シナリオでも、新しいプリンシパル データベースがオンラインになると、クライアント アプリケーションはデータベースに再接続することにより即座に復旧できます。

データベース ミラーリングのサポート

データベース ミラーリング パートナーおよびミラーリング監視サーバーは SQL Server 2005 Standard Edition SP1 以降のバージョンおよび SQL Server 2005 Enterprise Edition SP1 以降のバージョンでのみサポートされます。ただし、パートナーは同じエディションを使用する必要があり、非同期データベース ミラーリング (高パフォーマンス モード) は SQL Server 2005 Enterprise Edition SP1 以降のバージョンでのみサポートされます。ミラーリング監視サーバーは、SQL Server 2005 Workgroup Edition SP1 以降のバージョンおよび SQL Server 2005 Express Edition SP1 以降のバージョンでもサポートされます。

データベース ミラーリング関連のトピック

参照

その他の技術情報

ミラー化されたデータベースへのクライアント接続
データベース ミラーリングとその他の機能およびコンポーネント
sp_dbcmptlevel (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手