仕組みから学ぶ Web
応用読了目安 15#バックアップ#復旧#RPO#RTO#災害対策

バックアップと復旧 — 取れていることと、戻せることは別

毎日バックアップを取っていた。3年間、一度も失敗していなかった。いざ戻そうとしたら、復旧に11時間かかると分かった。

この記事の進み方

What — バックアップは「取る」「置く」「戻す」の3つ

バックアップという言葉は、性質の違う3つをまとめて指しています。

Figure3つの段階と、それぞれの失敗
  1. 1取る
  2. 2置く
  3. 3戻す
1/3
取る決めた時刻にデータの写しを作る。失敗すれば通知が来るので、ここは気づける

監視が見ているのはたいてい1段目だけ。2段目と3段目は、実際にやってみるまで分からない。

RPO
Recovery Point Objective。どこまで戻るか=失ってよいデータの量。1日1回なら最大24時間ぶん失う。
RTO
Recovery Time Objective。どれだけで戻すか=止まってよい時間。復旧の所要時間がこれを超えると約束を守れない。
フルバックアップ
全体の写し。戻すのは単純だが、量と時間がかかる。
差分・増分
前回からの変化だけを取る方式。取るのは速いが、戻すときにフルと組み合わせる必要がある。
PITR
Point-in-Time Recovery。任意の時点に戻す仕組み。トランザクションログを継続的に保存して実現する。

RPO と RTO は、別々の約束

この2つを混ぜると議論が噛み合いません。

  • RPO は「いつの状態に戻るか」 — 1日1回のバックアップなら、最悪 24 時間ぶんのデータが消えます
  • RTO は「いつまでに戻るか」 — 復元に 8 時間かかるなら、その間サービスは止まります

冒頭の事故は、RPO が 18 時間、RTO が 11 時間でした。どちらも誰も知りませんでした。決めていなかったのではなく、測っていなかったので分かりようがなかった。

「取れている」は3つのうち1つしか言っていない

バックアップの監視が見ているのは、ほぼ常に1段目です。

「ジョブが成功した」「ファイルが作られた」「サイズが0ではない」。これらは全部、取れたことしか言っていません

中身が壊れていないか、戻せるか、どれだけかかるか。これらは戻してみるまで分かりません。

Why — 戻す作業は、平常時と条件が違う

復旧が計画通りに進まないのは、戻すときの状況が平常時と違うからです。

焦っている人が、初めての手順を実行する

バックアップを戻すのは、何かが壊れた直後です。人は焦っていて、判断力が落ちています。

そこで初めて触る手順を実行することになります。読むのも初めて、打つコマンドも初めて。取り返しのつかない操作を含むこともあります。

一度でも練習していれば、この差は大きく縮みます。

依存しているものが、同時に落ちていることがある

バックアップを同じクラウドの同じリージョンに置いていれば、そのリージョンが落ちたときバックアップも取り出せません

権限の設定を管理していた仕組みが落ちていれば、復元する権限が使えないこともあります。手順書を社内 Wiki に置いていて、その Wiki が同じ基盤に載っていれば、手順書が読めません

消したのが「一部」のとき、全体を戻すと別の損害が出る

冒頭の事故がこれです。

1テーブルだけ消えたのに、全体を戻すと他のテーブルも 18 時間巻き戻ります。注文は受け付けている。決済も走っている。それらを巻き戻すほうが、消えたテーブルより大きな損害になることがあります。

「戻す」は常に正解ではありません。 部分的に戻す手段を持っていないと、この判断ができません。

演習 — まず自分で判断する

確認 — ここまで読めたか

毎日 03:00 にフルバックアップを取っています。21:00 に障害が起きて復旧する場合、失われるデータは最大でどれくらいですか?

まず選ぶ(解答例は a〜d の記号で説明します)

確認 — ここまで読めたか

バックアップの監視として、最も価値が低いものはどれですか?

まず選ぶ(解答例は a〜d の記号で説明します)

読み終わりましたか?

読了にすると、これを前提とする記事がロードマップで開放されます。