PR
図7●スナップショットを活用したレポート用システムの構成例<BR>データベース・ミラーリングとの組み合わせで,プリンシパル・サーバーをOLTP(オンライン・トランザクション処理)用サーバーとして使いつつ,ミラー・サーバーに対して定期的にデータベース・スナップショットを行い,そのデータをレポート用として公開している。Analysis Servicesと組み合わせれば,データ分析も可能である。
図7●スナップショットを活用したレポート用システムの構成例<BR>データベース・ミラーリングとの組み合わせで,プリンシパル・サーバーをOLTP(オンライン・トランザクション処理)用サーバーとして使いつつ,ミラー・サーバーに対して定期的にデータベース・スナップショットを行い,そのデータをレポート用として公開している。Analysis Servicesと組み合わせれば,データ分析も可能である。
[画像のクリックで拡大表示]
図8●データベース・スナップショットの動作&lt;BR&gt;データベース・スナップショットでは,データベースの完全なコピーは行わない。ソース・データベースの変更されてないページは参照情報を記録し,変更されたページのみコピーを要求する
図8●データベース・スナップショットの動作<BR>データベース・スナップショットでは,データベースの完全なコピーは行わない。ソース・データベースの変更されてないページは参照情報を記録し,変更されたページのみコピーを要求する
[画像のクリックで拡大表示]
図9●データベース・スナップショットを定義するTransact-SQL文&lt;BR&gt;SQL Server 2005に備わるサンプルDB「AdventureWorks」に対してスナップショットを作成する場合の例。
図9●データベース・スナップショットを定義するTransact-SQL文<BR>SQL Server 2005に備わるサンプルDB「AdventureWorks」に対してスナップショットを作成する場合の例。
[画像のクリックで拡大表示]
図10●データベース・スナップショットの管理ツール&lt;BR&gt;作成したデータベース・スナップショットは,新しい管理ツールSQL Server Management Studioで管理できる。
図10●データベース・スナップショットの管理ツール<BR>作成したデータベース・スナップショットは,新しい管理ツールSQL Server Management Studioで管理できる。
[画像のクリックで拡大表示]
図11●データベース・スナップショットのプロパティ&lt;BR&gt;データベースの属性は,読み取り専用(Read-Only)に設定される。
図11●データベース・スナップショットのプロパティ<BR>データベースの属性は,読み取り専用(Read-Only)に設定される。
[画像のクリックで拡大表示]
図12●データベースをスナップショット作成時点に復元するTransact-SQL文の例
図12●データベースをスナップショット作成時点に復元するTransact-SQL文の例
[画像のクリックで拡大表示]
図13●データベース・スナップショットを削除する構文の例
図13●データベース・スナップショットを削除する構文の例
[画像のクリックで拡大表示]

スナップショットで操作ミスに対処

 次に「アプリケーションまたはユーザー操作のエラー」の問題に対するSQL Server 2005の機能強化点について解説したい。

 SQL Server 2005では,「データベース・スナップショット」という機能により,アプリケーション,またはユーザーのエラーから即座に復旧できるようになる。従来のバックアップからの復元操作よりも,高速に復元できる。

 アプリケーション・エラーまたは,ユーザーやデータベース管理者の操作ミスによる障害の場合,DBMSそのものは問題なく稼働しておりデータベースが壊れるわけではないが,データが不正になる。操作性の優れた管理ツールや制限されたセキュリティの設定,正しい操作の手順を明確化することによってこうしたミスは減らせるだろうが,完全に無くすことはできない。

 SQL Server 2005では,そのような人為的なエラーが発生した場合でも,バックアップからの復元操作によるシステムの停止を回避できるデータベース・スナップショットという機能が実装された。

 データベース・スナップショットは,後述するように特定の時点のデータベース全体の仮想的なコピーを作成する機能である。ある瞬間のデータベースの状態を即座に作成でき,読み取り専用のデータベースとして扱えるようになる。

 さらにスナップショットは,1時間ごとなど頻繁に作成しても負荷がかからないため,従来のバックアップより手軽に実行できる。エラーが発生した場合,スナップショットによって作成した比較的新しいコピーを用いてオリジナルのデータベースを復元することで,迅速で最新の時点の修復がやりやすくなる。

 データベース・スナップショットを複数作成することも容易だ。ディスク容量が許す範囲で永久的に存在させることが可能である。

 スナップショットを作る際もオリジナルのデータベースは,継続して更新できる。そのため,データベース・スナップショットを作成しても,オリジナルのデータベースの可用性は落ちない。

スナップショットは応用しやすい

 時間指定で静的なコピーを作成できることから,レポート用データベースとしてデータベース・スナップショットを使用するのも大変有効である。

 データベース・ミラーリング*というSQL Server 2005の可用性向上機能と組み合わせて,ミラー・サーバー(待機用サーバー)側でレポート用としてスナップショットを提供したり,Analysis ServicesというOLAP*(オンライン分析処理)用機能と組み合わせて,分析用としてスナップショットを使用したりできる。

 図7([拡大表示])はデータベース・ミラーリングと組み合わせて構築したシステムの例である。ここでは本稼働系に位置付けられるプリンシパル・サーバーをOLTP(オンライン・トランザクション処理)用サーバーとして更新用に使っている。さらにプリンシパル・サーバーのデータベースのコピーを保持するミラー・サーバーにおいて定期的にデータベース・スナップショットを行う。これによって作成されたスナップショットで読み取り専用データベースを構築し,レポート用に公開している。レポート用データベース・スナップショットはさらに,Analysis Services経由で,データ分析に活用されている。

全データのコピーではない点に注意

 スナップショットの注意点としては,ユーザーやアプリケーションまたはデータベース管理者の操作ミスによるデータベースの破壊などからの復元に用途を限定することだろう。

 データベース・スナップショットは,オリジナルのデータベースの完全なコピーではなく,「Copy-on-Write(書き込み時コピー)」と呼ばれるメカニズムを使用している(図8[拡大表示])。

 この仕組みではスナップショットをページ単位で管理する。スナップショットを取った時点以降に変更されたページだけをスナップショット・データベースにコピーして,それ以外の変更されていないページは,オリジナルのデータベースと共有する。そのため,効率良くディスクを使えるものの,参照用のオリジナル・データベースが壊れるとスナップショットは機能しなくなる。

 最後にデータベース・スナップショットを作成するコマンドを紹介しよう。これには,図9([拡大表示])のようなTransact-SQL文を実行するだけだ。作成されたスナップショットは,管理ツールのSQL Server Management Studioで参照・管理する(図10([拡大表示]),図11([拡大表示]))。

 復元処理も簡単である。ユーザーの操作ミスのようなトラブルで,オリジナルのデータベースを復旧させる場合も,スナップショットがあれば,図12([拡大表示])のように「RESTORE DATABASE …… FROM DATABASE_SNAPSHOT」コマンドを実行するだけである。また,不要になったデータベース・スナップショットは,図13([拡大表示])のコマンドで手軽に削除できる。

*   *   *

 このようにSQL Server 2005はバックアップ/復元に関する各種の新機能を備える。これらを有効に使っていただき,システムの可用性を一層向上させてもらえれば幸いだ。

笹瀬 行弘

マイクロソフト
プロダクト ディベロップメント リミテッド ウィンドウズサーバーシステム開発統括部 SQL Serverグループ リージョナル プログラムマネージャ