独立サイトのバックアップ戦略:フル・増分、頻度、保存先、リストア演習

独立サイトのバックアップは3-2-1の原則に従います。3つのコピー、2種類の媒体、1つは遠隔地に。頻度の目安は、データベースが4時間ごとの増分と毎日のフル、ファイルが毎日のrsync増分と毎週のフルです。保存は3層で、サーバーのローカル...

独立站备份:3-2-1原则与恢复演练Backup strategy: 3-2-1 rule and restore drills 没恢复过的备份等于没有备份 —— 备份策略一半是怎么存,一半是怎么恢复A backup you never restored is no backup at all — half the job is recovery 副本Copy 位置Location 频率Cadence 1 本地1. Local 服务器磁盘另一分区Another partition on server 每4小时增量 · 每日全量4h incremental, daily full 2 异地2. Offsite 异地对象存储 S3/OSSObject storage S3/OSS 每日同步 · 保留30天Daily sync, keep 30 days 3 冷备3. Cold Glacier/归档 · 季度全量Glacier archive, quarterly 反直觉判断:备份只存在同一台服务器上,等于没有备份 —— 服务器被黑时备份会一起被加密Counter-intuitive: on-server backups are useless — ransomware encrypts them too 3-2-1原则:3份副本、2种介质、1份异地,缺一不可3 copies, 2 media, 1 offsite — non-negotiable 红线:每季度必须做一次恢复演练,没恢复过的备份不算数Red line: quarterly restore drill — untested backups are not backups 真实事故里,超过40%的备份恢复失败是因为备份文件损坏或密码丢失40%+ of restores fail due to corrupt archives or lost keys 保留策略:每日30天 · 每周12周 · 每月12个月 · 每年3年Retention: 30 daily · 12 weekly · 12 monthly · 3 yearly 数据库用mysqldump加binlog,文件用rsync增量,恢复时间目标见灾难恢复一文mysqldump + binlog for DB; rsync incremental for files
バックアップの3-2-1戦略:ローカル、遠隔地のオブジェクトストレージ、コールドアーカイブの3層コピー

独立サイトのバックアップ戦略:フル・増分、頻度、保存先、リストア演習

結論から言うと:独立サイトのバックアップは3-2-1の原則に従います。3つのコピー、2種類の媒体、1つは遠隔地に。頻度の目安は、データベースが4時間ごとの増分と毎日のフル、ファイルが毎日のrsync増分と毎週のフルです。保存は3層で、サーバーのローカル別パーティション、遠隔地のオブジェクトストレージ(S3/OSS)、Glacierによるコールドアーカイブです。保持方針は、日次30日、週次12週、月次12か月、年次3年。直感に反する結論ですが、リストアしたことのないバックアップはバックアップがないのと同じです。実際の障害では40%以上のバックアップがリストアに失敗し、原因はバックアップファイルの破損か鍵の紛失です。四半期ごとに必ずリストア演習を行ってください。

1. 何をバックアップするか:データベースとファイルは分けて備える

独立サイトのバックアップで備えるものは2種類、データベースとファイルです。データベースはWordPressのwp_posts、wp_options、wp_usersなどの内容で、ファイルはwp-content/uploads内の画像、テーマ、プラグインのコードです。2種類は変化する頻度もバックアップ方法もまったく違うため、まとめて備えると問題が起きます。

データベースはmysqldumpまたはwp-cliでエクスポートし、毎回–single-transactionを付けてテーブルロックで本番に影響が出ないようにします。ファイルはrsyncで増分同期し、変化した部分だけを同期します。毎回フルコピーは避けてください。10GBのwp-contentディレクトリなら、フルコピーは1回十数分かかりますが、増分同期は数秒で済みます。

バックアップ対象 変化の頻度 おすすめツール バックアップ方式
MySQLデータベース 毎時変わる可能性 mysqldumpまたはxtrabackup 4時間ごとにbinlog増分、毎日フルdump
wp-content/uploads 毎週画像が追加 rsync 毎日増分同期
テーマとプラグインのコード 月に数回変更 gitまたはrsync バージョン管理、毎月フル
wp-config.php ほとんど変化なし パスワード管理ツールに別途保存 変更時にバックアップ
nginx/サイト設定 月に数回変更 gitで管理 変更時にバックアップ

シナリオ例:WordPressを使った産業機器の海外展開サイトで、毎日3〜5件の問い合わせと2〜3枚の製品画像が増えます。データベースはスクリプトで4時間ごとにエクスポートし、ファイルは毎日午前3時にrsyncで遠隔地のオブジェクトストレージへ増分同期します。1週間でデータベースのバックアップは約500MB、ファイルの増分バックアップは約200MB、ストレージ費用は月20元未満です。この構成は有料のバックアッププラグインより信頼できます。

バックアップスクリプトの書き方は、環形山テックスタックの自動運用の考え方と同じです。GUIプラグインに頼らず、cronとスクリプトを使い、失敗したらアラートを送ります。

2. 頻度と保持方針:バックアップは頻繁ならよいわけではない

直感に反する判断だが、バックアップは頻度が高ければ高いほど良いわけではない。頻繁すぎるとストレージとIOを大量に消費し、復元時にかえって混乱する。似たようなバックアップが山ほどあって、どれがクリーンなのか分からなくなるからだ。適切な頻度は業務の変化速度で決める。データベースは4時間ごと。問い合わせはいつ来るか分からないからだ。ファイルは毎日1回。画像アップロードは頻繁ではないからだ。

保持ポリシーは祖父・父・子の3層で設計する。日次バックアップは30日、週次バックアップは12週、月次バックアップは12か月、年次バックアップは3年保持する。これなら昨日誤って削除した記事も、半年前に攻撃を受ける前のクリーンな状態も復元できる。

バックアップ種別 頻度 保存期間 保存場所 用途
データベース全量 毎日午前3時 30日 別の場所のオブジェクトストレージ 日常的な誤削除からの復元
データベース増分binlog 4時間ごと 7日 ローカル+遠隔地 分単位の復元
ファイル完全 毎週日曜未明 12週 別の場所のオブジェクトストレージ 週単位のロールバック
ファイル増分rsync 毎日未明 30日 別の場所のオブジェクトストレージ 日単位のロールバック
月次アーカイブ 毎月1日 12か月 Glacierコールドバックアップ 月次コンプライアンスと長期保管
年次アーカイブ 毎年1月 3年 Glacierコールドバックアップ 年次監査と履歴

シナリオ例:海外向けサイトで3月15日の午後、データベースに悪意ある内容が注入された。binlog増分バックアップがあれば、データベースを3月15日の正午12時、つまり攻撃発生前の状態に復元できる。失うのは半日分の問い合わせ記録だけだ。日次完全バックアップしかなければ、3月15日の午前3時にしか戻せず、丸1日分の問い合わせを失う。これが4時間増分と日次完全の違いだ。

三、保存場所:3-2-1原則、遠隔地は必須条件

3-2-1バックアップ原則とは、重要データの複製を3つ保持し、2種類の異なる媒体に保存し、そのうち1つを遠隔地に置くという意味だ。これは理論ではなく、数え切れないランサムウェア事件から導き出されたものだ。実際の事故では、攻撃者はサーバーを暗号化すると同時にローカルバックアップも暗号化する。バックアップとサイトが同じマシン上にあるからだ。

3層ストレージの選び方。第1層はローカルバックアップで、サーバーの別ディスクパーティションに置く。復元は最速だがリスク耐性は最も低い。第2層は遠隔地のオブジェクトストレージで、AWS S3やAlibaba Cloud OSSを使う。アベイラビリティゾーンをまたいで冗長化され、1台のサーバー障害では止まらない。第3層はコールドアーカイブで、S3 GlacierやOSSアーカイブを使う。安価だが復元は遅く、年次コンプライアンスと長期保管に使う。

ストレージ層 位置 復元速度 コスト 主な用途
ローカルディスクバックアップ サーバーの別パーティション 秒単位 0円 日常の高速復旧
別の場所のオブジェクトストレージ S3/OSSクロスリージョン 分単位 約0.02円/GB/月 メインバックアップ、毎日同期
コールドアーカイブ Glacier/OSSアーカイブ 時間から日単位 約0.005円/GB/月 年次コンプライアンスと長期保管
オフライン媒体 ローカルハードディスク/テープ 物理的な取り出し ハードディスクの一時費用 極端なランサムウェア対策の最後の砦

逆説的な注意点:バックアップファイルはwebディレクトリに置かないこと。多くの人がwp-content/backup/にバックアップを置き、コピーが増えたと安心していますが、実際には攻撃者がこのパスをスキャンして直接ダウンロードし、データベース名やテーブル名がすべて漏洩します。正しい方法は、バックアップファイルをwebルートの外に置くか、バックアップ完了後に自動でオブジェクトストレージへアップロードしローカルコピーを削除することです。攻撃を受けた後のクリーンアップ手順はこちらサイトが攻撃を受けた後。

とCDNグローバル高速化併用時の注意:CDNキャッシュはバックアップではありません。静的コンテンツをエッジノードに複製しているだけで、オリジンサーバーが落ちればCDNキャッシュも期限切れになります。CDNキャッシュを災害復旧策と考えないでください。

四、復旧訓練:四半期に一度、バックアップが本当に使えるか検証する

バックアップ戦略で最も見落とされがちなのが復旧訓練です。多くの企業がバックアップスクリプトを一年間動かし続けても一度も復旧したことがなく、いざという時にバックアップファイルの破損、解凍パスワードの失念、復旧手順がそもそも動かないことに気づきます。実際の事故では、バックアップ復旧の失敗の40%以上がこの3つの原因です。

復旧訓練のやり方:四半期ごとにメンテナンスウィンドウを選び、遠隔地のオブジェクトストレージから最新のバックアップを取得し、まったく新しいテスト環境に復旧して「ファイル復旧、データベースインポート、nginx設定、サイトアクセス、問い合わせフォーム送信の検証」の全工程を実行します。所要時間を計測し、実際のRTO(目標復旧時間)とRPO(データ損失量)を記録します。具体的なRTO/RPOの決め方はこちら独立サイトの災害復旧とRTO/RPOの定義。

訓練ステップ アクション 検収基準 よくある失敗ポイント
1 バックアップを取得 S3から最新のフル+増分をダウンロード 5分以内にダウンロード完了 オブジェクトストレージの認証情報が期限切れ
2 解凍検証 tar -tzfでファイル一覧を表示 ファイル数が完全で破損なし gzipパッケージが破損、検証なし
3 ファイル復旧 テスト環境のwebディレクトリに解凍 権限が正しく755/644 権限が失われ、サイトが真っ白
4 データベースインポート mysql < backup.sql テーブル数が本番と一致 文字コードエラーで文字化け
5 nginx設定 設定をコピーしてポート変更 ドメインでアクセス可能 リライトルールが消失
6 機能検証 問い合わせフォーム送信を一通り実行 メール受信、CRM登録 SMTPパスワードが設定に直書き

シナリオ例:あるチームが半年間復旧訓練を行わず、サーバーのハードディスクが壊れてから遠隔地のバックアップを取得したところ、解凍の途中でエラーが発生——なんと3ヶ月前のバックアップスクリプトのgzipパラメータが間違っており、その後2ヶ月分のバックアップはすべて破損ファイルでした。最終的にそれより前のクリーンなバックアップから復旧するしかなく、2ヶ月分のコンテンツを失いました。このような事故は四半期ごとに復旧訓練を一度行うだけで事前に発見できます。

バックアップ監視の設定方法はこちらサイト監視とアラート:バックアップタスクの失敗時は企業WeChatにアラート、バックアップファイルサイズの急減時はアラート、バックアップの経過時間が24時間を超えたらアラートを送信します。日常メンテナンスのチェックリストはこちら公式サイト保守で毎月やる6つのこと。

FAQ よくある質問

独立サイトのバックアップにはどのプラグインを使う?UpdraftPlusで十分?
UpdraftPlusの無料版で十分です。データベースとファイルを別々にバックアップでき、S3、Dropbox、Google Driveに直接同期できます。ただしプラグイン方式には2つの限界があります。1つはバックアップ時にWebプロセスを占有し、ピーク時にサイトが遅くなること。もう1つはバックアップファイルをWebディレクトリに置くと、スキャナにダウンロードされることです。より安定した方法は、サーバー側でmysqldumpとrsyncのスクリプトを使い、cronで定期実行し、完了後に自動で別拠点のオブジェクトストレージへアップロードしてローカルコピーを削除する方法です。2つは併用できます。プラグインは素早い復元に、スクリプトは主バックアップに使います。
バックアップの頻度はどのくらいが適切ですか。毎時で必要ですか。
不要です。B2Bの独立サイトは問い合わせやコンテンツの変化がそこまで頻繁ではありません。おすすめは、データベースは4時間ごとのbinlog増分と毎日のフルダンプ、ファイルは毎日のrsync増分と毎週のフルバックアップです。これなら通常の復元で失うデータは最大4時間分、最悪の場合でもbinlogで分単位まで追えます。毎時のバックアップが必要なのは、注文が毎分変わるECサイトだけです。頻度が高すぎるとストレージとIOを大量に消費し、いざ復元するときにどのバックアップを選ぶか分からなくなります。
3-2-1バックアップ原則は具体的にどう実践しますか。
3つのコピー。1つ目はサーバー内の別ディスクパーティションで、復元が最速です。2つ目はS3やAlibaba Cloud OSSなどの別拠点オブジェクトストレージで、アベイラビリティーゾーンをまたぎます。3つ目はGlacierなどのコールドアーカイブで、長期保存します。2つの媒体は、ローカルディスクとクラウドストレージの2種類です。1つの別拠点は、クラウドストレージがソースサイトと同じデータセンターや同じクラウド事業者にあってはならず、できればアベイラビリティーゾーンをまたぎます。3層すべてが必要で、どれも欠かせません。ランサムウェアの事件では、ローカルバックアップしかないサイトはほぼ全滅します。バックアップファイルも一緒に暗号化されるからです。
復元演習はどう行い、どのくらいの頻度で実施しますか。
四半期に1回です。手順は、別拠点のオブジェクトストレージから直近のフルバックアップを取得し、まっさらなテスト環境で復元して、一連の流れを最後まで通します。ファイルの解凍、データベースのインポート、nginxの設定、サイトへのアクセス、テスト問い合わせメールの送信、CRMへの受信確認までです。所要時間を計測し、実際の復元時間とデータ損失量を記録します。実際の事故では40%以上のバックアップ復元が失敗しており、原因はバックアップファイルの破損や鍵の紛失です。実際に一度復元してみないと、こうした問題は見つかりません。
バックアップファイルは暗号化すべきですか。鍵はどう保管しますか。
必ず暗号化してください。特にデータベースのバックアップは重要です。問い合わせや顧客情報、wp-config.php内のデータベースパスワードが含まれているからです。gpgまたはopensslでバックアップファイルを暗号化し、パスワードはパスワードマネージャーに保管してください。バックアップスクリプトには書かないでください。鍵を失うと、バックアップがないのと同じ結果になります。バックアップファイルを解凍できません。鍵は2つ用意することをおすすめします。1つは日常用、もう1つはアーカイブ用です。アーカイブ用の鍵は紙に印刷して引き出しに鍵をかけて保管してください。オブジェクトストレージ側でもサーバーサイド暗号化を有効にすれば、二重の安全対策になります。
バックアップスクリプトが失敗したとき、どうやって気づき、どう通知するのか。
バックアップタスク自体を監視する必要があります。アラートルールは3つです。1つ目、バックアップタスクの終了コードが0以外ならアラートを送信。2つ目、バックアップファイルのサイズが前日より30%以上急減したらアラート。データベース接続の失敗による空のバックアップの可能性があります。3つ目、最新バックアップの経過時間が24時間を超えたらアラート。スクリプトが実行されていない証拠です。通知先は企業向けチャットまたはメールにしてください。ローカルログだけに書いてはいけません。ローカルログはサーバーが落ちたときには見られません。監視体制の構築方法はサイト監視とアラートの記事をご覧ください。

最後に

バックアップで最も避けたいのは「プラグインを入れたからもう安心」という思い込みです。プラグインは毎日動き、バックアップファイルは毎日生成されますが、一度も復元したことがなければ、いざというときにバックアップの破損、パスワードの紛失、手順の不通に気づきます。バックアップ戦略の半分はどう保存するか、もう半分はどう復元するかです。後者は前者より10倍重要です。

実行は3ステップです。1つ目、3-2-1の原則に従って3層のバックアップを構築します。ローカル、遠隔地のオブジェクトストレージ、コールドアーカイブをそれぞれ1部ずつ。2つ目、頻度と保持ポリシーを決めます。データベースは4時間ごとの増分と毎日の全量、ファイルは毎日の増分、保持期間は30日から3年。3つ目、四半期ごとに復元訓練を実施し、テスト環境で復元手順を最後まで通し、実際のRTOとRPOを記録します。この3ステップを終えて初めて、バックアップがあると言えます。

覚えておきたい一言。復元したことのないバックアップは、バックアップがないのと同じです。バックアップスクリプトを1年動かすより、1回の完全な復元訓練のほうが価値があります。実際の事故では、40%のバックアップが肝心なときに開けません。

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

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

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

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