データベース障害時の情報(ログ)
障害からデータベースを回復するために、バックアップ、ログ(ジャーナル)、チェックポイントの情報が採取される。
ログはデータベースのレコードの更新前と更新後の内容、トランザクションを記録したファイル。
チェックポイントはデータベースの書き出しとログの内容を一致させる時点。メモリの内容やシステムの実行状態を書き記したファイルをチェックポイントファイルという。
トランザクション障害
プログラム障害による誤動作。
ログの更新前情報より、トランザクション実行前の状態に戻す。(ロールバック)
媒体障害
磁気ディスクなどのデータベース格納媒体の障害。
そもそもぶっ壊れているので、代替のデータベースを用意する。
- 別の媒体にバックアップをロード
- ログからバックアップ採取以降の更新後情報を取得し、データベースの内容を順に更新
この方法をロールフォワード(前進復帰)という。
システム障害
システム障害時は、ウォームスタートを試み、それでも駄目ならコールドスタートする。
ウォームスタートは、電源ONのまま再起動すること。(ソフトウェアリセットによる再起動)電源ONのまますることで、メモリなどハードウェアのチェックが省かれるため迅速に再起動できる。
ウォームスタートでは、直前のチェックポイントまでの内容は保証されている前提で行い、ロールバックとロールフォワードを併用する。
- 直前のチェックポイントまでに完了しているトランザクションは復旧の必要なし
- チェックポイント〜障害の間に完了したトランザクションは、ロールフォワード(ログから更新後情報を取得し反映)。
- 障害発生時に処理中だったトランザクションはロールバック。
コールドスタートは、電源OFFからの再起動。コールドスタート後の対応は媒体障害時と同じ。
分散データベース
物理的に離れた複数のシステムに接続されたデータベースを、論理的に1つのデータベースとして扱うデータベースのこと。
2相コミット
分散データベースの整合性を保つための仕組み。2相コミットには2つの段階がある。
第1相では、データベースへの更新を要求し、「COMMIT可」、「COMMIT不可(ROLLBACK)」のどちらかの結果が返ってくる。
第2相では、すべての更新要求が「COMMIT可」だった場合はCOMMIT実行を要求、どれか1つでも「COMMIT不可」だった場合はROLLBACK実行を要求する。
第1相と第2相の間をセキュア状態という。(COMMITもROLLBACKもどちらもできる状態)
レプリケーション
複数のデータベースがネットワークを介してデータを同期する仕組み。
主となるデータベースをマスターデータベース、同期先のデータベースをレプリカデータベースという。
レプリケーションの目的は、負荷分散、応答速度の向上、相互バックアップ。
読み取りしかしない機能(管理画面とか)ではレプリカデータベースを参照するなど使い分けできる。ただし、レプリケーションは一時的にマスターとレプリカの内容が一致しない状態が発生するのでリアルタイム性の高さをもとめられるときには注意が必要。