Web教材一覧データベース

バックアップ/リカバリー、再編成/再構築

キーワード

バックアップ,チェックポイント、ジャーナルファイル、ログファイル、フルバックアップ、差分バックアップ、増分バックアップ、多重バックアップ、世代管理、ホットサイト、コールドサイト、リカバリー,ジャーナルファイル,ロールフォワード,ロールバック、再編成、再構築


データベースのバックアップ/リカバリー

万一のトラブルによりデータの整合性を失ったとき,データベースを正しく回復する機能が必要になります。それには,バックアップとリカバリーを行います。

バックアップ

定期的に(それをチェックポイントといいます)に,データベース全体をバックアップファイルにコピーします。その間は,更新が行われるたびに,更新前と更新後の情報をジャーナルファイルログファイルともいう)に記録しておきます。

バックアップ関連

バックアップでの留意事項

(注)ホットサイトとコールドサイト

遠隔地バックアップセンターは、大きくホットサイトとコールドサイトに区分できます。
 ホットサイトとは、日常から待機状態にしておき障害発生時に直ちに再開できるサイトです。例えば東京と大阪に拠点を置き、双方が互いの処理を代行できる環境にしておき、互いにバックアップデータを交換して、最新の状況にしておきます。
 コールドサイトとは、障害発生時に必要なハードウェアやソフトウェアを持ち込み業務を再開する形態です。社外データセンターのなかには、単にバックデータの保管だけでなく、このようなサービスを提供することもあります。

リカバリー処理

トラブルが発生したときには,リカバリー処理をします。
 リカバリーに似た用語にリストアがありますが、リストアはバックアップしたデータを物理的に「復元」することで、リカバリーは、リストアしたデータに対して、その後の変更内容を反映させ最新の状態(障害発生直前の状態)に「復旧」することです。
 リカバリーには,ロールフォワードとロールバックがあります。

ロールフォワード
データベースがハードウェア的に障害が発生したときの対応です。このディスクは使えないので、バックアップしていたファイルを別のディスクにコピーして、そのディスクでデータベースを復元することになります。
 バックアップファイルからデータベースを復元して,ジャーナルファイルにより更新を行い,障害直前の状態にまで回復します。リカバリーの順序が更新と同じ順序でやり直すことになります。
ロールフォワードの図
ロールバック
更新中に、何らかの原因で異常終了したときの対応です。この場合でもロールフォワードにより復元できますが、異常終了するまでの状態は生きた(ディスクが読める)状態になっているのですから、ロールフォワードをするのは無駄です。原因となったトランザクションの処理をやらなかったことにして、その直前の状態に巻き戻すことになります。
 図では,状態2は正常に完了し,状態3になるときに障害が発生したことを示しています。このときは,ジャーナルファイルに状態2と状態3の違いが残っているので,それを用いて状態2にまで戻します。リカバリーの順序は更新の順と逆になります。
ロールバックの図

トランザクションから見た検討

次のように更新トランザクションT1~T5があり、チェックポイントを過ぎて障害が発生したとします(〇印は正常に更新されたことを示します)。
 ロールフォワードのときは、チェックポイント時から障害発生時までの間が抜けているのですからT2・T5が対象になります。そのうち、T3は状態が同じですから、バックアップファイルから戻しただけで済むこともあります。またT5はまだ処理が完了していないので、単にトランザクションを再発生するだけで済みます。
 ロールバックでは、既に処理が完了しているトランザクションは修正する必要はありません。障害発生時に更新処理中であるT3とT5が対象になります。
         チェックポイント  障害発生  異常終了     ハード故障終了
      ──────┬───────┬─→
    T1 ───○ │       │    対象外      対象外   
    T2  ────┼──○    │    対象外      ロールフォワード
    T3   ───┼───────┤    ロールバック   注
    T4      │ ────○ │    対象外      ロールフォワード
    T5      │  ─────┤    ロールバック   注

データベースの再編成・再構築

上記の障害ではなく通常の利用時でもデータベースの保守が必要になることがあります。その対応に再編成と再構築があります。なお、ここではテーブルについて記述しますが、インデックスでも同様なことが起こり、それらを同時に行う必要があります。

データベースの再編成(再構成)

通常のファイルを削除しても、その領域に消去フラグがつけられるだけで解放されません。そのため、ファイルの創成や削除を繰り返している間に、磁気ディスクには虫食い的な空き領域が散在します。これは磁気ディスクの容量を無駄にするし、処理効率を低下させます。空き領域をまとめて連続領域に並び変える作業がデフラグメンテーション(デフラグ)です。

これと同じ現象がデータベースでも発生します。データの追加、更新、削除を繰り返すと、テーブル内に再利用されない領域が発生します。それを整理する作業をデータベースの再編成あるいは再構成といいます。

データベースの再構築

データベースの再構築とは、データベースを作り直すことで、次の手順で行います。
 ・既存のデータベースをテキストファイルにダンプ(データベースダンプという)し、
 ・必要ならば、新スキーマを作成し、
 ・新スキーマにより、テキストファイルをデータベースにする

次のような場合に再構築が必要になります。

再構築の作業中に旧データベースの更新処理があると、新データベースと整合性がとれなくなるので、作業期間中は利用を止めることになります。そのため、再構築を頻繁に行うのは不適切です。