表1●フェイル・オーバー・クラスタとデータベース・ミラーリングの違い
表1●フェイル・オーバー・クラスタとデータベース・ミラーリングの違い
[画像のクリックで拡大表示]
図1●デーベース・ミラーリングのシステム構成<BR>プリンシパル(本番マシン),ミラー(待機マシン),ウィットネス(監視マシン)の3台のサーバーを1つのシステムとして稼働させる。
図1●デーベース・ミラーリングのシステム構成<BR>プリンシパル(本番マシン),ミラー(待機マシン),ウィットネス(監視マシン)の3台のサーバーを1つのシステムとして稼働させる。
[画像のクリックで拡大表示]

▼いよいよデータベース管理システムの新バージョン「SQL Server 2005」が5年ぶりに登場する。マイクロソフトでは,開発ツールの新版「Visual Studio 2005」とともに最も重要な製品の1つとされる。
▼SQL Server 2005の新機能は,データベース管理者向け,データ分析と活用のユーザー向け,開発者向けと多岐にわたる。新機能の全体像を説明した後,高可用性を実現する機能としてデータベース・ミラーリングを詳しく説明する。

 開発コード「Yukon(ユーコン)」で知られる「Microsoft SQL Server 2005」がいよいよ今年登場する。同製品は,Windows Serverをベースにするデータベース管理システム(DBMS)製品として確固たる地位を築いたSQL Server 2000の次期版である。メジャー・バージョンアップ製品として,非常に多くの意欲的な機能が追加・強化されている。

 本連載では,SQL Server 2005の様々な新機能を,高可用性の実現やデータ分析,アプリケーション開発などユーザーの方々にとって関心の高い切り口で紹介していきたい。

5年ぶりの大幅なバージョンアップ

 新バージョンでは5年ぶりの大幅な機能強化が図られる。Microsoft SQL Serverは,1994年にWindows環境専用のDBMSとして提供が開始された。最初のバージョンはSQL Server 4.2で,それ以降6.0,6.5,7.0と進化して,2000年に発売されたSQL Server 2000に至っている。特に,SQL Server 7.0は,現在Microsoft Researchに所属するトランザクションの大家Jim Gray氏をはじめとした業界屈指の技術者が集まって開発されたことで知られる。プログラム・コードがすべて書き換えられ,モダンなアーキテクチャとなり,それがSQL Server 2000,そしてその次期版のSQL Server 2005へと引き継がれている。

 SQL Server 2005は,このように既に高い評価を受けているデータベース・エンジンを全面的にブラッシュアップして,信頼性,開発生産性,管理性,拡張性の最適なバランスをとり,高度にまとめ上げられた製品である。

 信頼性の高いデータ処理に加え,データの統合・分析・レポーティングも実現している。データ分析機能としてはETL*(抽出,変換,ロード)機能がSQL Server 7.0から装備されている。また,レポーティング機能が,SQL Server 2000から標準で提供された。SQL Server 2005ではそれらがさらに強化される。

 開発環境も大幅に強化される。SQL Server 2005は,開発ツールの新バージョンVisual Studio 2005と同時に発売される予定だ。.NET*をベースとしたこの開発ツールとの密接な統合により,開発効率の向上やアプリケーションとデータベースのシームレスな連携を実現する点にも注目してほしい。

 64ビットWindowsにも全面的に対応する。SQL Server 2000では,既にIntelの「IPF(Itanium*プロセッサ・ファミリ)」にネイティブ対応する64ビット版が提供されている。また,近々提供されるSQL Server 2000 Service Pack 4にて,32ビット用SQL Server 2000がWindows Server 2003,x64 Editionという新しい64ビットWindows上で動作するようになる。x64 Editionは,Intel EM64TおよびAMD64*アーキテクチャのCPUを採用したマシン上で動作するWindowsである。その32ビット・モード(WOW64)での動作がSP4で保証される予定だ。

 SQL Server 2005では,こうした64ビット対応をさらに広げる。具体的にはIPF用およびx64用のWindows Server 2003にネイティブで対応する製品をそれぞれ用意して,高いスケーラビリティを提供する計画である。

ミラーリングなどで可用性を向上

 ここからは連載第1回の主題である高可用性に焦点を当てて説明しよう。

 データベースの可用性はだれもが最も重要だと認識している項目である。一般的に高可用性のシステムを実現するには,(1)ハードウエア障害やソフトウエア障害に起因する計画外停止,(2)運用やメンテナンスの際にシステムを停止させる計画停止---の2つの時間を最小化することが大きなポイントとされている。それらの停止を最小化するための各種新機能をSQL Server 2005は提供する。

 まず,計画外停止を最小化する機能として新たに「データベース・ミラーリング」が提供される。SQL Server 2000でも障害時の停止時間を短縮する機能としてフェイル・オーバー・クラスタリングがあった。これに加えてデータベースそのものの可用性,および迅速なフェイル・オーバーを実現するためにデータベース・ミラーリングが追加される。

 障害による停止時間を最短化するためには,さらにオンライン復元機能,高速復旧オプション,データベース・スナップショットなども提供される。

 また計画停止の時間を短縮するため,システムの稼働中に各種メンテナンスを行えるようにしている。具体的には,メモリーやCPUの割り当てなどの動的設定変更機能,インデックス再構築を行うオンライン・インデックス・オペレーション機能,テーブルの分割により瞬時にデータの追加・削除が行えるデータ・パーティション機能などがある。

DBミラーリングの機能と特徴

 今回は,これらのうち,注目度の高い機能として,データベース・ミラーリングを詳細に解説したい。

 データベース・ミラーリングは,データベース・サーバーを完全に2重化することで高速なフェイル・オーバーを実現する機能である。フェイル・オーバー・クラスタと同様にデータベースに障害が発生した際に待機系サーバーへ処理を切り替えて可用性を確保する。

 SQL Server 2000でも,Windows ServerのMSCS*(マイクロソフト・クラスタ・サービス)によるフェイル・オーバー・クラスタが利用可能で,高い可用性を実現できた。SQL Server 2005においても,MSCS関係の機能は強化されている。しかし,データベース・ミラーリングには以下に示す特徴がある(表1[拡大表示])。

最高速のフェイル・オーバーの実現:待機系データベースへの切り替え時間として数秒レベルを目標に開発されている。MSCSでは数分かかることがあった。

標準的なハードウエアの利用:データベース・ミラーリングは標準的なハードウエアで実現可能である。MSCSによるフェイル・オーバー・クラスタでは,専用のハードウエアが必要だ。

異なるハードウエアでの実現:本番系と待機系マシンのハードウエアが異なっても構成可能である。ハードウエア・メーカーはもちろん,メモリー容量,CPU数が違っても構成できる。

共有ディスクが不要:MSCSによるフェイル・オーバー・クラスタでは全ノードからアクセスできる共有ディスクが必要だが,データベース・ミラーリングでは不要になる。

可用性のスコープの違い:MSCSによるフェイル・オーバー・クラスタは,ハードウエアやアプリケーションなどシステム全体の可用性を上げる技術だが,データベース・ミラーリングはデータベースの可用性を向上させる機能である。つまり,データベース以外のサービスのフェイル・オーバーは行わない。

 後述するように,設定が非常に容易であるという点も特徴の1つだ。

高速にクライアントを再接続

 クライアントからの再接続もデータベース・ミラーリングは高速である。

 現在のSQL Server 2000では,クライアントとサーバーとの接続にMDAC*(Microsoftデータ・アクセス・コンポーネント)というモジュールを利用している。SQL Server 2005では,それ加えて,SQL Server 2005専用のSNAC(SQL Serverネイティブ・クライアント)というコンポーネントが提供される。データベース・ミラーリングに対応するとともに,クライアントからの接続要求をより柔軟に制御できるようになる。

 例えば,本番サーバーに障害が起きたとき,ミラーリングをしている待機サーバー側に透過的に再接続できる。そのため,アプリケーションが意識しなくても,自動的にフェイル・オーバーに対応する。SNACには,本番系と待機系の各サーバー名をキャッシュする機能があり,本番系に接続できない場合,自動的に待機系に接続を切り替える。アプリケーションのコードを変更する必要もない。

DBミラーリングは3台で構成

 データベース・ミラーリングでは,基本的にプリンシパル(本番マシン),ミラー(待機マシン),ウィットネス(監視マシン)の3台のサーバーを1つのシステムとして稼働させる(図1[拡大表示])。

 プリンシパルの役割を果たすサーバーは,通常クライアントからの処理要求を受け,実際にデータ処理を行うサーバーである。クライアント・パソコンやWebサーバーなどからのデータ処理要求は,すべてプリンシパル・サーバーに送られ,トランザクション処理*を行う。

 一方,ミラー・サーバーは,プリンシパル・サーバーで処理された内容をすべてミラーし,プリンシパルと同一内容のデータベースを保持する。

 ウィットネス・サーバーは,CCM(クラスタ・コミュニケーション・マネージャ)と呼ばれるモジュールを持っており,プリンシパルおよびミラーの稼働状況を監視する役割を担う。プリンシパルに障害が起きた場合,それを検知し,自動的にミラー側にフェイル・オーバーを行うための処理を行う。

 基本的な構成や役割は以上の通りだが,いくつかのポイントがある。

 まず,複数のデータベースのミラーリング化が可能である。ご存じのようにSQL Serverでは1つのインスタンス*で複数のデータベースを利用できる。データベース・ミラーリングはこのデータベース単位で設定する。例えば,1つのインスタンスで3つのデータベースを持つとき,2つをミラーリング設定し,残りの1つは設定しない構成などが可能だ。

 ウィットネスは柔軟に設置できる。必ずしも単独のサーバーで稼働させる必要はない。ウィットネス自体の負荷は非常に少なく,ミラー・サーバーがウィットネスを兼ねることが可能だ。ただし,ウィットネスのサーバーはミラーとは別サーバーに設置することが推奨される。

 さらにウィットネスを設置しない構成でもデータベース・ミラーリングは利用できる。プリンシパルとミラーの間の処理は独立して行われ,ウィットネスによる監視はなくてもよい。ただし,ウィットネスを設置しない場合,自動フェイル・オーバーの機能は利用できない。

 また,1つのウィットネスで複数のデータベース・ミラーリングを監視できる。データベース・ミラーリングはデータベース単位で設定するため,一般に複数のデータベース・ミラーリングが存在する。その場合も1つのデータベース・ミラーリングの設定ごとにウィットネス・サーバーを設置する必要はない。

記事執筆後,マイクロソフトは,DBミラーリング機能をSQL Server 2005の出荷当初の製品から除外しました。同社はDBミラーリング機能を2006年前半に,あとから追加する見込みです(2005年12月現在)。

深瀬正人

マイクロソフト
サーバープラットフォームビジネス本部 アプリケーションプラットフォームグループ エグゼクティブプロダクトマネージャ