データベースミラーリングの実力を評価するSQL Server 2005を使いこなそう(10)(2/3 ページ)

» 2006年11月28日 00時00分 公開
[石橋潤一株式会社システムインテグレータ]

自動フェールオーバーの動作確認とその所要時間

 データベースミラーリングの評価として、まずは最も期待の大きい自動フェールオーバーについて調べてみたいと思います。

 自動フェールオーバーは、3台のサーバで構成される「高可用性モード」を利用する場合に動作する機能です。プリンシパルサーバで何らかの障害が発生した場合、その問題をミラーリング監視サーバが検知し、ミラーサーバをプリンシパルサーバに移行するフェールオーバー処理が自動で実行されます。

 自動フェールオーバーに要する時間は、大まかに分けて次の処理を完了するまでとなります。

エラー検出

 ネットワーク、あるいはサーバの不応答などを検知し、自動フェールオーバー処理を開始します。ネットワークエラーについては発生直後に検知されます。プリンシパルサーバの不応答については、デフォルトで10秒間応答がない場合にタイムアウトと見なされます。

 タイムアウト値を変更するにはALTER DATABASEステートメントにより、PARTNER TIMEOUTに値を設定します。

フェールオーバー処理

 エラー検出後、ミラーサーバでフェールオーバー処理が開始されます。フェールオーバー処理では、ミラーサーバの再実行キュー(Redo Queue)に残っているログをすべてロールフォワードします。

 ログのロールフォワードに要する時間は、同量のログバックアップを復元するために要する時間と同程度です。このため、まずは稼働データベースのログバックアップを用意し、「WITH NORECOVERY」オプションを指定したうえでテスト環境で復元に要する時間を計測します。これで一定量でのロールフォワードに要する時間が分かりました。

 後はミラーサーバ上で再実行キューに残っているログサイズを計測することにより、フェールオーバーにどの程度の時間を要するか推測できます。通常、プリンシパルサーバに対してミラーサーバが遅延していない場合は再実行キューは小さい値であるため、フェールオーバーは数秒で完了します。

図4 フェールオーバーに要する時間 図4 フェールオーバーに要する時間

 それでは、実際にミラーリング環境を利用して自動フェールオーバーの動作確認と所要時間を確認してみましょう。

 今回はプリンシパルデータベースが格納されたインスタンスを停止し、フェールオーバーが自動的に行われるか確認を行います。フェールオーバーの監視には、データベースミラーリングモニタを利用します。

 インスタンスを停止させるには、インスタンス名を右クリックし「停止」より停止処理を実行します。インスタンスの停止を行うと、直ちに検知され自動フェールオーバーが実行されます。データベースはSQL Server 2005のサンプルデータベースであるAdventure Worksを利用していますが、自動フェールオーバーはわずかな時間で完了しました。

 自動フェールオーバーが実施されると、データベースミラーリングモニタでは次のように表示されます。

図5 自動フェールオーバーの監視 図5 自動フェールオーバーの監視
プリンシパル化し、自動フェールオーバーが完了している。この時点から、元ミラーサーバをプリンシパルサーバとして利用することが可能となる。(画像をクリックすると拡大します)

 自動フェールオーバーの完了後、停止させたプリンシパルを復活させると、ミラーデータベースとしてミラーリングセッションに自動的に加わります。自動フェールオーバーの発生後、速やかに環境を回復させることによりミラーリング環境が自動的に再構築され、可用性を維持できます。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。