現役バックアップエンジニアが教えるWordPressのバックアップ設計

ITノウハウ
  • WordPressを始めたけど、どのようにバックアップを取ればよいかわからない
  • BackWPupプラグインをとりあえずインストールしてみた・・・
  • いろいろなサイトでオススメされた通りに設定したけど、このままで良いのか不安

WordPressのバックアップとしてBackWPupプラグインを紹介する記事は多いですが、なんとなく設定していませんか?

バックアップはそれぞれのサイト運営に合わせた設計が重要となります。しかし、”バックアップ設計”を解説したサイトというのは非常に少ないです。きちんと”バックアップ設計”をしておかないと、本当にバックアップデータが必要になった際に役に立たない可能性があります。

この記事では、国内大手サーバーベンダーで8年間勤務し、現在はバックアップソフトウェアベンダーでエンジニアをしている私が、それぞれのサイト運営に合わせたバックアップ設計方法について解説します。

WordPressにおけるバックアップとは?

データの紛失や損失、破損などの障害が発生した際に、元の状態に戻せるようにデータのコピーを保管しておくことをバックアップと呼びます。WordPressのブログ運営においてもバックアップは非常に重要です。

バックアップが必要な理由

バックアップが必要となるのは、データの紛失や損失、障害が発生したときです。そのデータの紛失や損失、障害がが発生する要因となるのが、以下のパターンです。

  • 人為的ミス
    操作や設定のミス、メンテナンス不備により発生する障害の一つです。特に、ファイルの編集や削除といったファイル操作や編集中の記事を消してしまうといったWordPressの操作ミスにより発生することが多いです。
  • サイバー攻撃
    ウイルス攻撃やランサムウェア、不正侵入によるデータ改ざん、破壊等になります。データを改ざんまたは破壊をされると、サイトへのアクセスができなくなったり、不具合が発生することがあります。
  • ソフトウェア障害
    WordPressやプラグインのバグやアップデート、プラグインの競合等による不具合があります。
  • ハードウェア故障
    WordPressを利用されている方の多くはレンタルサーバを契約しているケースが多いため、原則レンタルサーバ提供事業者が対策をされている
  • 自然災害
    地震や火事、水害等の自然災害によって、サーバーやネットワーク機器などのハードウェア障害が発生することがあります。
    ハードウェア障害同様にレンタルサーバを利用している場合には

WordPressでバックアップが必要なデータ

WordPressには大きく分けてバックアップする必要があるデータが以下の2種類があります。

  • ファイル
    WordPressの構成ファイルやテーマ、プラグイン、画像などのメディアがファイルとして保存されています。
  • データベース
    投稿記事、コメント、各種設定、ログイン情報等がデータベースに保存されています。

この2つをバックアップしておくことで、もしすべてのデータが消失した場合でもWordPressのサイトを復旧することが可能になります。

WordPressのバックアップ手法

WordPressをバックアップするための手法として以下の3つがあります。

  • バックアッププラグインによるバックアップ
    BackWPupやUpdraftPlusといったWordPressのバックアップ用プラグインを使用した方法です。
    多くのサイトで設定方法が紹介されているため、初心者でも簡単にバックアップを取得することができますが、無償版では機能が制限されていることがあります。
  • レンタルサーバ自動バックアップ
    WordPressをレンタルサーバ上で運用している場合には、レンタルサーバが自動でバックアップを取得している可能性があります。自動的に取得されるため、詳細な設定を行うことはできません。他のバックアップ方法と併用して補助として活用することをオススメします。
  • 手動バックアップ
    WordPressのファイルとデータベースを手動でバックアップする方法です。スクリプト化することで自動化することも可能です。多少の知識が必要となりますが、最も自由度の高いバックアップ設計が可能になります。

バックアップ設計

バックアップの「3-2-1 ルール」

有名なバックアップ手法の一つに「3-2-1 ルール」と呼ばれるものがあります。データの破損や損失、ウィルス感染などの様々な障害に対して、効果的にデータを保護し復旧するためのルールです。

「3-2-1 ルール」ではそれぞれの数字が安全なバックアップの特徴を示しています。

  • 3つ以上のデータコピーを保持
  • 2つ以上の異なる媒体にコピーを保管
  • 1つは遠隔地に保存

3つ以上のデータコピーを保持

3つ以上のデータコピーとは、対象のデータ(プライマリ)に加えて2つ以上のバックアップを保持する必要があることを示しています。

もしデータコピーを一つしか保持していない場合、この一つのデータに障害が発生した場合には、データの復旧ができなくなります。しかし、複数のバックアップデータをコピーを保持している場合には、一つのデータに障害が発生した場合でも別のバックアップデータのコピーから、復旧が可能になります。

複数のバックアップデータをコピーを保持することで、すべてのバックアップデータを同時に失う確率が低くなることから、バックアップデータのコピーは保持する数が多ければ多いほど、データ損失のリスクを下げることができます。

ただし、バックアップデータの保持にはストレージが必要となるため、無制限にコピーを増やすわけではなく、最低でも3つ以上のデータコピーを保持することが必要とされています。

2つ以上の異なる媒体にコピーを保管

2つ以上の異なる媒体とは、バックアップデータは対象のデータ(プライマリ)と異なるメディアへの保管する必要があることを示しています。

3つ以上のデータコピーを保持していたとしても、同じストレージに保管していたのでは、そのストレージに障害が発生した場合に、すべてのコピーを失ってしまうため、意味がありません。

レンタルサーバの自動バックアップやプラグインでサーバ内にバックアップしている場合には、注意が必要です。バックアップデータはレンタルサーバー上のストレージに存在するため、災害等によりレンタルサーバに障害が発生した場合には、復旧ができなくなります。

一般的には外付けストレージ(外付けHDDやBD/DVD/CD等)やNAS、クラウドストレージ等の、サーバに障害が発生した場合でも、参照が可能なメディアへの保管が、必要とされています。

1つは遠隔地に保存

1つは遠隔地とは、バックアップデータのうち1つ以上は対象のデータ(プライマリ)とは異なる場所に保存する必要があることを示しています。

2つ以上の異なる媒体にデータを保管していたとしても、保管場所が同じであれば、自然災害等でデータを失った場合、復旧することができません。

レンタルサーバを利用していて、異なる媒体として、クラウドストレージや自宅のストレージ(PCやNAS)を利用する場合には、すでに遠隔地への保管ができているため、問題ありません。

レンタルサーバを利用せず、自宅にサーバを構築している場合には、データをクラウドや遠隔地に保管する必要があります。

バックアップ設計に最低限必要な5項目

ここからはバックアップ設計に必要となる5項目を解説します。順番に検討す進めることで、だれでも簡単に、バックアップ設計を進めることができます。

各項目の最後に設計例と解説を載せているので、こちらを参考にバックアップに必要な項目を決めてください。

なぜバックアップするのか?

始めに「なぜバックアップするのか?」を決めます。次以降の検討を進める上での基準となるため、もっとも重要な項目です。

なぜバックアップするのか?と言われると、バックアップが必要な理由でも説明した通り、データの紛失や損失、障害が発生したときに、データを復旧するため。という理由になると思いますが、ここで言っているのは、もう少し具体的な内容です。

言い換えると、どのような障害に備えるか?ということを決めます。人為的ミスに備えるのと、ハードウェア障害に備えるのでは、バックアップへのアプローチが異なるためです。

設計例と解説
なぜバックアップ?何をバックアップ?どこにバックアップ?いつバックアップ?どのくらい保管?
記事の編集に失敗した
テーマファイルの編集に失敗した
アップデート等のシステム変更による不具合
ウィルス/ランサムウェアに感染した
レンタルサーバに障害が発生した

初心者でもイメージしやすい障害を、5つピックアップしてみました。ここからは、この5つの障害をベースにバックアップ設計例を作成していきます。

もっと具体的な障害をイメージできる方は、その方が目的に沿ったバックアップを設計できます。

何をバックアップするか?

次に「何をバックアップするか?」を決めます。

WordPressには大きく分けるとバックアップ対象は、ファイルとデータベースの2種類があります。先ほど想定した障害ごとに、ファイルとデータベースのどちらが必要となるかを考えます。

設計例と解説
なぜバックアップ?何をバックアップ?どこにバックアップ?いつバックアップ?どのくらい保管?
記事の編集に失敗したデータベース
テーマファイルの編集に失敗したファイル
アップデート等のシステム変更による不具合ファイル
データベース
ウィルス/ランサムウェアに感染したファイル
データベース
レンタルサーバに障害が発生したファイル
データベース

記事の編集に失敗した場合に復旧するのは、投稿記事が保管されているデータベースが必要です。同様に、テーマファイルの編集に失敗した場合は、テーマファイルが必要になります。

アップデート等のシステム変更による不具合については、不具合の種類により必要となるものが異なります。WordPress本体やプラグインが原因であれば、ファイルが必要ですが、WordPressの設定内容に不具合が発生した場合には、データベースが必要となります。そのため、ファイルとデータベースを両方取得しておくと、どちらにも対応が可能になります。

ウィルス/ランサムウェアに感染した場合には、影響範囲がどこまでなのかを把握することが、非常に難しいです。そのため、ファイルとデータベースの両方を必要とします。

レンタルサーバに障害が発生した場合には、ファイルもデータベースもすべてが必要になります。

どこにバックアップするか

次は「どこにバックアップするか?」を決めていきます。こちらも言葉の通り、バックアップデータをどこに保管するかを決めることになります。

バックアップデータの保存先としてはいくつかの選択肢があります。

  • レンタルサーバ内
  • クラウドストレージ(Dropbox、Googleドライブ等)
  • 自己所有PC
  • 自宅NAS(NASを所有しているならオススメ

この中から、それぞれの障害が発生した際に、データが取り出せる場所にバックアップデータを保管します。

例えば、記事の編集に失敗した場合には、レンタルサーバからデータを取り出すことが可能です。

しかしレンタルサーバに障害が発生した場合には、レンタルサーバ上にバックアップデータがあるとアクセスすることができません。そのため、レンタルサーバとは別の場所に、バックアップデータを保管する必要があります。

これが、上で説明したバックアップの「3-2-1 ルール」の「2つ以上の異なる媒体にコピーを保管」が意味するものです。

設計例と解説
なぜバックアップ?何をバックアップ?どこにバックアップ?いつバックアップ?どのくらい保管?
記事の編集を失敗したデータベースレンタルサーバ
テーマファイルの編集を失敗したファイルレンタルサーバ
アップデート等のシステム変更による不具合ファイル
データベース
レンタルサーバ
ウィルス/ランサムウェアに感染したファイル
データベース
クラウドストレージ(Dropbox)
レンタルサーバに障害が発生したファイル
データベース
クラウドストレージ(Dropbox)

上3つに関しては、ファイルやデータベースの部分的な障害となるため、バックアップデータがレンタルサーバ上にあれば復旧可能です。

下2つに関しては、障害範囲がレンタルサーバ全体となるため、レンタルサーバ以外の場所を指定します。今回はクラウドストレージのDropboxを選択します。

いつバックアップするか?

次は「いつバックアップするか?」を決めます。バックアップを実行する頻度とタイミングです。

バックアップ頻度は、高ければ高いほど障害発生時の出戻りを少なくすることができます。例えば毎日バックアップを取得している場合には、障害が発生しても1日前に戻ることができます。

しかし、1か月に1度しかバックアップを取得していない場合には、最大で1か月前まで戻ることになります。つまり1か月分の作業が無駄になってしまうのです。

極端な例だと、毎分バックアップを取得すれば、無駄になる作業量は最大で1分間分となりますが、バックアップを頻繁に取得するとそれだけバックアップ先のストレージを使用することになります。クラウドストレージを使用する場合には容量の増加に伴い、費用も掛かります。

そのため、バックアップ頻度はサイトの変更(記事更新やコメント)の量と比例させるのが原則です。

バックアップタイミングは基本的に、サーバへの負荷が低い時間帯に行います。一般的にはサイトへのアクセスが少ない深夜等の時間に設定しますが、サイトへの変更を深夜に行う場合には、その時間をさけたほうが、変更中の中途半端なバックアップとなる可能性を避けることができます。

設計例と解説
なぜバックアップ?何をバックアップ?どこにバックアップ?いつバックアップ?どのくらい保管?
記事の編集を失敗したデータベースレンタルサーバ毎日2:00
テーマファイルの編集を失敗したファイルレンタルサーバ毎日2:00
アップデート等のシステム変更による不具合ファイル
データベース
レンタルサーバ毎日2:00
ウィルス/ランサムウェアに感染したファイル
データベース
クラウドストレージ(Dropbox)毎日2:00
レンタルサーバに障害が発生したファイル
データベース
クラウドストレージ(Dropbox)毎日2:00

ブログを毎日更新していると仮定して、バックアップは毎日取得します。バックアップタイミングは深夜0:00頃まで作業すると仮定して、余裕を持った2:00とします。

ここでは、すべての想定障害にし対して、同じ頻度とタイミングに設定しておきます。(この後で一部変更します。)

どの位の期間バックアップデータを保持するか?

最後に「どの位の期間バックアップデータを保持するか?」を決めます。

バックアップデータの保持期間は、障害が発生したことにどのくらいの期間で気が付くことができるか?というのがポイントになります。

例えば、障害が発生したことに1か月後に気が付いた場合、バックアップデータの保持期限が1週間だと、最も古いバックアップデータは1週間前のものになるため、障害が発生した状態のものをバックアップしたものになるため、復旧することができません。

設計例と解説
なぜバックアップ?何をバックアップ?どこにバックアップ?いつバックアップ?どのくらい保管?
記事の編集を失敗したデータベースレンタルサーバ毎日2:002週間
テーマファイルの編集を失敗したファイルレンタルサーバ毎日2:002週間
アップデート等のシステム変更による不具合ファイル
データベース
レンタルサーバシステム変更前/後
(任意のタイミング)
1年間
ウィルス/ランサムウェアに感染したファイル
データベース
クラウドストレージ(Dropbox)毎月1日2:002年間
レンタルサーバに障害が発生したファイル
データベース
クラウドストレージ(Dropbox)毎日2:002週間

記事の編集やテーマファイルの編集による障害の場合には、比較的早いタイミングで異常が発生していることに気が付くことができると考えられるため、余裕をもって2週間とします。

アップデート等のシステム変更による不具合に関しては、頻繁に実施するものではないため、毎日バックアップを取得する必要はありません。そのため、バックアップ取得はシステム変更の前と後の、任意のタイミングで実施することとして、その代わりにバックアップデータの保管期間を長めの1年間に設定します。

ウィルス/ランサムウェアに感染した場合は、長期的な対策が必要となります。ウィルス/ランサムウェアには潜伏期間というものがあり、感染してから異常に気が付くまで長いと1年以上かかることがあります。そのため、バックアップデータの保持期限は2年間として、バックアップ取得タイミングを、毎月1回にします。

レンタルサーバの障害についても、比較的早い段階で障害に気が付きますが、余裕をもって2週間とします。

バックアップ方法

バックアップ設計に必要な5項目を決めたら、いよいよバックアップ方法の検討に移ります。

同一のバックアップを重複してバックアップする必要はないため、バックアップタイミングと保持期限が共通のものは、同時にバックアップを取得することにします。条件が共通のものをまとめたものが、実際に取得が必要となるバックアップの設定です。

あとは、バックアップ設定を実現可能な方法にて、バックアップの設定を行えば、それぞれのサイト運用に適したバックアップを実現することができます。

設計例と解説
なぜバックアップ?何をバックアップ?どこにバックアップ?いつバックアップ?どのくらい保管?
記事の編集を失敗した
テーマファイルの編集を失敗した
レンタルサーバに障害が発生した
ファイル
データベース
レンタルサーバ
クラウドストレージ(Dropbox)
毎日2:002週間
アップデート等のシステム変更による不具合ファイル
データベース
レンタルサーバシステム変更前/後
(任意のタイミング)
1年間
ウィルス/ランサムウェアに感染したファイル
データベース
クラウドストレージ(Dropbox)毎月1日2:002年間

記事の編集を失敗した、テーマファイルの編集を失敗した、レンタルサーバに障害が発生したの3つは、バックアップ取得タイミングが毎日2:00、保持期間が2週間で共通のため、一つにまとめます。

バックアップ先は、レンタルサーバとクラウドストレージで異なりますが、両方にバックアップすることで、条件を満たしつつ安全性を上げることができます。

バックアップ設計例

以上でバックアップ設計は完了となります。ここまでに、設計例として作成してきたバックアップ設定のまとめると、以下の3つとなります。

バックアップ設定1
  • バックアップ対象 : ファイル、データベース
  • バックアップ先  : レンタルサーバ、クラウドストレージ(Dropbox)
  • バックアップ方法 : スケジュール実行(毎日2:00)
  • データ保持期限  : 2週間
バックアップ設定2
  • バックアップ対象 : ファイル、データベース
  • バックアップ先  : レンタルサーバ
  • バックアップ方法 : 手動実行(システム変更前/後の任意のタイミング)
  • データ保持期限  : 1年間
バックアップ設定3
  • バックアップ対象 : ファイル、データベース
  • バックアップ先  : クラウドストレージ(Dropbox)
  • バックアップ方法 : スケジュール実行(毎月1日 2:00)
  • データ保持期限  : 2年間

具体的なバックアップ方法の決め方と設定方法については、今後記事を作成します。

コメント

タイトルとURLをコピーしました