データのリカバリー

1.バックアップの種類

 フルバックアップ(full backup)
   一番簡単で、バックアップの基本
     ある時点でシステムで保持されているすべてのデータをバックアップ
     バックアップのファイルさえあれば、全て復旧することが可能

   リカバリーについて
     単純な方法でリカバリーできる
     コスト高になる
       バックアップに掛かる時間が長くなる
         読み取り専用ファイルは除外する

     リソースの大量消費
       対象のデータ規模が大きくなり、大量消費につながる

     サービス停止が必要
       データの整合性を保つためにサービス停止後に行う
       バックアップのタイミングが難しい

 差分バックアップdifferential backup)
   前回のフルバックアップからの変更分だけをバックアップする
     トランザクションログをバックアップすることで実現できる
       ログにはあらゆる変更操作の履歴が残っている
     大元のファイルに対する変更差分のみのバックアップなので
       リソースの消費量も少ない

   リカバリーについて
     大元のバックアップファイルを用意し
     障害発生前までのログを順次適用し
     障害発生前の状態にファイルを戻す

 増分バックアップ(incremental backup)
   前回の任意バックアップからの差分をバックアップする
     バックアップ対象となるデータは少ない

   リカバリーについて
     リカバリ時にすべてのバックアップファイルが必要
     リカバリー手順も複雑になり時間も掛かる

 統合フルバックアップ(synthetic full backup)
   フルバックアップと差分バックアップ(または増分バックアップ)を
     結合して、新たなフルバックアップを作る
 
   リカバリーについて
     定期的に別サーバー等で実行することを考える
     本来の処理に影響を与えずにすむ

2.リカバリーの種類

 チェックポイントリスタート
   作業の途中で現在の状態を保存しておき、
     障害発生時に保存点から再開できる仕組み
   保存点はアプリケーションの部分で事前に用意しておく
     業務全体を止めることなく、当該処理だけのリカバリ

   処理手順
     作業を中断してでも元の状態に戻すことができる
       局所的なリカバリー手段

 リブート(reboot)
   コンピュータの使用中に再起動する
     スマホ等の電子機器で不具合が生じた際に利用する
     「現状」から抜け出す際に使用する

   処理手順
     各種機器の操作説明書に記述あり
       リカバリー処理ではなく、緊急脱出処理と理解する

 ロールバック(rollback)
   トランザクションの処理中にデータベースの更新に失敗した場合
     処理を行う前のデータベースの状態に戻す
   「取り消す」といったイメージ
     やりかけのトランザクション処理を取り消す、意味合い

   処理手順
     障害発生前までに取得したジャーナルを使って
       更新前のデータベースの状態に戻す

 ロールフォワード(rollfoward)
   処理は全て終わったが、データベースが壊れてしまった場合に
     障害発生直前を再現する
   「やり直す」といったイメージ
     バックアップ以降にやっていたことを再現する、意味合い

   処理手順
     フルバックアップデータを使って先ず大元の状態に戻し
     バックアップ取得時以降のトランザクションを実行した際に作られた
       ジャーナルを使い順次反映させ更新処理を順序良く再現させる