【初心者向け】DBのロールバック、ロールフォワードのとは

はじめに

今回は、DBのロールバック、ロールフォワードについて、初心者でもわかりやすく説明していきます。さらにデータベースの基礎的なことから学習したいという方は以下の記事を先に読むことをオススメします。

関連記事

はじめに 今回は、データベース(DB)基礎について、初心者でもわかりやすく説明していきます。 この記事はこんな方にオススメ! IT系の分野で活躍したいので、IT用語・知識を習得したい 基本情報技術者、応用情報技術[…]

この記事はこんな方にオススメ!

  • IT系の分野で活躍したいので、IT用語・知識を習得したい
  • 基本情報技術者、応用情報技術者などIT系の資格を取りたい
  • システムエンジニアとして復習がしたい

データベースの障害管理

データベースを管理していく上で、重要なのが障害管理です。データベースを構築して、システムとつなげて、ハイ終わりというわけにはいきません。システムを継続して利用していくためには、万が一データベースが壊れた時のことを考えなくてはならず、そこで基本となるのが定期的にバックアップをとることです。業務終了後や、あまりシステムを使われていない時間を狙って、1日に1回など定期的な頻度でバックアップをとります。

バックアップの種類・方法については下記を参考にしてください。

関連記事

はじめに 今回は、フルバックアップ、差分バックアップ、増分バックアップ のメリット・デメリットについてについて説明していきます。 この記事はこんな方にオススメ! IT系の分野で活躍したいので、IT用語・知識を習得し[…]

フルバックアップ、差分バックアップ、増分バックアップのメリット・デメリット

バックアップファイル

データベースの障害といえば様々なものがありますが、障害が発生し、データベースの内容をもとに戻す時に役立つのがバックアップファイルです。ある時点で取得したバックアップファイルをもとにデータベースを復元すれば、元通りになります。

ただし、上記の例であげた、1日に1回だと次のバックアップまでに更新されたデータベースの内容は復元することはできません。では、頻度を極端に増やし、1分に1回バックアップをとればいいのでしょうか。今度はバックアップ容量がいくらあっても足りなくなります。

ジャーナルファイル

では、バックアップをとってから次回のバックアップまでに更新されたデータについては、どのように管理するのでしょうか。

そこで、登場するのがジャーナルファイルです。バックアップ後のデータベースの更新はジャーナルファイルというログファイルに、更新前ジャーナルと更新後ジャーナルを都度記録して、データベースの更新履歴を管理していきます。バックアップ後に更新されたデータベースの内容をある程度のところまで復元する際に、ジャーナルファイルを使います。

更新前ジャーナルファイルや更新後ジャーナルファイルを用いて、データベースの障害復旧処理を行うことをロールバック、ロールフォワードといいます。ロールバック、ロールフォワードについては、後で詳しく説明します。

バックアップファイル、ジャーナルファイルまとめ

上記で説明してきた内容を一旦まとめます。

バックアップファイルジャーナルファイル
頻度定期的(1日に1回など)データベース更新都度
ファイル容量
記録範囲全てのデータベースに対して更新されたデータベースのみ

Point1. 定期バックアップ時点まで遡って戻せる場合はバックアップファイルを利用

Point2. 業務等で更新されたデータは失いたくない場合はジャーナルファイルを利用

データベースのコミット

データベースの読み込み、書き込みなど一連の処理をトランザクションといいます。データベースではこのトランザクション単位で処理をすることが原則です。例えば、Aさんが Bさんの口座に5000円振り込むという処理を考えると、トランザクションは以下の通りになります。

  1. Aさんの口座の残高を確認する
  2. Aさんの口座残高から5000円減らす
  3. Bさんの口座の残高を確認する
  4. Bさんの口座残高を5000円増やす

上記の①〜④までが1つのトランザクションです。トランザクション単位で処理をするというのは上記①〜④の更新処理を全て行うか全て取り消すのどちらかを行うことが原則ということです。Aさんの口座から5000円減らしたのに途中で処理が止まって、Bさんの口座に振り込まれないなんてことはあってはならないですよね。

また、トランザクションが正常に完了し、最後に更新処理を行うことでデータベースにその内容をはじめて反映させます。これをコミットするといいます。

ロールバックとは

先にも説明したとおり、「Aさんが Bさんの口座に5000円振り込む」トランザクションの中で障害が発生した場合、Aさんの口座残高からは500円減らされたにも関わらず、Bさんの口座残高が5000円増えていないなってことはあってはなりません。

この場合、トランザクションが実行される前に戻し、何もデータベースの更新がなかったことにしなければならないため、トランザクション実行前に取得した更新前ジャーナルファイルからトランザクション実行前のデータベースの状態に復元します。この処理をロールバックといいます。

ロールフォワードとは

今まではトランザクションの処理の流れの中で発生した障害について触れてきましたが、トランザクション処理の中ではなく、ディスク障害等でデータベース自体が故障してしまった場合、新しくディスクを用意して、そこからデータベース復旧作業ということになりますが、障害発生前のデータベースの状態に戻すためには以下の手順を実施します。

  1. 定期バックアップからデータを復元
  2. トランザクションごとに取得した更新後ジャーナルをもとにデータを復元

以上の手順を実施することで障害発生前のデータベースの状態に復元することができます。この処理の方法をロールフォワードといいます。

おわりに

今回は初心者向けにデータベースの障害管理方法であるロールバック、ロールフォワードについてわかりやすく説明しました。他の記事で様々なIT用語を説明しているので、他の記事もチェックしてください!

関連記事

はじめに 今回は、データベース(DB)基礎について、初心者でもわかりやすく説明していきます。 この記事はこんな方にオススメ! IT系の分野で活躍したいので、IT用語・知識を習得したい 基本情報技術者、応用情報技術[…]

関連記事

はじめに 今回は、DBの主キーと外部キーについて、初心者でもわかりやすく説明していきます。さらにデータベースの基礎的なことから学習したいという方は以下の記事を先に読むことをオススメします。 [sitecard subtitle[…]

関連記事

はじめに 今回は、フルバックアップ、差分バックアップ、増分バックアップ のメリット・デメリットについてについて説明していきます。 この記事はこんな方にオススメ! IT系の分野で活躍したいので、IT用語・知識を習得し[…]

フルバックアップ、差分バックアップ、増分バックアップのメリット・デメリット
関連記事

はじめに 私は基本情報技術者試験の勉強を始めて、3ヶ月で一発合格しました。 3ヶ月で合格した勉強方を本記事で記載していきます。 また、基本情報技術者資格を取得する目的は以下のどちらに当てはまるか明確にして下さい。 目的によっ[…]