高可用性ソリューションの概要
ここでは、サーバーやデータベースの可用性を向上する SQL Server の高可用性ソリューションをいくつか紹介します。高可用性ソリューションは、ハードウェアやソフトウェアで問題が発生した場合でもその影響が現れないようにし、アプリケーションの可用性を維持しながら、ユーザーに影響するダウンタイムを最小限に抑えます。
SQL Server には、サーバーやデータベースの高可用性を実現するために複数の方法が用意されています。高可用性を実現するには以下の方法があります。
フェールオーバー クラスタリング
フェールオーバー クラスタリングでは、SQL Server のインスタンス全体の高可用性がサポートされます。フェールオーバー クラスタは、1 つ以上のノード (サーバー) と 2 つ以上の共有ディスクの組み合わせです。アプリケーションは、リソース グループと呼ばれる Microsoft Cluster Service (MSCS) クラスタ グループに個別にインストールされます。各リソース グループは、いつでもクラスタ内の 1 つのノードだけに所有されています。アプリケーション サービスには、ノード名とは無関係の仮想名が付けられます。この仮想名はフェールオーバー クラスタ インスタンス名と呼ばれます。アプリケーションは、フェールオーバー クラスタ インスタンス名を参照することによって、フェールオーバー クラスタ インスタンスに接続できます。フェールオーバー クラスタ インスタンスがどのノードによってホストされているかを、アプリケーションで認識する必要はありません。
SQL Server フェールオーバー クラスタ インスタンスは、ネットワーク上では 1 台のコンピュータのように見えますが、現在のノードが使用できなくなった場合には、1 つのノードから別のノードにフェールオーバーする機能を備えています。たとえば、ディスク以外のハードウェア障害、オペレーティング システムの障害、または計画されたオペレーティング システムのアップグレードなどで、フェールオーバー クラスタの特定のノード上にある SQL Server インスタンスを、ディスク グループ内の別のノードにフェールオーバーするように構成できます。
フェールオーバー クラスタでは、ディスク障害に対する保護はサポートされません。フェールオーバー クラスタリングを使用すると、システムのダウンタイムを削減して、アプリケーションの可用性を高めることができます。フェールオーバー クラスタリングは SQL Server Enterprise と SQL Server Developer でサポートされています。また、一部制約はありますが、SQL Server Standard でもサポートされています。フェールオーバー クラスタリングの詳細については、「SQL Server 2008 フェールオーバー クラスタリングの概要」および「SQL Server 2008 フェールオーバー クラスタのインストール」を参照してください。
データベース ミラーリング
データベース ミラーリングは、ほぼ瞬時のフェールオーバーをサポートすることによりデータベースの可用性を向上させる、代表的なソフトウェア ソリューションです。データベース ミラーリングを使用して、運用データベース (別称プリンシパル データベース) と、それに対応する 1 つのスタンバイ データベース (別称ミラー データベース) を管理できます。
復旧を伴わずにプリンシパル データベースのデータベース バックアップを復元することにより、ミラー データベースが作成されます。この場合、クライアントからはミラー データベースにアクセスできなくなります。ただし、ミラー データベース上でデータベース スナップショットを作成することにより、レポートを作成する目的でミラー データベースを間接的に使用できます。クライアントは、データベース スナップショットを使用することにより、スナップショットが作成された時点のデータベースのデータに読み取り専用モードでアクセスできます。
各データベース ミラーリング構成には、プリンシパル データベースを保持するプリンシパル サーバーと、ミラー データベースを保持するミラー サーバーがあります。ミラー サーバーでは、プリンシパル データベースを使用して、ミラー データベースが常に最新の状態になるように管理されます。
データベース ミラーリングは、高安全性モードの同期動作または高パフォーマンス モードの非同期動作のどちらかで実行されます。高パフォーマンス モードでは、ミラー サーバーでログがディスクに書き込まれるのを待機することなくトランザクションがコミットされるので、パフォーマンスが最大限に向上します。高安全性モードでは、コミットしたトランザクションが両方のパートナーでコミットされる反面、トランザクションの遅延が大きくなるという危険性があります。
データベース ミラーリングの最も単純な構成では、プリンシパル サーバーおよびミラー サーバーのみが必要です。この構成では、プリンシパル サーバーが失われると、データ損失の可能性がありますが、ミラー サーバーをウォーム スタンバイ サーバーとして使用できます。高安全性モードでは、自動フェールオーバー機能を持つ構成もサポートされています。この構成では、ミラーリング監視という第 3 のサーバー インスタンスが利用されるため、ミラー サーバーはホット スタンバイ サーバーとして機能できます。プリンシパル データベースからミラー データベースへのフェールオーバーは、通常数秒で行われます。
SQL Server 2005 Service Pack 1 (SP1) 以降、データベース ミラーリング パートナーおよびミラーリング監視サーバーは SQL Server Standard および SQL Server Enterprise でサポートされています。ただし、各パートナーで同じエディションを使用する必要があり、非同期データベース ミラーリング (高パフォーマンス モード) は SQL Server Enterprise でのみサポートされます。ミラーリング監視サーバーは、SQL Server Workgroup および SQL Server Express でもサポートされます。
データベース ミラーリングの詳細については、「データベース ミラーリング」を参照してください。
ログ配布
ログ配布は、データベース ミラーリングと同様にデータベース レベルで機能します。ログ配布を使用して、運用データベース (別称プライマリ データベース) と、それに対応する 1 つ以上のウォーム スタンバイ データベースを管理できます。スタンバイ データベースは、セカンダリ データベースとも呼ばれます。復旧を伴わずにまたはスタンバイを使用して、プライマリ データベースのデータベース バックアップを復元することにより、各セカンダリ データベースが作成されます。スタンバイを使用して復元すると、生成されるセカンダリ データベースを、制限付きのレポート作成用に使用できます。
ログ配布構成には、プライマリ データベースを保持する 1 台のプライマリ サーバー、各セカンダリ データベースを保持する 1 台以上のセカンダリ サーバー、および 1 台の監視サーバーが含まれます。各セカンダリ サーバーでは、プライマリ データベースのログ バックアップを利用して、そのサーバーのセカンダリ データベースが設定された間隔で更新されます。ユーザーは、プライマリ サーバーでプライマリ データベースのログ バックアップを作成する時点と、セカンダリ サーバーがそのログ バックアップを復元する時点との間に生じる遅延時間を変更できます。フェールオーバーする前に、復元されていないログ バックアップを手動で適用して、セカンダリ データベースを最新の状態にする必要があります。
ログ配布により、複数のスタンバイ データベースがサポートされ、柔軟性がもたらされます。複数のスタンバイ データベースが必要な場合は、ログ配布だけを使用するか、データベース ミラーリングの補完手段としてログ配布を使用できます。ログ配布とデータベース ミラーリングを同時に使用するときは、データベース ミラーリング構成の現在のプリンシパル データベースが、ログ配布構成の現在のプライマリ データベースの役割も果たします。
ログ配布は、SQL Server Enterprise、Standard、Workgroup の各エディションでサポートされます。ログ配布の詳細については、「ログ配布の概要」および「ログ配布の管理」を参照してください。
レプリケーション
レプリケーションはパブリッシュとサブスクライブを組み合わせたモデルを使用します。このため、プライマリ サーバー (パブリッシャ) のデータを 1 台以上のセカンダリ サーバー (サブスクライバ) に配布できます。レプリケーションにより、これらのサーバー全体でリアルタイムの可用性とスケーラビリティを実現できます。レプリケーションでは、サブスクライバでデータのサブセットを提供するフィルタ処理がサポートされ、更新を分割して行うこともできます。サブスクライバはオンラインなので、それまで使用していたクエリを復旧しないで、レポートなどの機能に使用できます。SQL Server では、スナップショット レプリケーション、トランザクション レプリケーション、マージ レプリケーションの 3 種類のレプリケーションが用意されています。待機時間が最も短いことから、通常トランザクション レプリケーションが可用性を向上させる場合に使用されます。詳細については、「スケーラビリティと可用性の向上」を参照してください。
レプリケーションは、SQL Server のすべてのエディションでサポートされています。レプリケーションのパブリッシングは SQL Server Express と SQL Server Compact 3.5 SP1 では使用できません。
重要 高可用性ソリューションでは、十分に考慮して設計および実装されたバックアップと復元のストラテジが重要です。詳細については、「SQL Server でのデータベースのバックアップおよび復元」および「レプリケートされたデータベースのバックアップと復元」を参照してください。
スケーラブルな共有データベース
スケーラブルな共有データベース機能を使用すると、レポートのために構築した読み取り専用データベースをスケール アウトすることができます。レポート データベースは、データベースをホストすることを主な目的とした、専用の読み取り専用ボリューム上にあることが必要です。サーバーとボリューム用に汎用的なハードウェアを使用してレポート データベースをスケール アウトし、複数のレポート サーバー上でレポート データの同一のビューを提供することができます。この機能により、レポート データベースへのスムーズな更新も可能になります。詳細については、「スケーラブルな共有データベースの概要」を参照してください。