ログファイル(ジャーナルファイル)は、データベースの障害回復に欠かせないファイルです。
この記事では、その役割とロールバック・ロールフォワードとの関係を図解で整理します。
対象試験と出題頻度
ログファイル(ジャーナルファイル)は、基本情報技術者・応用情報技術者で出題されるテーマです。
DBMSの障害回復機能に関連する問題で定番化しており、「ログファイルとは何か」「更新前情報と更新後情報のどちらをどの回復処理で使うか」を正確に区別できるかが問われます。
詳細をクリックして確認
基本情報技術者
応用情報技術者
★★★☆☆
ランクB(標準)覚えておくと有利
用語の定義
情報処理試験を勉強していると、「ログファイルとジャーナルファイルって別物?バックアップファイルとは何が違うの?」と混乱しがちです。
ログファイル(ジャーナルファイル)とは、一言で言うと
「データベースの更新前の値と更新後の値を記録し、障害回復に使われるファイル」
のことです。ログファイルとジャーナルファイルは同じものを指す別名であり、区別する必要はありません。
イメージとしては、「銀行の通帳」です。
通帳には「いつ・いくらから・いくらに変わったか」がすべて記録されています。もし銀行のシステムに障害が起きても、通帳の記録をたどれば残高を正しい状態に復元できます。
ログファイルはデータベース版の通帳であり、すべての更新履歴を時系列で保持しています。
📊 ログファイル(ジャーナルファイル)の基本情報
| 項目 | 内容 |
|---|---|
| 別名 | ログファイル = ジャーナルファイル(同義) |
| 記録内容 | トランザクションごとの更新前の値(Before Image)と更新後の値(After Image) |
| 用途 | ロールバック(後退復帰)やロールフォワード(前進復帰)による障害回復 |
| 管理主体 | DBMS(データベース管理システム)が自動的に書き出す |
解説
データベースは複数の利用者が同時にデータを読み書きするため、処理の途中でシステムが停止したり、ディスクが壊れたりすると、データが中途半端な状態で残る危険があります。
この問題に対処するために、DBMSはすべてのトランザクションについて「変更前の値」と「変更後の値」をログファイルに逐一書き出しています。
障害が発生しても、この記録をもとにデータベースを正しい状態に戻せる仕組みです。
更新前情報と更新後情報
ログファイルには2種類の情報が記録されます。それぞれの使い道を正確に区別することが理解の土台になります。
| 情報の種類 | 内容 | 使われる回復処理 |
|---|---|---|
| 更新前情報 (Before Image) |
トランザクションがデータを書き換える前の値 | ロールバック(後退復帰) 未完了のトランザクションを取り消し、開始前の状態に戻す |
| 更新後情報 (After Image) |
トランザクションがデータを書き換えた後の値 | ロールフォワード(前進復帰) バックアップからリストアした後、コミット済みの更新を再適用して最新状態に復元する |
図解:障害回復におけるログファイルの役割
ログファイルがどのタイミングで、どの回復処理に使われるかを時系列で整理します。
バックアップ
チェックポイント
Tx-A
COMMIT済
Tx-B
未COMMIT
障害発生
◀ ログファイルが全更新履歴を記録 ▶
ロールフォワード →
更新後の値で、COMMIT済の内容を再適用
← ロールバック
更新前の値で、未COMMITの変更を取消
障害の種類と回復手順の対応
障害は大きく「トランザクション障害」「システム障害」「媒体障害」の3種類に分かれます。
それぞれ回復に使うファイルと手順が異なります。
| 障害の種類 | 具体例 | 回復手順 | 使うファイル |
|---|---|---|---|
| トランザクション障害 | プログラムのバグ、デッドロックなどで処理が異常終了 | ロールバック | ログファイル(更新前情報) |
| システム障害 | 電源断、OSクラッシュなどでDBMS全体が停止 | チェックポイントまで戻り、コミット済み→ロールフォワード、未コミット→ロールバック | ログファイル(更新前+更新後情報) |
| 媒体障害 | ディスク故障でデータベース自体が破損 | バックアップからリストア→ロールフォワード | バックアップファイル+ログファイル(更新後情報) |
何となくで覚えたい人向け:ざっくり整理
ログファイル = 通帳(全更新履歴の記録)
バックアップファイル = 金庫のコピー(ある時点の丸ごとスナップショット)
「ディスクが壊れた(媒体障害)」→ 金庫のコピー(バックアップ)を持ってきて、通帳(ログの更新後情報)で最新まで追いかける = ロールフォワード
「処理の途中で異常終了した(トランザクション障害)」→ 通帳の更新前情報でなかったことにする = ロールバック
では、この用語が試験でどのように出題されるか見ていきましょう。
💡 ログファイルの核心を3行で
・データベースの更新前後の値を時系列で記録するファイル(ジャーナルファイルと同義)
・更新前情報→ロールバック、更新後情報→ロールフォワードで使う
・障害の種類(トランザクション障害・システム障害・媒体障害)ごとに回復手順が異なる
試験ではこう出る!
ログファイル(ジャーナルファイル)は、FE・APの午前問題でデータベースの障害回復に関する問題として繰り返し出題されています。
出題パターンは大きく2つに分かれます。
📊 過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| FE H19春 問62 |
「データベースの更新記録として保存するファイル」を選ぶ問題。 | ・正解は「ジャーナルファイル」 ・ダンプファイル、チェックポイントファイル、バックアップファイルがひっかけ |
| FE H23特別 問33 |
H19春 問62と同一構成の問題(流用)。選択肢の並び順のみ変更。 | ・正解は「ログファイル」 ・FEでは同じ問題が繰り返し出回る典型例 |
| FE H20秋 問61 |
障害復旧の記述として正しいものを選ぶ問題。 | ・「媒体障害→バックアップリストア後にジャーナルファイルの更新後情報でロールフォワード」が正解 ・更新前/更新後の取り違えがひっかけ |
| AP R3秋 午前 問27 |
障害回復処理の記述として正しいものを選ぶ問題。 | ・「チェックポイント以前にコミット済みのトランザクションは回復不要」が正解 ・更新前/更新後と障害種類の組み合わせがひっかけ |
| AP R5秋 午前 問30 |
システム障害後にロールフォワード/ロールバックすべきトランザクションの組合せを選ぶ問題。 | ・コミット済み→ロールフォワード、未コミット(書込みあり)→ロールバックの判定力が必要 |
📝 IPA試験での出題パターン
パターン1:「障害回復に使うファイルを選べ」
ダンプファイル・チェックポイントファイル・バックアップファイルなどの選択肢が並び、更新記録を保存するファイルとしてログファイル(ジャーナルファイル)を選ばせる形式。ここだけは確実に押さえてください。
パターン2:「障害回復の記述として正しいものを選べ」
選択肢に「更新前情報でロールフォワード」「更新後情報でロールバック」など前後を入れ替えたひっかけが登場する。正しい組み合わせは「更新前→ロールバック」「更新後→ロールフォワード」の一択です。
試験ではここまででOKです。WAL(Write-Ahead Logging)プロトコルの詳細など、ログの物理的な書き込み順序まで問われることはFE・APレベルではないため、深追いは不要です。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. データベースの更新前や更新後の値を書き出して、更新記録として保存するファイルはどれか。
- A. 媒体障害の発生に備えて、データベースの内容を丸ごとコピーして保存するファイル。
- B. データベースの更新前後の値をトランザクション単位で記録し、ロールバックやロールフォワードに使われるファイル。
- C. コミットされたトランザクションの内容をディスクに反映する同期タイミングの情報を記録するファイル。
正解と解説を見る
正解:B
解説:
ログファイル(ジャーナルファイル)は、データベースの更新前後の値をトランザクション単位で記録するファイルです。障害発生時にロールバックやロールフォワードで復旧するために使われます。
選択肢Aはバックアップファイルの説明です。バックアップファイルはある時点のデータベースを丸ごとコピーしたものであり、更新の差分を記録するログファイルとは役割が異なります。選択肢Cはチェックポイントファイルの説明です。チェックポイントはメモリ上のバッファ内容をディスクに反映する同期タイミングを指し、更新前後の値を保存するログファイルとは別の概念です。
よくある質問(FAQ)
Q. ログファイルはどこに保存されていますか?データベースと同じディスクですか?
一般的に、ログファイルはデータベース本体とは物理的に別のディスクに保存します。同じディスクに置いてしまうと、媒体障害でディスクが壊れたときにログファイルも同時に失われ、回復が不可能になるためです。実務でも本番環境のDBサーバではログ専用のディスクを分離するのが基本設計です。
Q. ダンプファイルとバックアップファイルとログファイルの違いを簡単に整理すると?
ダンプファイルはデータベースの内容をそのまま書き出した移行用のファイルです。バックアップファイルは障害に備えてある時点のデータベースを丸ごとコピーしたものです。ログファイルはトランザクションごとの変更差分(更新前後の値)を時系列で記録したものです。三者は目的と記録する粒度が異なり、試験でも選択肢の入れ替えで頻繁に問われます。
Q. チェックポイントとログファイルはどう関係しますか?
チェックポイントは、メモリ上のバッファに溜まった更新内容をディスクに一括反映するタイミングです。チェックポイント以前にコミット済みのトランザクションはディスクへの書き出しが保証されているため、システム障害が起きてもログを使った回復は不要です。つまりチェックポイントの存在によって、障害回復時にログを遡る範囲を大幅に減らせます。
Q. MySQLやPostgreSQLにもログファイルの仕組みはありますか?
あります。MySQLのInnODBでは「Redo Log」「Undo Log」がそれぞれ更新後情報・更新前情報に相当します。PostgreSQLでは「WAL(Write-Ahead Log)」がトランザクションログの役割を果たしています。名称は製品ごとに異なりますが、更新前後の値を記録して障害回復に使うという基本的な仕組みは共通です。