高可用Windowsシステムの研究 SQL Server 2005の高可用テクノロジ編 第3回 可用性向上のための機能と各種ツール群1.可用性向上のための機能デジタルアドバンテージ資料提供、技術協力:マイクロソフト 2007/05/30 |
|
|
SQL Server 2005では、データベースの可用性を向上させるためにさまざまな機能が提供されている。代表的な機能を以下に示す。
高可用性実現のためにSQL Server 2005が提供する代表的な機能 |
エラー検出のしくみが強化され、サービス復旧までの時間短縮、パーティション・テーブルによる障害の局所化などの機能が追加されている。 |
障害からの復旧時間の短縮、障害の局所化、エラー検出機能の強化などが行われている。以下、個々の機能について詳しく見ていこう。
復旧時のサービス提供開始までの時間を短縮する「高速復旧」
データベースが何らかの理由で障害を起こして復旧が必要な場合、まずデータベース・サービスのインスタンスを起動し、ロールフォワード(ログに記録されているチェックポイント*1以降の処理を実行する)とロールバック(処理途中でエラーが発生し、コミットされていないトランザクションのデータベース処理を元に戻す)を順次実行する。この際、従来のSQL Server 2000では、最後のロールバック処理が完了するまで、データベースのサービスを開始できなかった(アプリケーションによるデータベースへのアクセスが行えなかった)。
*1 チェックポイント(checkpoint):データベース・エンジンがダーティ・バッファ・ページ(変更が加えられたが、まだディスクに書き込まれていないページ)をディスクに書き込むイベント。 |
これに対しSQL Server 2005では、新しい「高速復旧」オプションが追加された(ただし利用できるのはEnterprise Editionのみ)。これによりアプリケーションは、トランザクション・ログのロールフォワードを完了した直後から、データベースにアクセスできるようになる。以前のSQL Server 2000では、ロールバック処理が終了するまでアクセスはできなかった。
ただしロールバック対象のデータが含まれるデータ・ページへのアクセスは、ロールバック処理が完了するまでブロックされる。
SQL Server 2005で新規追加された高速復旧機能 |
従来はロールバックが完了するまで、データベースのサービスを開始できなかったが、高速復旧機能により、ロールフォワードが完了した時点で、データベースへのアクセスが可能になる。 |
この高速復旧の機能は、フェイルオーバー・クラスタやシングル・サーバでのインスタンス再起動、バックアップからの復元時間短縮にも有効である。特に効果的なのは、バッチ処理で大量のデータを更新している場合など、ロングトランザクション実行時の復旧である。ロングトランザクションの処理中に障害が発生した場合、コミットされていないデータ量も必然的に増えるので、ロールバック処理に時間がかかる場合がある。この場合も高速復旧により、フェイルオーバー時間が大幅に短縮される。
ディスク障害の局所化を可能にするパーティション・テーブル
SQL Server 2005では、1つのテーブルを論理的な複数のパーティション(partition=「仕切り」「区画」などの意味)に分割して管理する「データ・パーティショニング」機能が新たに追加された。分割した論理パーティションを、別々の物理ファイル・グループに割り当てることが可能である。
パーティショニングには大きく2つのメリットがある。1つは、大量データの処理が高速かつ容易になることだ。特にバッチ処理における大量データの削除やローディングなどに有効である。RDBMSは大量データの削除に時間がかかる特性があるが、パーティショニングの場合は、パーティション単位でデータを一括で削除することができる。この機能を使用することにより、バッチ処理の際に行われる大量データの削除処理時間の大幅な短縮を見込める。また、大規模なテーブルではインデックスも巨大になるので、大量のデータを挿入したり、削除したりすると、インデックスの更新処理に時間がかかる。一度インデックスを削除して再作成した方がよい場合もあるが、この処理も巨大なテーブルであれば時間がかかる。パーティショニングの場合は、インデックスもパーティショニングできるので、新しいパーティションにデータを挿入したり、削除したりした場合は、そのパーティションに生成されたインデックスの更新だけで済み、インデックス更新を高速に実行できるようになる。またインデックスの再作成も、パーティション単位でできる。再作成が必要なパーティションも限定可能であり、インデックスのサイズも小さくなるので、インデックスの再作成時間の短縮も可能になる。うまくパーティションを設計することで、大量のデータを効率的に操作可能になる。
そしてもう1つのメリットが、ファイル・グループを分割することによる障害の局所化だ。万一障害が発生した場合でも、障害の影響は、それが発生したファイル・グループ内部にしか及ばない。つまり障害が発生していない別のファイル・グループは影響を受けることなく、通常どおりにアクセスを続行できる。また、障害部分のリカバリも、オンラインのままで、ファイル・グループ単位で実行可能である(破損対象個所のみオフラインにして復元する)。ファイル・グループを正しく設計すれば、万一障害が発生した場合でも、その影響を最小化して、サービス継続の可能性を高めることができるのだ。
例えば下図は、売上情報データベースにアクセスするアプリケーションの例である。このデータベースでは、「売上明細テーブル」を年ごとに別のパーティションにし、パーティションごとに別々のファイル・グループを割り当てている。そしていま、2002年分の「売上明細テーブル」のファイル・グループに何らかの障害が発生したとする。いうまでもなく、2002年の売上明細にはアクセスできなくなるが、図のようにパーティションを設計しておけば、2003〜2005年の売上明細には問題なくアクセスできるわけだ。
パーティショニングによるディスク障害の局所化 |
この例では、年ごとの売上げ明細を別パーティションにしている。こうすれば、仮に2002年のファイル・グループに何らかの障害が発生しても、別のパーテョション(2003〜2005年分)のデータには問題なくアクセスできる。 |
可用性向上のためのそのほかの機能
上記2つ以外の可用性向上のための機能は次のとおり。
■チェックサム
ページをディスクに書き込む際に、ページ全体の内容のチェックサムを計算し、ページ・ヘッダにその値を格納しておく。そして後にこのページをディスクから読み取るときに、チェックサムを再計算し、ページ・ヘッダに格納されているチェックサム(書き込み時に算出したチェックサム)の値と比較する。これにより、エラー検出の精度が改善される。
■ページ復元
ページ復元は、チェックサムの評価や、破損した書き込みによって壊れていると検出されたページを修正するための機能である。ページ復元の機能により、指定したページ(エラーが検出されたページ)だけを復元することが可能になる。この復元処理では、復元しているデータだけがオフラインになり、残りのページはオンラインのまま、サービスを継続できる。このような復元処理は「オンライン復元」と呼ばれる。オンライン復元は、SQL Server 2005 Enterprise Editionでのみ実行できる。
■バックアップの信頼性向上
SQL Server 2005では、前述したページ単位の読み書きの際だけでなく、バックアップの作成時、復元時にもチェックサムによるエラー検出が行えるようになった。この機能は「バックアップ・チェックサム」と呼ばれる。バックアップ・チェックサムは、バックアップ作成時に生成し、復元時に検証する。操作中にエラーを検出するかどうか、エラー発生時に操作を停止するか続行するかを制御できる。バックアップにバックアップ・チェックサムが含まれている場合には、RESTOREステートメント、およびRESTORE VERIFYONLYステートメントでエラーを検査できる。
またこれに加え、バックアップ・イメージの複製を最大4つまで作成しておき、復元時のメディア・エラーに対処できるようにする「ミラー化バックアップ」の機能も追加された。
INDEX | ||
[高可用Windowsシステムの研究] | ||
第3回 可用性向上のための機能と各種ツール群 | ||
1.可用性向上のための機能 | ||
2.可用性向上を支援するツール群 | ||
3.SQL Server/データベースの構成確認 | ||
[高可用Windowsシステムの研究] |
- Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる (2017/7/27)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう - Azure Storage ExplorerでStorageを手軽に操作する (2017/7/24)
エクスプローラのような感覚でAzure Storageにアクセスできる無償ツール「Azure Storage Explorer」。いざというときに使えるよう、事前にセットアップしておこう - Win 10でキーボード配列が誤認識された場合の対処 (2017/7/21)
キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。英語キーボードが日本語配列として認識された場合などは、正しいキー配列に設定し直そう - Azure Web AppsでWordPressをインストールしてみる (2017/7/20)
これまでのIaaSに続き、Azureの大きな特徴といえるPaaSサービス、Azure App Serviceを試してみた! まずはWordPressをインストールしてみる
|
|