次の方法で共有


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

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

注意注意

master、msdb、tempdb、または model の各データベースはミラー化できません。

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

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

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

  • データの保護が強化されます。

    データベース ミラーリングを使用すると、動作モードが高い安全性モードであるか高パフォーマンス モードであるかに応じて、データの冗長化が完全に、またはほぼ完全に行われます。詳細については、このトピックの「動作モード」を参照してください。

    SQL Server 2008 Enterprise 以降のバージョンで動作するデータベース ミラーリング パートナーには、データ ページの読み取りを妨げるエラーを自動的に解決するための機能が備わっています。ミラーリング セッションを構成する一方のパートナーは、ページを読み取れない場合、もう一方のパートナーに新しいコピーを要求します。要求が受け入れられ、新しいコピーを取得できた場合は、読み取り不可能なページがそのコピーに置き換えられます。通常、これによりエラーは解決します。詳細については、「データベース ミラーリング セッション中のページの自動修復」を参照してください。

  • データベースの可用性が向上します。

    障害が発生した場合、自動フェールオーバーを伴う高い安全性モードでは、フェールオーバーによりデータベースのスタンバイ コピーが即座にオンラインになります (データ損失の可能性はありません)。他の動作モードでは、データベース管理者はデータベースのスタンバイ コピーにサービスを強制する代替の方法 (データ損失の可能性あり) を使用できます。詳細については、このトピックの「役割の交代」を参照してください。

  • アップグレード中の実稼働データベースの可用性が向上します。

    ミラー化されたデータベースのダウンタイムを最小限に抑えるには、データベース ミラーリング セッションに参加している SQL Server のインスタンスを順次アップグレードします。これにより、ダウンタイムはフェールオーバー 1 回分のみになります。このようなアップグレード形態をローリング アップグレードと呼びます。詳細については、「ミラー化されたデータベースのダウンタイムを最小限に抑えて Service Pack をシステムにインストールする方法」を参照してください。

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

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

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

動作モード

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

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

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

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

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

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

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

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

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

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

注意注意

新しいミラーリング セッションを確立するには、関係するすべてのサーバー インスタンスが同じバージョンの SQL Server を実行している必要があります。ところが、SQL Server 2008 にアップグレードする際には、さまざまなバージョンのインスタンスが関係している場合もあります。詳細については、「サーバー インスタンスのアップグレード時に、ミラー化されたデータベースのダウンタイムを最小化する方法」を参照してください。

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

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

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

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

  • SAFETY オプションを OFF に設定している場合、データベース ミラーリング動作は非同期になります。セッションは高パフォーマンス モードで実行され、WITNESS オプションを OFF にする必要があります。

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

役割の交代

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

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

  • 自動フェールオーバー

    これには高い安全性モードが必要で、ミラー サーバーとミラーリング監視サーバーが存在している必要があります。データベースは既に同期されている必要があり、ミラーリング監視サーバーはミラー サーバーに接続している必要があります。

    ミラーリング監視サーバーの役割は、特定のパートナー サーバーが稼働しているかどうかを確認することです。ミラー サーバーがプリンシパル サーバーへの接続を失っても、ミラーリング監視サーバーがそのままプリンシパル サーバーに接続している場合、ミラー サーバーはフェールオーバーを開始しません。詳細については、「データベース ミラーリング監視サーバー」を参照してください。

  • 手動フェールオーバー

    これには高い安全性モードが必要です。パートナーは互いに接続されている必要があり、データベースは既に同期されている必要があります。

  • サービスの強制 (データ損失の可能性あり)

    自動フェールオーバーを伴わない高パフォーマンス モードと高い安全性モードでは、プリンシパル サーバーで障害が発生し、ミラー サーバーが使用可能な場合、サービスの強制が可能です。

    重要な注意事項重要

    高パフォーマンス モードは、ミラーリング監視サーバーなしでの実行を想定しています。ミラーリング監視サーバーが存在する場合、サービスの強制を行うにはミラーリング監視サーバーがミラー サーバーに接続している必要があります。

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

その他のデータベース エンジン機能との相互運用性と共存

データベース ミラーリングは、SQL Server の次の機能またはコンポーネントと共に使用できます。

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

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