1. ホーム
  2. データベース
  3. mssql2005

SQL Server 2005データベースミラーリング関連知識の簡単な説明

2022-01-23 22:06:21

データベースミラーリングは、SQL Server データベースでデータベースの可用性を向上させるために使用される主要なソフトウェアソリューションです。データベース ミラーリングはデータベース単位で実装され、完全復旧モードを使用するデータベースでのみ利用できます。データベースミラーリングは、シンプルリカバリーモードとハイボリュームログリカバリーモードではサポートされておらず、データベースミラーリングでは、マスター、msdb、tempdb、およびモデルデータベースをミラーリングすることはできません。今回は主にデータベースミラーリングの知識を紹介します、一緒に勉強していきましょう

データベースミラーリングは、データベースの2つのコピーを維持し、それらは異なるSQL Serverデータベースエンジンインスタンス(サーバーインスタンス)に存在する必要があります。通常、これらのサーバーインスタンスは、異なる場所にあるコンピュータ上に存在します。一方のサーバー インスタンスは、データベースがクライアントにサービスを提供できるようにし(メイン サーバー)、もう一方のサーバー インスタンスは、ミラーセッションの構成と状態に応じて、ホット スタンバイまたはスタンバイ サーバーとして機能します(ミラー サーバー)。データベースミラーセッションを同期させる場合、データベースミラーは、コミットされたトランザクションのデータ損失なしに高速なフェイルオーバーをサポートできるホットスタンバイサーバーを提供します。セッションが同期されていない場合、ミラーサーバーは通常スタンバイサーバーとして使用されます(これはデータ損失の原因となります)。

データベースミラーリングのメリット

データベース・ミラーリングは、シンプルな戦略でありながら、次のようなメリットがあります。

データ保護の強化。

データベースミラーリングは、操作モードがハイセキュリティかハイパフォーマンスかによって、完全またはほぼ完全なデータ冗長性を提供します。詳細については、このトピックで後述する「"オペレーティング・モード"」を参照してください。

データベースの可用性を向上させます。

災害発生時、自動フェイルオーバーを備えた高セキュリティモードでは、(データを失うことなく)迅速にデータベースのスタンバイコピーをオンラインにすることができます。その他の動作モードでは、データベース管理者は、代わりにデータベースのスタンバイ コピーを(データを失う可能性がある)強制的にサービスすることを選択できます。詳細については、このトピックで後述する「ロールスイッチング」を参照してください。

アップグレード中の本番用データベースの可用性を向上させる。

ミラーリングされたデータベースのダウンタイムを最小限に抑えるには、データベース・ミラーリング・セッションに参加する SQL Server インスタンスを順次アップグレードして、ダウンタイムが 1 回のフェイルオーバーで済むようにすることができます。この形式のアップグレードは、ローリングアップグレードと呼ばれます。

データベースミラーリングの仕組み

データベースミラーリングのセッションにおいて、メインサーバーとミラーサーバーはパートナーとして通信し、協力します。2つのパートナーは、セッションにおいて、「サブジェクトの役割」と「ミラーの役割」という相補的な役割を果たします。任意の時点で、一方のパートナーが主語の役割を演じ、もう一方のパートナーがミラーの役割を演じる。各パートナーには、現在の役割があります。主役のパートナーは、「メインサーバー」と呼ばれ、そのデータベースコピーは現在のメインデータベースである。ミラーの役割を持つパートナーは、"ミラーサーバ" と呼ばれ、そのデータベースのコピーは現在のミラーデータベースです。データベースミラーが本番環境に配備されている場合、対象データベースは本番データベースとなります。

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

動作モード

データベースミラーリングのセッションは、同期または非同期のオペレーションとして実行されます。非同期オペレーションでは、ミラーサーバーがログをディスクに書き込むのを待たずにトランザクションがコミットされ、パフォーマンスが最大化されます。同期動作では、コミットされたトランザクションは両方のパートナーにコミットされますが、トランザクションの遅延時間が長くなります。

ミラーリングの動作には、2つのモードがあります。1つは、同期をサポートする「高セキュリティモード」です。高セキュリティモードでは、セッションが開始されると、ミラーサーバーはミラーデータベースをメインデータベースとできるだけ早く同期させます。データベースの同期後、コミットされたトランザクションは両方のパートナーにコミットされますが、トランザクションのラグタイムが延長されます。

2つ目の動作モードであるquot;ハイパフォーマンスモード"は、非同期で実行されるモードです。ミラーサーバーは、メインサーバーから送信されるログレコードと同期を取ろうとする。ミラーデータベースはメインデータベースより若干遅れることがありますが、2つのデータベース間のタイムラグは通常小さくなります。ただし、メインサーバーの作業負荷が高すぎたり、ミラーサーバーシステムの負荷が高すぎたりすると、時間間隔が長くなることがあります。

ハイパフォーマンスモードでは、ホストサーバーはミラーサーバーにログレコードを送信した後、ミラーサーバーの確認応答を待たずに、すぐにクライアントに確認応答メッセージを送信します。これは、トランザクションがコミットされる前に、ミラーサーバがログをディスクに書き込むのを待つ必要がないことを意味します。この非同期処理により、ホストサーバはトランザクションの遅延時間を最小限に抑えて動作することができますが、いくつかのデータは失われる可能性があります。

すべてのデータベースミラーリングセッションは、1台のマスターサーバーと1台のミラーサーバーのみをサポートします。次の図は、この構成を表しています。

自動フェイルオーバーを行う高セキュリティ・モデルでは、quot;witness server"と呼ばれる第3のサーバー・インスタンスを使用することが必要とされます。これら2つのパートナーとは異なり、ウィットネスサーバーはデータベースには使用できません。証人サーバーは、ホストサーバーが有効で実行されていることを確認することで、自動的なフェイルオーバーのみをサポートします。ミラーサーバーとウィットネスサーバーがメインサーバーから切断された後、ミラーサーバーとウィットネスサーバーが互いに接続されたままである場合にのみ、ミラーサーバーは自動フェイルオーバーを開始します。

次の図は、ウィットネスサーバーを含む構成を示しています。

トランザクションのセキュリティと運用モード

実行モードが非同期か同期かは、トランザクション・セキュリティの設定に依存します。SQL Server Management Studio を使用してデータベースミラーリングを構成する場合、実行モードを選択すると、トランザクション セキュリティ設定が自動的に構成されます。

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

SAFETYオプションがFULLに設定されている場合、データベースのミラーリング操作は最初の同期フェーズ以降、同期的に実行されます。証人サーバーが高セキュリティモードに設定されている場合、セッションは自動的なフェイルオーバーをサポートします。

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

役割の切り替え

データベースミラーリング・セッションのコンテキストでは、通常、quot;role switching"というプロセスを使用して、サブジェクトの役割とミラーの役割を入れ替えることができます。ロールスイッチングでは、サブジェクトのロールをミラーサーバーに変換します。ロールスイッチングでは、ミラーサーバーはメインサーバーのフェイルオーバーパートナーとして機能します。役割の切り替えが実行されると、ミラーサーバはサブジェクトの役割を引き継ぎ、そのデータベースのコピーをオンラインにして新しいサブジェクトのデータベースとして機能させます。以前のホストサーバー(もしあれば)は、ミラーの役割として機能し、そのデータベースは新しいミラーデータベースとなります。これらの役割は、繰り返し切り替えることができます。

役割の切り替えには、次の3つの形態があります。

自動フェイルオーバー

そのためには、ミラーサーバーとウィットネスサーバーによる高セキュリティなモデルが必要です。データベースは同期され、証人サーバーはミラーサーバーに接続されていなければなりません。

証人サーバーの役割は、指定されたパートナーサーバーが稼働していることを確認することである。ミラーサーバがプライマリサーバから切断されても、ウィットネスサーバがプライマリサーバに接続されたままであれば、ミラーサーバはフェールオーバーを開始することができません。

手動フェイルオーバー

そのためには、高セキュリティなモデルを使用する必要があります。両方のパートナーが互いに接続され、データベースが同期されている必要があります。

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

自動フェイルオーバーを行わないハイパフォーマンスモードおよびハイセキュリティモードでは、プライマリサーバーに障害が発生し、ミラーサーバーが利用可能な場合に、サービスを強制的に実行させることが可能です。

重要な注意事項

ハイパフォーマンスモードは、ウィットネスサーバーなしで実行するために使用されます。しかし、ウィットネスサーバーが存在する場合、強制サービスは、ミラーサーバーに接続するためにウィットネスサーバーを必要とします。

どちらのロールスイッチのシナリオでも、新しいホストデータベースがオンラインになると、クライアントアプリケーションはデータベースへの再接続によって迅速に回復します。

データベースミラーリング対応

データベースミラーリングのパートナーとウィットネスサーバーは、SQL Server 2005 Standard Edition SP1以降、およびSQL Server 2005 Enterprise Edition SP1以降でサポートされています。前提条件として、各パートナーは同じエディションを使用する必要があり、SQL Server 2005 Enterprise Edition SP1 以降のみ非同期データベースミラーリング(ハイパフォーマンスモード)をサポートしています。Witness Serverは、SQL Server 2005 Workgroup Edition SP1以降、SQL Server 2005 Express Edition SP1以降でもサポートされます。

SQL Server 2005 のデータベース・ミラーリングについては以上ですが、あなたにとって実りのあるものになれば幸いです。