独立サイトの災害復旧:RTO/RPOの定義、復旧手順、年次訓練

災害復旧の2つの核心指標はRTO(目標復旧時間)とRPO(目標復旧時点)です。多くのB2B独立サイトではRTO 4時間、RPO 4時間が妥当で、99.99%の可用性を目指す必要はありません—...

灾难恢复:RTO/RPO分级与年度演练Disaster recovery: RTO/RPO tiers and annual drill RTO是多久能恢复,RPO是能丢多少数据 —— 两个指标决定你要花多少钱备灾RTO = how long to recover; RPO = how much data you can lose 级别Tier RTO目标RTO target RPO目标RPO target 核心站Core site ≤1小时≤1 hour ≤15分钟≤15 min 普通站Standard ≤4小时≤4 hours ≤4小时≤4 hours 静态内容Static content ≤24小时≤24 hours 反直觉判断:RTO定得越短,成本指数级上升 —— 99.99%可用性对B2B独立站是过度投入Counter-intuitive: sub-hour RTO costs exponentially more — 99.99% is overkill for B2B 多数B2B站4小时RTO加每日备份就够,多花的钱不如投在询盘转化上Most B2B sites are fine with 4h RTO + daily backups 红线:灾难恢复预案必须写在纸上,不能靠”到时候再说”Red line: DR plan must be written down, not “figure it out then” 事故发生时没人能冷静查文档,预案必须提前演练过至少一次No one reads docs during an outage — the plan must have been drilled 年度演练四步:切流量到备机 · 恢复数据库 · 验证询盘表单 · 切回主站Annual drill: failover · restore DB · verify form · failback 全程计时,记录实际RTO/RPO,和目标对比,超过目标就升级预案Time it; compare actual vs target; upgrade if missed 演练每年至少一次,建议安排在业务低峰的周日凌晨Drill at least yearly, ideally Sunday off-peak
災害復旧のRTO/RPO区分と年次訓練の4ステップ

独立サイトの災害復旧:RTO/RPOの定義、復旧手順、年次訓練

結論から言うと:災害復旧の2つの核心指標はRTO(目標復旧時間)とRPO(目標復旧時点)です。多くのB2B独立サイトではRTO 4時間、RPO 4時間が妥当で、99.99%の可用性を目指す必要はありません。それはECや決済レベルの要件で、コストが指数関数的に増大します。復旧手順は4ステップです。トラフィックを待機系に切り替え、バックアップからデータベースとファイルを復元し、問い合わせフォームとメール到達を検証し、本番サイトに切り戻す。年次訓練は少なくとも年1回、全行程を計測し、実際のRTO/RPOが目標を超えたら計画を格上げします。

一、RTOとRPO:まず許容できるデータ損失と停止時間を把握する

RTO(Recovery Time Objective、目標復旧時間)は、サイトが障害発生から対外サービスを復旧するまでの最大許容時間です。RPO(Recovery Point Objective、目標復旧時点)は、復旧後に許容できるデータ損失の時間幅です。この2つの数値を決めれば、バックアップ頻度と災害対策投資が決まります。つまりコストと可用性のトレードオフです。

直感に反する判断:B2B独立サイトでは、99.99%の可用性追求は過剰投資です。B2Bサイトは訪問者数が少なく、問い合わせはメールとフォームが中心で、4時間停止と1時間停止で業務への実影響に大差はありません。しかし災害対策コストの差は甚大です。RTO 15分を実現するには、デュアルアクティブ拠点とリアルタイムデータベース同期が必要で、月額コストは単一拠点方案の5〜10倍になります。

サイトタイプ RTO目標 RPO目標 可用性 災害対策方案
核心問い合わせサイト 1時間以内 15分以内 99.9% 遠隔待機系+binlogリアルタイム同期
一般B2Bサイト 4時間以内 4時間以内 99.5% 単一拠点+日次バックアップ+遠隔復旧
ブログ/コンテンツサイト 24時間以内 24時間以内 99% 週次バックアップ+手動復旧
EC/決済サイト 15分以内 1分以内 99.99% マルチアクティブ+リアルタイム同期(コスト極大)

シナリオ例:産業機械の海外展開サイトで、月間問い合わせ数が約30件、客単価50万元。4時間停止すると、問い合わせ密度から計算して1〜2件の問い合わせを失う程度で、損失は限定的です。このようなサイトは単一拠点と日次バックアップで、RTO 4時間、RPO 4時間で十分で、月間の災害対策コストは200元未満です。無理にデュアルアクティブにすると、月2000元多く払って得る可用性は、業務に測定可能なリターンをもたらしません。

自分のサイトがどの分類か判断するには、まず月間問い合わせ数と客単価を見ます。月間問い合わせが100件超、客単価1万元未満ならEC寄りで、RTOは1時間に抑える必要があります。月間問い合わせが30件未満、客単価10万元超ならプロジェクト型寄りで、RTO 4時間で十分許容できます。

二、復旧手順:4ステップ、事前に紙に書いておく

災害復旧の手順を頭の中だけに置いてはいけません。障害は深夜に起こるかもしれませんし、担当者が出張中だったり、システムに詳しくない人だったりすることもあります。手順は文書化し、コマンドライン単位で誰がいつ何をするのかを明確にします。

標準的な復旧手順は4ステップです。まずトラフィックを切り替え、DNSまたはCDNを待機サーバーのIPに変更します。次にデータを復元し、遠隔のオブジェクトストレージから最新のバックアップを取得してファイルとデータベースを戻します。続いて検証し、トップページ、商品一覧、問い合わせフォームの送信、メール到達を一通り確認します。最後に関係者へ通知し、営業、カスタマーサポート、経営層にサイト復旧時刻を共有します。攻撃を受けた後の特別な復旧手順は次を参照してください。サイトが攻撃を受けた後。

ステップ アクション 責任者 所要時間の目安 検収基準
1 障害の確認 監視アラートが発報し、本番サイトの停止を確認 当番の運用担当 5分 3回連続で検知失敗
2 トラフィックの切り替え DNSのTTLを60秒に下げ、待機サーバーのIPへ切り替え 運用・保守 10分 世界のDNSに反映
3 データの復元 S3からバックアップを取得し、ファイルとデータベースを復元 運用・保守 1〜2時間 サイトが閲覧可能
4 機能の検証 トップページ、商品ページ、問い合わせフォームを一通り確認 運用担当+営業 30分 フォーム送信のメールが届く
5件の通知 営業とカスタマーサポートがサイト復旧を把握 マーケティング責任者 10分 グループチャットで周知完了
6 振り返り 24時間以内にインシデントレポートを作成 技術責任者 1営業日 根本原因と改善項目

事例: ある越境ECサイトで午前3時にアラートが鳴り、本番サイトが502を返しました。当番の運用担当は手順に沿って対応します。まずMySQLのクラッシュと確認し、再起動しても復旧せず。次にDNSを待機サーバーへ切り替え、TTLは事前に60秒に設定していたため10分で世界に反映。続いてS3から前夜のバックアップを取得してデータベースを復元し、40分で完了。その後、スマートフォンからテストの問い合わせを送信し、30秒後にメールを受信。最後にグループチャットで営業に通知し、朝8時の始業時にはサイトは正常に戻っていました。RTOは約1時間、RPOは約6時間で、目標を満たしています。

DNS切り替えとCDN連携の詳細は次を参照してください。CDNグローバル高速化のノード障害時の切り替えをご覧ください。ドメイン変更と301リダイレクトの引き継ぎも考え方は同じです。次を参照してください。サイトリニューアルとドメイン変更。

三、待機サーバーとコールドスタンバイ: 常に二重化が必要とは限らない

災害対策はコールドスタンバイ、ウォームスタンバイ、アクティブ-アクティブの3段階です。コールドスタンバイはバックアップファイルのみで、障害時に一時的にサーバーを立てて復旧します。ウォームスタンバイは待機サーバーを常時起動したままにし、データを非同期で同期します。アクティブ-アクティブは2つの拠点で同時にトラフィックを処理し、リアルタイムで同期します。コストは低い順から高くなるほど、RTOは短くなります。

多くのB2B直販サイトはコールドスタンバイとウォームスタンバイの併用で十分です。待機サーバーは常時起動しますがトラフィックは受けず、毎日1回データを同期します。障害時はDNSを切り替えるだけで、RTOは1〜2時間に抑えられます。アクティブ-アクティブは1人か少人数のチームには過剰投資で、運用の複雑さに耐えられません。

プラン 待機サーバーの状態 RTO 月額コスト増 適した用途
コールドスタンバイ 待機サーバーなし、バックアップのみ 4〜8時間 0円 ブログ、コンテンツサイト
ウォームスタンバイ 待機サーバー常時起動、毎日同期 1〜2時間 約300〜500元 一般的なB2B問い合わせサイト
ホットスタンバイ 待機サーバー常時起動、リアルタイム同期 15〜30分 約1500〜3000元 基幹業務サイト
アクティブ-アクティブ 2拠点で同時運用 秒単位 約5,000円以上 EC、決済

直感に反する注意点:DNSの切り替えは即時ではありません。TTLを60秒に設定しても、世界中でDNSが反映されるまで5〜15分かかり、一部のユーザーはローカルDNSキャッシュに数時間古いアドレスを保持し続けます。つまり、トラフィックを切り替えても全員がすぐに待機サーバーへアクセスするわけではなく、移行期間が発生します。事前計画には「DNS切り替え後、15分待ってから全世界からのアクセスを検証する」と明記しておきましょう。

4. 年次訓練:計画を実際に走らせ、紙の上の問題を見つける

災害復旧計画で最大のリスクは「書いただけでやったつもり」になることです。文書には立派に書いてあっても、実際に障害が起きてみると待機サーバーのパスワードが分からない、バックアップファイルが取得できない、SMTP設定が古いサーバーに直書きされている、といった問題が発覚します。こうした問題は実際に訓練して初めて表面化します。

年次訓練は業務が落ち着く日曜日の未明に実施し、全工程の時間を計測します。訓練では本番サイトを実際に切り替えるのではなく、テスト環境でバックアップの取得からフォームの検証まで復旧手順を一通り実行し、各ステップの実測所要時間を記録します。実測RTOと計画の目標を比較し、目標を超えていれば対策を強化します。訓練後は振り返りをまとめ、計画を更新します。

訓練項目 チェック内容 よくある質問 改善の方向性
バックアップの可用性 S3から最新バックアップを取得して解凍できるか gzip破損、鍵の期限切れ バックアップの完全性チェックを追加
待機サーバーの起動 待機サーバーが5分以内に起動するか 長期間起動しておらずソフトが古い 毎月1回は待機サーバーを起動
DNS切り替え TTLが本当に60秒か 事前にTTLを下げるのを忘れた TTLを常時60秒に設定
データベースの復旧 インポート後に日本語が正常か 文字コードの誤り、文字化け 復旧スクリプトで文字コードを固定
フォームメール テスト送信した問い合わせを受け取れるか SMTPパスワードが旧設定に直書き SMTPは環境変数を使用
担当者の準備 当番に連絡がつくか 退職時の引き継ぎが未実施 連絡先を四半期ごとに更新

シナリオ例:あるチームが初めて年次訓練を行い、計画に沿ってバックアップを取得し、データベースを復旧し、サイトにアクセスしました。最初の40分は順調でしたが、問い合わせフォームの検証の段階で、送信してもメールがなかなか届きません。原因はSMTPパスワードがwp-config.phpに書かれており、旧サーバーのメールサービスがすでに停止していたことでした。これが実際の障害時に発覚していれば、さらに1時間の調査が必要になっていたでしょう。訓練の価値は、こうした紙の上の問題を事前に見つけることにあります。

バックアップ戦略の詳細設定はサイトのバックアップと復元演習、監視アラートのしきい値はサイト監視とアラート、日常メンテナンスのチェックリストは公式サイト保守で毎月やる6つのこと。

FAQ よくある質問

RTOとRPOとは何か、どう決めるのか?
RTOは目標復旧時間で、障害発生からサービス復旧までの許容最大時間を指します。RPOは目標復旧時点で、復旧後にどの時点までのデータ損失を許容できるかを示します。B2B独立サイトではRTO 4時間、RPO 4時間が推奨です。月間問い合わせ30件前後で単価の高いプロジェクト型ビジネスなら、この構成で十分です。月間問い合わせが100件を超えるEC寄りのサイトなら、RTOは1時間まで縮めましょう。RTOを短くするほどコストは指数関数的に増えるので、99.99%の可用性を闇雲に追わないことです。
B2B独立サイトでアクティブ・アクティブ構成は必要か?
ほとんどの場合不要です。アクティブ・アクティブは2つのデータセンターで同時にトラフィックを処理し、データベースをリアルタイム同期する構成で、月額5000円以上かかり、運用の複雑さは個人や小規模チームには災難です。より割に合うのはウォームスタンバイです。待機機は常時起動しつつトラフィックは受けず、毎日1回データを同期し、障害時はDNSを切り替えて移行します。RTOは1〜2時間まで縮められ、月額の追加コストは300〜500円です。ホットスタンバイやアクティブ・アクティブを検討するのは、EC、決済、月間問い合わせが数百件以上のサイトだけです。
災害復旧計画はどう書き、どこまで細かくする?
コマンドラインのレベルまで書きます。含める内容は、障害判定基準(3回連続で監視失敗ならインシデント)、DNS切り替えの具体的な手順と待ち時間、どのS3バケットからどのバックアップを取得するか、データベース復旧の完全なコマンド、検証チェックリスト(トップページ、製品ページ、問い合わせフォーム、メール到達)、連絡先一覧と電話番号、振り返りレポートのテンプレートです。「運用担当に連絡」のような曖昧な表現は避け、具体的な氏名と予備の連絡先を明記します。計画はパスワードマネージャーとクラウドストレージの2か所に保管し、障害が起きたサーバーだけに置かないことです。
年次訓練はどう行い、サイトを停止する必要はある?
テスト環境で行い、本番サイトは実際に止めません。流れは、直近のバックアップをテスト環境に取得し、復旧手順を最初から最後まで通します。ファイルの解凍、データベースのインポート、nginxの設定、サイトへのアクセス、テスト問い合わせの送信、メール受信まで、全工程の時間を計測します。実測時間と計画のRTO目標を比較し、超えていれば構成を強化します。訓練は日曜未明の業務閑散時間に、年1回以上実施し、新入社員は入社後半年以内に必ず1回参加させます。
DNS切り替えにはどれくらいかかる?切り替え後もユーザーが旧サイトにアクセスするのはなぜ?
TTLを60秒に設定しても、世界のDNSに反映されるまで5〜15分かかり、一部ユーザーのローカルDNSキャッシュは旧アドレスを数時間保持します。これは正常な現象で、設定ミスではありません。トラフィックを切り替える前にTTLを60秒へ下げておきます(できれば平常時から60秒を維持し、障害が起きてから下げないこと)。切り替え後は15分待ってから世界からのアクセスを検証し、同時に営業とサポートへ通知します。一部ユーザーはまだ旧サイトにアクセスしている可能性があり、移行期間中であることを伝えます。
ハッキングとハードウェア障害の復旧手順は同じ?
違います。ハードウェア障害なら、バックアップから予備機に戻すだけで済みます。ハッキングされた場合の復旧は2ステップ多くなります。第一に、古いバックアップから直接復元してはいけません。古いバックアップにすでにバックドアが仕込まれている可能性があるからです。第二に、復元後にすべてのパスワードと鍵を変更し、cronタスクとデータベース内のwebshellを確認し、クリーンであることを確認してから再公開します。詳細な手順はサイトが攻撃を受けた後の記事をご覧ください。この2つの復旧方法を混同するのはよくあるミスです。ハッキング後に古いバックアップから直接復元して、バックドアまで一緒に戻してしまうのです。

最後に

災害復旧で最も危険な心構えは「バックアップがあれば十分」というものです。バックアップが解決するのはデータを失わないことで、災害復旧が解決するのは、障害発生後にどれだけ早くサービスを戻せるか、誰がやるか、どうやるかです。この2つは、まる一揃いの計画と訓練の分だけ違います。計画のないバックアップは、いざという時にあたふたするだけです。訓練のない計画も、実際に使う時には同じように詰まります。

実行は3ステップです。第一に、月間の問い合わせ数と客単価からRTO/RPOを決めます。多くのB2Bサイトは4時間で十分なので、むやみに高い目標を追わないこと。第二に、コマンドライン単位の復旧計画を書き、パスワードマネージャーとクラウドストレージの2か所に保存します。第三に、毎年テスト環境で完全な訓練を1回行い、実際のRTO/RPOを記録し、目標を超えたら計画を強化します。この3ステップを終えて初めて、自分のサイトが障害後にどれだけ早く戻るかが分かります。

覚えておきたい一言。RTOは高ければ高いほど良いわけではなく、4時間と15分では災害対策コストが10倍違います。まずサイト停止4時間でどれだけ損失が出るかを計算し、それからどの程度の災害対策が必要かを決めましょう。

环形山
环形山 クレーター専門家

公式アカウント · 環形山 Crater

環形山(Crater)は、WordPress独立サイト開発+Google SEO+GEO全域成長に特化した海外展開支援会社で、スマートハードウェア、産業機器、SaaS、新エネルギーなどの分野を手がけています。

プロダクト能力方法論ホワイトペーパー業界レポート
965件のシェア
78件のナレッジベース