注
この機能は、今後のバージョンの Microsoft SQL Server で削除される予定です。 新しい開発作業ではこの機能を使用しないでください。現在この機能を使用しているアプリケーションを変更することを計画してください。 代わりにAlways On可用性グループを使用します。
データベース ミラーリング は、SQL Server データベースの可用性を高めるためのソリューションです。 ミラーリングはデータベースごとに実装され、完全復旧モデルを使用するデータベースでのみ機能します。
重要
データベース ミラーリングのサポート、制限事項、前提条件、パートナー サーバーの構成に関する推奨事項、およびデータベース ミラーリングの展開に関する推奨事項については、「データベース ミラーリングの 前提条件、制限事項、および推奨事項」を参照してください。
データベース ミラーリングの利点
データベース ミラーリングは、次の利点を提供する簡単な戦略です。
データベースの可用性が向上します。
障害が発生した場合、自動フェールオーバーを備えた高い安全性モードでは、フェールオーバーによってデータベースのスタンバイ コピーが (データ損失なしで) すぐにオンラインになります。 他の動作モードでは、データベース管理者は、データベースのスタンバイ コピーにサービス (データ損失の可能性あり) を強制する代替手段を持ちます。 詳細については、このトピックで後述する 「ロールの切り替え」を参照してください。
データ保護を強化します。
データベース ミラーリングは、動作モードが高い安全性と高パフォーマンスのいずれであるかに応じて、データの完全またはほぼ完全な冗長性を提供します。 詳細については、このトピックで後述 する「動作モード」を参照してください。
SQL Server 2008 Enterprise 以降のバージョンで実行されているデータベース ミラーリング パートナーは、データ ページの読み取りを妨げる特定の種類のエラーを自動的に解決しようとします。 ページを読み取ることができないパートナーは、他のパートナーに新しいコピーを要求します。 要求が受け入れられ、新しいコピーを取得できた場合は、読み取り不可能なページがそのコピーに置き換えられます。通常、これによりエラーは解決します。 詳細については、 ページの自動修復 (可用性グループとデータベース ミラーリングの場合) を参照してください。
アップグレード中の運用データベースの可用性が向上します。
ミラー化されたデータベースのダウンタイムを最小限に抑えるために、フェールオーバー パートナーをホストしている SQL Server のインスタンスを順番にアップグレードできます。 これにより、1 回のフェールオーバーのみのダウンタイムが発生します。 この形式のアップグレードは、 ローリング アップグレードと呼ばれます。 詳細については、「 ミラー化されたデータベースのダウンタイムを最小限に抑えたシステムへの Service Pack のインストール」を参照してください。
データベース ミラーリングの用語と定義
自動フェールオーバー
プリンシパル サーバーが使用できなくなった場合に、ミラー サーバーがプリンシパル サーバーの役割を引き継ぎ、プリンシパル データベースとしてデータベースのコピーをオンラインにするプロセス。
フェールオーバー パートナー
ミラー化されたデータベースのロール切り替えパートナーとして機能する 2 つのサーバー インスタンス (プリンシパル サーバーまたはミラー サーバー)。
強制サービス
ミラー データベースが不明な状態にある間にサービスを転送するプリンシパル サーバーの障害時に、データベース所有者によって開始されるフェールオーバー。
高パフォーマンス モード
データベース ミラーリング セッションは非同期的に動作し、プリンシパル サーバーとミラー サーバーのみを使用します。 ロールの切り替えの唯一の形式は、強制サービスです (データ損失の可能性があります)。
高い安全性モード (High-safety mode)
データベース ミラーリング セッションは同期的に動作し、必要に応じて、主サーバー、ミラー サーバー、およびウィットネス(監視)サーバーを使用します。
手動フェールオーバー
プリンシパル サーバーの実行中にデータベース所有者が開始したフェールオーバー。同期状態にある間、プリンシパル データベースからミラー データベースにサービスを転送します。
ミラー データベース
通常、プリンシパル データベースと完全に同期されるデータベースのコピー。
ミラー サーバー
データベース ミラーリング構成では、ミラー データベースが存在するサーバー インスタンス。
ミラー サーバー
データベース ミラーリング構成では、ミラー データベースが存在するサーバー インスタンス。
主要なデータベース
データベース ミラーリングでは、トランザクション ログ レコードがデータベースの読み取り専用コピー (ミラー データベース) に適用される読み取り/書き込みデータベース。
プリンシパル サーバー
データベース ミラーリングでは、現在そのデータベースがプリンシパル データベースであるパートナーです。
再実行キュー
ミラー サーバーのディスクで待機しているトランザクション ログ レコードを受信しました。
役割
プリンシパル サーバーとミラー サーバーは、補完的なプリンシパルとミラーの役割を実行します。 必要に応じて、監視の役割は、3 番目のサーバー インスタンスによって実行されます。
ロールの切り替え
ミラーによるプリンシパルロールの引き継ぎ。
キューの送信
プリンシパル サーバーのログ ディスクに蓄積された未送信のトランザクション ログ レコード。
セッション
プリンシパル サーバー、ミラー サーバー、およびミラーリング監視サーバー間のデータベース ミラーリング中に発生するリレーションシップ (存在する場合)。
ミラーリング セッションの開始または再開後、プリンシパル サーバーに蓄積されたプリンシパル データベースのログ レコードをミラー サーバーに送信するプロセス。これにより、これらのログ レコードができるだけ早くディスクに書き込まれ、プリンシパル サーバーに追いつきます。
トランザクションの安全性
データベース ミラーリング セッションが同期的に動作するか非同期的に動作するかを決定するミラーリング固有のデータベース プロパティ。 安全レベルには、FULL と OFF の 2 つがあります。
ミラーリング監視サーバー
高い安全性モードでのみ使用する場合、ミラー サーバーが自動フェールオーバーを開始するタイミングを認識できるようにする SQL Server の省略可能なインスタンス。 2 つのフェールオーバー パートナーとは異なり、ウィットネスはデータベースにサービスを提供しません。 自動フェールオーバーのサポートは、ミラーリング監視サーバーの唯一の役割です。
データベース ミラーリングの概要
データベース ミラーリングでは、SQL Server データベース エンジンの異なるサーバー インスタンスに存在する必要がある 1 つのデータベースの 2 つのコピーが保持されます。 通常、これらのサーバー インスタンスは、異なる場所にあるコンピューター上に存在します。 データベースでデータベース ミラーリングを開始すると、これらのサーバー インスタンス間のリレーションシップ ( データベース ミラーリング セッションと呼ばれます) が開始されます。
1 つのサーバー インスタンスがデータベースをクライアント ( プリンシパル サーバー) に提供します。 もう 1 つのインスタンスは、ミラーリング セッションの構成と状態に応じて、ホット スタンバイ サーバーまたはウォーム スタンバイ サーバー (ミラー サーバー) として機能します。 データベース ミラーリング セッションが同期されると、データベース ミラーリングによってホット スタンバイ サーバーが提供されます。このサーバーは、コミットされたトランザクションからデータを失うことなく、高速フェールオーバーをサポートします。 セッションが同期されていない場合、ミラー サーバーは通常、ウォーム スタンバイ サーバーとして使用できます (データ損失の可能性があります)。
プリンシパル サーバーとミラー サーバーは、データベース ミラーリング セッションでパートナーとして通信し、連携します。 2 つのパートナーは、セッションで補完的な役割 ( プリンシパル ロール と ミラー ロール) を実行します。 一方のパートナーがプリンシパル ロールを実行し、もう一方のパートナーがミラー ロールを実行します。 各パートナーは、現在の役割を保持している と説明されています。 プリンシパル ロールを所有するパートナーは プリンシパル サーバーと呼ばれ、データベースのコピーは現在のプリンシパル データベースです。 ミラー ロールを所有するパートナーは ミラー サーバーと呼ばれ、データベースのコピーは現在のミラー データベースです。 データベース ミラーリングが運用環境にデプロイされている場合、プリンシパル データベースは 運用データベースです。
データベース ミラーリングでは、プリンシパル データベースで 発生するすべての挿入 、更新、削除操作を、可能な限り迅速にミラー データベースに再実行する必要があります。 再実行は、アクティブなトランザクション ログ レコードのストリームをミラー サーバーに送信することによって実現されます。このストリームは、ログ レコードをミラー データベースにできるだけ早く順番に適用します。 論理レベルで動作するレプリケーションとは異なり、データベース ミラーリングは物理ログ レコードのレベルで機能します。 SQL Server 2008 以降では、プリンシパル サーバーはトランザクション ログ レコードのストリームを圧縮してからミラー サーバーに送信します。 このログ圧縮は、すべてのミラーリング セッションで行われます。
注
特定のサーバー インスタンスは、同じまたは異なるパートナーとの複数の同時データベース ミラーリング セッションに参加できます。 サーバー インスタンスは、あるセッションではパートナーとして、別のセッションでは証人として役割を果たすことができます。 ミラー サーバー インスタンスは、同じエディションの SQL Server を実行している必要があります。
動作モード
データベース ミラーリング セッションは、同期操作または非同期操作で実行されます。 非同期操作では、ミラー サーバーがログをディスクに書き込むのを待たずにトランザクションがコミットされるため、パフォーマンスが最大化されます。 同期操作では、トランザクションは両方のパートナーでコミットされますが、トランザクションの待機時間が長くなります。
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 にする必要があります。
詳細については、「 データベース ミラーリングの動作モード」を参照してください。
役割の交代
データベース ミラーリング セッションのコンテキスト内では、プリンシパル ロールとミラー ロールは、通常、 ロールの切り替えと呼ばれるプロセスで交換可能です。 ロールの切り替えには、プリンシパル ロールをミラー サーバーに転送する必要があります。 ロールの切り替えでは、ミラー サーバーはプリンシパル サーバーの フェールオーバー パートナー として機能します。 ロールの切り替えが発生すると、ミラー サーバーはプリンシパル ロールを引き継ぎ、データベースのコピーを新しいプリンシパル データベースとしてオンラインにします。 以前のプリンシパル サーバー (使用可能な場合) はミラー ロールを引き受け、そのデータベースは新しいミラー データベースになります。 場合によっては、ロールは繰り返し切り替えることができます。
ロールの切り替えには、次の 3 つの形式があります。
自動フェールオーバー
これには安全性が高いモード、およびミラーサーバーと証人の存在が必要です。 データベースは既に同期されている必要があり、証人はミラーサーバーに接続されている必要があります。
監視の役割は、特定のパートナー サーバーが稼働していて機能しているかどうかを確認することです。 ミラー サーバーがプリンシパル サーバーへの接続を失っても、ミラーリング監視サーバーは引き続きプリンシパル サーバーに接続されている場合、ミラー サーバーはフェールオーバーを開始しません。 詳細については、「 データベース ミラーリング監視」を参照してください。
手動フェールオーバー
これには、高い安全性モードが必要です。 パートナーは相互に接続されている必要があり、データベースは既に同期されている必要があります。
強制サービス (データ損失の可能性あり)
高パフォーマンス モードと自動フェールオーバーなしの高い安全性モードでは、プリンシパル サーバーに障害が発生し、ミラー サーバーが使用可能な場合は、サービスの強制が可能です。
重要
高パフォーマンス モードは、監視なしで実行することを目的としています。 ただし、ミラーリング監視サーバーが存在する場合、サービスを強制するにはミラーリング監視サーバーがミラー サーバーに接続されている必要があります。
ロール切り替えシナリオでは、新しいプリンシパル データベースがオンラインになるとすぐに、クライアント アプリケーションはデータベースに再接続することで迅速に復旧できます。
同時セッション数
特定のサーバー インスタンスは、同じサーバー インスタンスまたは異なるサーバー インスタンスを持つ複数の同時データベース ミラーリング セッション (ミラー化されたデータベースごとに 1 回) に参加できます。 多くの場合、サーバー インスタンスは、すべてのデータベース ミラーリング セッションでパートナーまたはミラーリング監視サーバーとしてのみ機能します。 ただし、各セッションは他のセッションから独立しているため、サーバー インスタンスは、一部のセッションではパートナーとして機能し、他のセッションではミラーリング監視サーバーとして機能できます。 たとえば、3 つのサーバー インスタンス (SSInstance_1
、 SSInstance_2
、 SSInstance_3
) の 4 つのセッションについて考えてみます。 各サーバー インスタンスは、一部のセッションではパートナーとして機能し、他のセッションでは証人として機能します。
サーバー インスタンス | データベース A のセッション | データベース B のセッション | データベース C のセッション | データベース D のセッション |
---|---|---|---|---|
SSInstance_1 |
ミラーリング監視サーバー | パートナー | パートナー | パートナー |
SSInstance_2 |
パートナー | ミラーリング監視サーバー | パートナー | パートナー |
SSInstance_3 |
パートナー | パートナー | ミラーリング監視サーバー | ミラーリング監視サーバー |
次の図は、2 つのミラーリング セッションでパートナーとして参加している 2 つのサーバー インスタンスを示しています。 1 つのセッションは Db_1 という名前のデータベース用で、もう 1 つのセッションは Db_2 という名前のデータベース用です。
各データベースは、他のデータベースとは独立しています。 たとえば、サーバー インスタンスは、最初は 2 つのデータベースのミラー サーバーである可能性があります。 これらのデータベースのいずれかがフェールオーバーされると、サーバー インスタンスはフェールオーバーされたデータベースのプリンシパル サーバーになり、もう一方のデータベースのミラー サーバーは残ります。
別の例として、自動フェールオーバーで高い安全性モードで実行されている 2 つ以上のデータベースのプリンシパル サーバーであるサーバー インスタンスを考えてみましょう。サーバー インスタンスが失敗した場合、すべてのデータベースがそれぞれのミラー データベースに自動的にフェールオーバーされます。
パートナーとミラーリング監視サーバーの両方として動作するようにサーバー インスタンスを設定する場合は、データベース ミラーリング エンドポイントが両方のロールをサポートしていることを確認します (詳細については、 データベース ミラーリング エンドポイント (SQL Server) を参照してください)。 また、リソースの競合を減らすために、システムに十分なリソースがあることを確認します。
注
ミラー化されたデータベースは互いに独立しているため、データベースをグループとしてフェールオーバーすることはできません。
クライアント接続
データベース ミラーリング セッションのクライアント接続のサポートは、Microsoft .NET Data Provider for SQL Server によって提供されます。 詳細については、「 データベース ミラーリング セッションへのクライアントの接続 (SQL Server)」を参照してください。
プリンシパル トランザクション ログに対するセッションの一時停止の影響
データベース所有者はいつでもセッションを一時停止できます。 一時停止すると、ミラーリングの削除中にセッションの状態が保持されます。 セッションが一時停止されると、プリンシパル サーバーはミラー サーバーに新しいログ レコードを送信しません。 これらのレコードはすべてアクティブなままであり、プリンシパル データベースのトランザクション ログに蓄積されます。 データベース ミラーリング セッションが一時停止している限り、トランザクション ログを切り捨てることはできません。 そのため、データベース ミラーリング セッションが長時間一時停止すると、ログがいっぱいになる可能性があります。
詳細については、「 データベース ミラーリングの一時停止と再開 (SQL Server)」を参照してください。
データベース ミラーリング セッションの設定
ミラーリング セッションを開始する前に、データベース所有者またはシステム管理者は、ミラー データベースの作成、エンドポイントとログインの設定、場合によっては証明書の作成と設定を行う必要があります。 詳細については、「 データベース ミラーリングの設定 (SQL Server)」を参照してください。
他のデータベース エンジン機能との相互運用性と共存
データベース ミラーリングは、SQL Server の次の機能またはコンポーネントで使用できます。
このセクションにて
データベース ミラーリングの前提条件、制限事項、および推奨事項
データベース ミラーリングを設定するための前提条件と推奨事項について説明します。
データベース ミラーリングの動作モード
データベース ミラーリング セッションの同期および非同期操作モード、およびデータベース ミラーリング セッション中のパートナー ロールの切り替えに関する情報が含まれています。
データベース ミラーリング監視サーバー
データベース ミラーリングにおけるミラーリング監視の役割、複数のミラーリング セッションで 1 つのミラーリング監視サーバーを使用する方法、監視用のソフトウェアとハードウェアの推奨事項、および自動フェールオーバーでのミラーリング監視の役割について説明します。 証人の追加または削除に関する情報も含まれています。
データベース ミラーリング セッション中のロールの切り替え (SQL Server)
自動フェールオーバー、手動フェールオーバー、強制サービス (データ損失の可能性あり) など、データベース ミラーリング セッション中のパートナー ロールの切り替えに関する情報が含まれます。 また、ロールの切り替え中のサービスの中断の推定に関する情報も含まれています。
データベース ミラーリング中に発生する可能性のあるエラー
データベース ミラーリング セッションでエラーを引き起こす可能性がある、ハード エラーやソフト エラーなど、物理、オペレーティング システム、および SQL Server の問題について説明します。 ミラーリング タイムアウト メカニズムがソフト エラーに応答する方法について説明します。
データベース ミラーリング エンドポイント (SQL Server)
データベース ミラーリング エンドポイントの機能について説明します。
データベース ミラーリングの設定 (SQL Server)
データベース ミラーリングを設定するための前提条件、推奨事項、手順に関するトピックが含まれています。
データベース ミラーリング セッションへのクライアントの接続 (SQL Server)
クライアント接続文字列属性と、クライアントをミラー化されたデータベースに接続および再接続するためのアルゴリズムに関するトピックが含まれています。
データベース ミラーリングの一時停止と再開 (SQL Server)
トランザクション ログの切り捨てへの影響など、データベース ミラーリングの一時停止中の動作について説明し、データベース ミラーリングを一時停止および再開する方法について説明します。
データベース ミラーリングの削除 (SQL Server)
ミラーリングを削除した場合の影響について説明し、セッションを終了する方法について説明します
データベース ミラーリングの監視 (SQL Server)
データベース ミラーリング モニターまたは dbmmonitor ストアド プロシージャを使用してデータベース ミラーリングまたはセッションを監視する方法について説明します。
関連タスク
構成のタスク
SQL Server Management Studio の使用
データベース ミラーリング セキュリティの構成ウィザードを開始する (SQL Server Management Studio)
Windows 認証を使用してデータベース ミラーリング セッションを確立する (SQL Server Management Studio)
Transact-SQL の使用
Transact-SQL または SQL Server Management Studio の使用
管理タスク
Transact-SQL
SQL Server Management Studio
データベース ミラーリング監視サーバーを追加または置き換える方法 (SQL Server Management Studio)
データベース ミラーリング セッションを手動でフェールオーバーする (SQL Server Management Studio)
こちらもご覧ください
データベース ミラーリング エンドポイント (SQL Server)
ページの自動修復 (可用性グループとデータベース ミラーリングの場合)
データベース ミラーリング構成のトラブルシューティング (SQL Server)
データベース ミラーリング: 相互運用性と共存 (SQL Server)
データベース ミラーリングの前提条件、制限事項、および推奨事項
AlwaysOn 可用性グループの概要 (SQL Server)
ログ配布について (SQL Server)