---
title: "データベースのバックアップと復旧とは？フルバックアップ・ジャーナル・ロールフォワードの関係【基本情報技術者試験】"
description: "フルバックアップ、ジャーナル、ロールフォワード、ロールバックの違いを整理し、バックアップ間隔と復旧時間の関係をFE試験向けに解説します。"
last_modified_at: "2026-07-20"
canonical_url: "https://stemtazoo.github.io/fe/database-backup-recovery/"
section: "fe"
---

## まず結論

データベースの復旧は、基本的に次の2段階で考えます。

```text
1. 直前のフルバックアップを戻す
2. その後の更新をジャーナルから反映する
```

このとき、フルバックアップの取得間隔が長いほど、復旧時に適用するジャーナル情報が増えます。

> **間隔を延ばしても1回のフルバックアップ量はほぼ同じ。増えるのは復旧時に追いかける更新履歴。**

## 直感的な説明

フルバックアップは、ある時点のデータベース全体を保存した「基準点」です。

その後に行われた追加・変更・削除は、ジャーナルに記録されます。

```text
フルバックアップ
↓
更新1
↓
更新2
↓
障害発生
```

復旧時には、まずフルバックアップを戻し、その後の更新1、更新2を順番に反映します。

バックアップ間隔が長いほど、反映すべき更新履歴が多くなるため、復旧時間も長くなります。

## 定義・仕組み

### フルバックアップ

データベース全体を保存する方式です。

1回当たりの保存量は、主にデータベース全体の大きさで決まります。

そのため、取得間隔を2倍にしても、データベース容量がほぼ同じなら、1回当たりの保存量や取得時間は大きく変わりません。

### ジャーナル

データベースに対して行われた更新履歴です。

代表例は次のとおりです。

- レコードの追加
- レコードの変更
- レコードの削除
- トランザクションのコミット

### ロールフォワード

バックアップ取得後に行われた正常な更新を、ジャーナルから再適用する処理です。

```text
過去のフルバックアップ
↓
ジャーナルを順番に適用
↓
障害直前の状態
```

「前進復帰」と呼ばれることもあります。

### ロールバック

未完了の処理や異常終了した処理を取り消し、更新前の状態へ戻す処理です。

```text
ロールフォワード
→ 正常な更新を進める

ロールバック
→ 不完全な更新を取り消す
```

## 科目Aでどう出る？

試験では、次の3点を切り分けます。

| 問われ方 | 判断 |
|---|---|
| バックアップ間隔が長くなる | ジャーナル量が増え、復旧時間が長くなる |
| 1回当たりのフルバックアップ量 | DB容量が同じならほぼ変わらない |
| 一定期間内のバックアップ回数 | 間隔を2倍にすると約半分になる |

特に注意したいのは、**回数**と**1回当たり**を混同しないことです。

```text
間隔を2倍
→ 回数は約半分
→ 1回当たりの量はほぼ同じ
→ 平均ジャーナル量は約2倍
```

障害発生時刻がランダムなら、バックアップ間隔をTとしたとき、平均経過時間はT÷2です。

間隔を2Tにすると、平均経過時間はTとなるため、平均ジャーナル量は約2倍になります。

## どんな場面で使う？

### フルバックアップ

データベース全体を確実に保存したいときに使います。

復元手順は分かりやすい一方、保存容量や取得時間が大きくなります。

### 差分バックアップ

直前のフルバックアップ以降に変更されたデータを保存します。

```text
フルバックアップ
+
その後の差分
```

取得時間を短くしやすい一方、復元時にはフルバックアップと差分データを組み合わせます。

### 増分バックアップ

直前のバックアップ以降に変更されたデータだけを保存します。

1回当たりの量は小さくできますが、復元時には複数世代を順番に適用する必要があります。

### バックアップ間隔の設計

バックアップを頻繁に取るほど、復旧時のジャーナル量は少なくなります。

一方で、取得回数や運用負荷は増えます。

```text
頻繁に取得
→ 運用負荷は増える
→ 復旧は速い

間隔を長くする
→ 運用負荷は減る
→ 復旧は遅い
```

## よくある誤解・混同

### 間隔を2倍にすると、1回のバックアップ量も2倍になる

誤りです。

フルバックアップは毎回データベース全体を保存します。

変わるのは取得回数であり、1回当たりの保存量ではありません。

### バックアップ回数が半分なら、1回当たりの量も半分になる

誤りです。

一定期間内の総回数と、1回当たりの量は別です。

### ジャーナルはバックアップそのものである

違います。

バックアップは、ある時点のデータの複製です。

ジャーナルは、その後に行われた更新履歴です。

### 復旧時間はフルバックアップの復元時間だけで決まる

誤りです。

実際には、次の合計で考えます。

```text
バックアップの復元時間
+
ジャーナルの適用時間
```

### ロールフォワードとロールバックは同じ

違います。

- ロールフォワード：正常な更新を再適用する
- ロールバック：未完了の更新を取り消す

## まとめ（試験直前用）

- フルバックアップはデータベース全体を保存する
- ジャーナルはバックアップ後の更新履歴を記録する
- ロールフォワードは、ジャーナルを使って障害直前まで進める
- ロールバックは、未完了の更新を取り消す
- バックアップ間隔が長いほど、平均ジャーナル量と復旧時間は増える
- 間隔を変えても、1回当たりのフルバックアップ量はほぼ変わらない
- 「回数」と「1回当たり」を分けて考える

> **回数が減るのはバックアップ。増えるのは復旧時に適用するジャーナル。**
