ログチェーンが壊れた場合どうすればよいのか?
1. どうすれば気づけるのか?
3. ログチェーンが壊れている期間にリストアしないといけなくなったらどうすればいいのか? 想定する状況
スケジュール
以下のような周期で定期的にバックアップしている
日曜に完全バックアップ
火・木・土に差分バックアップ
1時間毎にトランザクションログバックアップ
正しい周期のとき
code:mmd
gantt
title 正常なログチェーン
dateFormat YYYY-MM-DD HH:mm
axisFormat %m/%d(%a)
section 1週目
完全バックアップ_初回 : milestone , full01 , 2023/8/13 0:00 , 0
ログ_13日1回目 : trn1300 , 2023/8/13 0:30 , 0.5h
ログ_13日2回目 : trn1300 , 2023/8/13 1:30 , 0.5h
ログ_略 : done , ryaku01 , 2023/8/13 2:00 , 20.0h
ログ_13日22回目 : trn1323 , 2023/8/13 22:30 , 0.5h
ログ_13日23回目 : trn1323 , 2023/8/13 23:30 , 0.5h
差分_月曜 : diff01 , after full01 , 1d
ログ_略 : done , ryaku03 , 2023/8/14 0:00 , 1d
差分_火曜 : diff02 , after full01 , 2d
ログ_略 : done , ryaku03 , 2023/8/15 0:00 , 1d
差分_水曜 : diff03 , after full01 , 3d
ログ_略 : done , ryaku04 , 2023/8/16 0:00 , 1d
差分_木曜 : diff04 , after full01 , 4d
ログ_略 : done , ryaku05 , 2023/8/17 0:00 , 1d
差分_金曜 : diff05 , after full01 , 5d
ログ_略 : done , ryaku06 , 2023/8/18 0:00 , 1d
差分_土曜 : diff06 , after full01 , 6d
ログ_19日1回目 : trn1900 , 2023/8/19 0:30 , 0.5h
ログ_略 : done , ryaku07 , 2023/8/19 1:00 , 22.5h
ログ_19日23回目 : trn1923 , 2023/8/19 23:30 , 0.5h
section 2週目
完全バックアップ_2回目 : milestone , full02 , 2023/8/20 0:00 , 0
ログ_略 : done , ryaku08 , 2023/8/20 0:00 , 1d
差分_月曜 : diff07 , after full02 , 1d
ログ_略 : done , ryaku09 , 2023/8/21 0:00 , 1d
差分_火曜 : diff08 , after full02 , 2d
ログ_略 : done , ryaku10 , 2023/8/22 0:00 , 1d
差分_水曜 : diff09 , after full02 , 3d
ログ_略 : done , ryaku11 , 2023/8/23 0:00 , 1d
差分_木曜 : diff10 , after full02 , 4d
ログ_略 : done , ryaku12 , 2023/8/24 0:00 , 1d
差分_金曜 : diff11 , after full02 , 5d
ログ_略 : done , ryaku13 , 2023/8/25 0:00 , 1d
差分_土曜 : diff12 , after full02 , 6d
ログ_略 : done , ryaku14 , 2023/8/26 0:00 , 1d
section 3週目
完全バックアップ_3回目 : milestone , full03 , 2023/8/27 0:00 , 0
適当にバックアップをとったとき(水曜以降の差分バックアップのベースがずれる)
code:mmd
gantt
title 乱れたログチェーン
dateFormat YYYY-MM-DD HH:mm
axisFormat %m/%d(%a)
section 1週目
完全バックアップ_初回 : milestone , full01 , 2023/8/13 0:00 , 0
ログ_13日1回目 : trn1300 , 2023/8/13 0:30 , 0.5h
ログ_13日2回目 : trn1300 , 2023/8/13 1:30 , 0.5h
ログ_略 : done , ryaku01 , 2023/8/13 2:00 , 20.0h
ログ_13日22回目 : trn1323 , 2023/8/13 22:30 , 0.5h
ログ_13日23回目 : trn1323 , 2023/8/13 23:30 , 0.5h
差分_月曜 : diff01 , after full01 , 1d
ログ_略 : done , ryaku03 , 2023/8/14 0:00 , 1d
差分_火曜 : diff02 , after full01 , 2d
ログ_略 : done , ryaku03 , 2023/8/15 0:00 , 1d
適当にとった完全バックアップ : crit , milestone , fulltekitou01 , 2023/8/14 13:00 , 0
差分_水曜 : crit , diff03 , after fulltekitou01 , 35h
ログ_略 : done , ryaku04 , 2023/8/16 0:00 , 1d
差分_木曜 : crit , diff04 , after fulltekitou01 , 59h
ログ_略 : done , ryaku05 , 2023/8/17 0:00 , 1d
差分_金曜 : crit , diff05 , after fulltekitou01 , 83h
ログ_略 : done , ryaku06 , 2023/8/18 0:00 , 1d
差分_土曜 : crit , diff06 , after fulltekitou01 , 107h
ログ_19日1回目 : trn1900 , 2023/8/19 0:30 , 0.5h
ログ_略 : done , ryaku07 , 2023/8/19 1:00 , 22.5h
ログ_19日23回目 : trn1923 , 2023/8/19 23:30 , 0.5h
section 2週目
完全バックアップ_2回目 : milestone , full02 , 2023/8/20 0:00 , 0
ログ_略 : done , ryaku08 , 2023/8/20 0:00 , 1d
差分_月曜 : diff07 , after full02 , 1d
1. どうすれば気づけるのか?
でも、毎回いらない…
「明らかに変なタイミングで手動で完全バックアップが作られたら通知する」とかできるのかな?
上記の想定だと、スケジュールされた完全バックアップが実行されたらログチェーン自体は元に戻る 完全バックアップ_2回目
3. ログチェーンが壊れている期間にリストアしないといけなくなったらどうすればいいのか? 適当にとった完全バックアップが「これホントに動いてる?あ、動いてる。じゃあ消しとくわ…」くらいの適当さだった場合
そもそもバックアップを消さないでとか、そういうのはいったん置いといて…
例えば8/16 0:00に戻りたい場合
適当にとった完全バックアップがもうないので、そこからのベースとなっている赤い差分バックアップはもう使えない
トランザクションログバックアップが残っていればギリギリ戻れる
完全バックアップ_1回目
完全バックアップ_1回目から8/16 0:00の直前までとっていたトランザクションログバックアップ全部