あの“津崎さん”も保有する難関資格「データベーススペシャリスト」。本企画では、データベーススペシャリスト試験 午前/午後試験対策のための「基礎知識」を抜粋してお届けします。今回は「障害回復機能」の基礎を解説します。
書籍の中から有用な技術情報をピックアップして紹介する本シリーズ。今回は、秀和システム発行の書籍ポケットスタディ データベーススペシャリスト [第2版](2015年12月22日発行)』からの抜粋です。
ご注意:本稿は、著者及び出版社の許可を得て、そのまま転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。
※編集部注:前回記事「独立性のレベルを示す「隔離性水準」を理解する」はこちら
出題頻度 午前II:●●● 午後I:●-- 午後II:●--
●--:過去14年間での過去問出題数が1〜9回
●●-:過去14年間での過去問出題数が10〜19回
●●●:過去14年間での過去問出題数が20回以上
●バックアップ、ロールバック、ロールフォワード、WALプロトコル、チェックポイント、障害復旧
ACID特性の一つであるトランザクションの耐久性を確保するため、DBMSには、障害回復機能が備わっています。
(1)バックアップ(データベースダンプ)/リストア機能
あるタイミングでのデータベースの情報をコピーし、別の媒体に保存すること(または保存したもの)をバックアップと呼びます。障害発生等の後、これを基に、バックアップ取得時の状態に戻すことをリストアと呼びます。
(2)ログファイル(ジャーナルファイル)
データベースに対して処理を行う度に、行われた処理の履歴や「更新前イメージ(更新前の断片的なデータ)」、「更新後イメージ(更新後の断片的なデータ)」をログファイルとして出力します。これを用いて、障害回復時に以下のロールバック、ロールフォワードを行います。
機能名 | 処理の流れ |
---|---|
ロールバック (後退復帰) |
障害発生後、処理途中であったデータに対し、ログの更新前イメージを順に適用し、データ処理前の時点まで戻すことでデータを復旧する |
ロールフォワード (前進復帰) |
ある時点で作成されたバックアップ(過去の時点のデータ)に対し、ログの更新後イメージを古い順に適用し、未来に向けて障害発生の直前時点までデータを復旧する |
リストアによりバックアップ取得時点のデータまで復元したあと、ロールフォワードを行えば、障害発生直前のデータまで復旧できます。
ログファイルは次のようなWAL(Write Ahead Logging:ログ先書き)プロトコルによって、データベースの更新前に出力されます。尚、WALプロトコルの詳細は問われませんが、処理を正しい順序に並べ替える問題は頻出ですので、並び順を覚えておいて下さい。
(3)チェックポイント
DBMSでは処理速度を高めるため、トランザクション処理結果をその都度ディスクには書き込まず、データ更新情報をメモリ上で管理します。そしてチェックポイントのタイミングで、最終的なデータの更新結果をディスク上に反映させ同期をとります。チェックポイントは一定間隔や任意の処理のタイミングで自動実行するように設定しますが、必要に応じてコマンドで手動実行することもできます。
(1)トランザクション障害からの回復
メモリ不足、デッドロックに伴う強制終了などにより、トランザクションが処理中に異常終了することをトランザクション障害と呼びます。ロールバックにより障害前の状態に戻せば復旧します。
(2)システム障害からの回復
DBMSやOSのトラブル等によりシステム全体が停止することをシステム障害と呼びます。この回復のためには、障害発生前にトランザクションが完了しているかどうかでロールバック/ロールフォワードを使い分ける必要があります。
直前のチェックポイント以前に完了しているトランザクションについては、既にデータがディスク上に反映されているため、復旧処理は必要ありません。
DBMSをシステム障害発生後に再立上げするとき、ロールフォワードすべきトランザクションとロールバックすべきトランザクションの組合せとして、適切なものはどれか。ここで、トランザクションの中で実行される処理内容は次のとおりとする。
トランザクション | データベースに対するRead回数とWrite回数 | |
---|---|---|
T1、T2 | Read 10、Write 20 | |
T3、T4 | Read 100 | |
T5、T6 | Read 20、Write 10 | |
ロールフォワード | ロールバック | ||
ア | T2、T5 | T6 | |
イ | T2、T5 | T3、T6 | |
ウ | T1、T2、T5 | T6 | |
エ | T1、T2、T5 | T3、T6 | |
(H27春DB午前II問14)
解答 演習24-1 ア
*囲み内をクリックすると解答を表示します(表示後ページをリロードすると、再び非表示になります)
本問のように、システム障害が発生した場合において、時系列上、どのトランザクションには何を行い復旧すべきか問う問題が非常によく出題されます。以下の類題でよくトレーニングしておいて下さい。
(3)媒体障害からの回復
データベースが格納されたディスク(記憶媒体)の障害を、媒体障害と呼びます。ディスクを初期化/交換した後、バックアップファイルからリストアし、ログファイルにより、戻せる限りロールフォワードを行うことで復旧します。
本試験過去問題による類題演習 | |
---|---|
□H27午前II問5 | DBMSのログ(Chance問題) |
□H25午前II問18 | WAL(White Ahead Log)プロトコルの目的に関する説明 |
□H25午前II問16 | チェックポイントで、チェックポイントをログに書き出す他に行う処理 |
□H20午前問39 | 障害に対する適切な復帰方法 |
□H17午前問40 | ロールフォワードで障害回復できるトランザクション |
□H19午前問39 | 障害回復後のトランザクション処理結果 |
□H14午前問34 | データベース障害回復に関する記述1 |
□H25午前II問14 | データベース障害回復に関する記述2 |
システム障害発生時には、データベースの整合性を保ち、かつ最新のデータベース状態に復旧する必要がある。このために、DBMSがトランザクションのコミット処理完了とみなすタイミングとして、適切なものはどれか。
ア アプリケーションの更新命令完了時点
イ チェックポイント処理完了時点
ウ ログバッファへのコミット情報書込み完了時点
エ ログファイルへのコミット情報書込み完了時点
(H26春DB午前II問13)
解答 演習24-2 エ
*囲み内をクリックすると解答を表示します(表示後ページをリロードすると、再び非表示になります)
更新前レコードと更新後レコードをログとして利用するDBMSにおいて、ログを先に書き出すWA(LWrite Ahead Log)プロトコルに従うとして、処理<1>〜<6>を正しい順番に並べたものはどれか。
<1> begin transactionレコードを書き出す。
<2> データベースを更新する。
<3> ログに更新前レコードを書き出す。
<4> ログに更新後レコードを書き出す。
<5> commitレコードを書き出す。
<6> end transactionレコードを書き出す。
(H24春DB午前II問17)
ア <1>→<2>→<3>→<4>→<5>→<6>
イ <1>→<3>→<2>→<4>→<6>→<5>
ウ <1>→<3>→<2>→<5>→<4>→<6>
エ <1>→<3>→<4>→<2>→<5>→<6>
解答 Point check エ
*囲み内をクリックすると解答を表示します(表示後ページをリロードすると、再び非表示になります)
Copyright © ITmedia, Inc. All Rights Reserved.