DB学習シリーズ3: トランザクションログで直前までの復元
概要
日が空きましたが今日からまたはじめていきます。
前回はバックアップのフル、差分、増分の話をしました。では仮にバックアップ前にDBが壊れた場合、理論上はデータが保存されていないため消失することになります。
それだと業務はもちろんサービスとしても成り立たないため、それを防ぐ仕組みとしてトランザクションログを用いた機能があります。
用語説明
- リストア バックアップからの復元
- トランザクション 「取引」。DB用語では複数の処理を1つの処理として一貫性を持たせて実行・管理する仕組み。細かい部分は次回以降
- ロールフォワード トランザクションログからバックアップ以降の動作を再現する
- ロールバック 失敗したトランザクションの変更を取り消す
ロールフォワード
実のところバックアップからのデータ再現という意味だとログから状況再現するロールフォワードを使えればいいです。
9:00 フルバックアップ
9:10 トランザクションA
9:20 トランザクションB
9:30 トランザクションC
9:35 ~DB障害発生~
例えばDB障害がHDD破損だったとして交換作業をしたという状況とします。今現在新しいHDDは空っぽです。(RAIDはあえて考えないでください)
こんなときにどんな手順で戻すかというと
フルバックアップからのリストアで9:00までのデータを復元
↓
トランザクションログで障害発生前までの状況を再現する(ロールフォワード)
↓
9:30までの状態を復元完了
これで直前まで復元できます。
注意点
私はこの手のソフトに触れた経験が無いため想像で話すのですが、バックアップ方式もRAIDもトランザクションの管理もそれぞれの管理ソフトや設定によって設定から何かまで違うはずです
そのため、今どのような設定になっているか、復旧手順や例外についても日頃から考えて置く必要があるのかなと思います。まあそんな感じで