さくらのVPSに構築したKUSANAGI環境WordPressのバックアップの体制を整えた記録。
ちなみにKUSANAGI環境じゃなくてもVPSなら何処でもできるはず。
もくじ
外部バックアップの重要性
ConoHa VPSのように自動バックアップが用意されていたとしてもサーバごとふっ飛ぶ可能性もあるので外部へのバックアップは必須です。
本番環境+バックアップの全データを飛ばしたファーストサーバ。事故は簡単に起こる。
ascii.jp
信頼性が高いとされるさくらでもデータ消失事例がある。
voices.ku-neko.com
MixHostもやらかしたらしい。全部消えなかっただけマシな事例。
unatia.net
なお、どこのサーバ会社も保証はしてくれないですよ。
それがたとえ月100万円を生み出すサイトだったとしても。
「ごめんね♪」で終了です。
WordPressの定番バックアップ方法は4種類
定番は「Mondo Rescue」「All-in-One WP Migration」「BackWPup」「UpdraftPlus」4種類。
「Mondo Rescue」はサーバのイメージバックアップでその他はWordPressプラグインでファイルバックアップ。
それぞれの特徴は下記のようになる。
UpdraftPlus | BackWPup | All-in-One WP Migration | Mondo Rescue | |
---|---|---|---|---|
形式 | WordPressプラグイン | Linuxソフトウエア | ||
バックアップ | 簡単 | 難しい | ||
リストア | 簡単 | 少し難しい | 簡単 | 難しい |
スケジュール | 詳細設定は有料 | 無料 | 有料 | 無料 |
外部バックアップ | 一部有料 | 一部有料 | 有料 | 無料 |
完全無欠のバックアップ方法はなく得手不得手がある。
一番高機能な「Mondo Rescue」
サーバまるごとのイメージバックアップをとるので、サーバが飛んでも他のサーバでリカバリするだけで全環境が復元される。
ただリカバリでよくコケる。
実際に時間を掛けてアレコレとテストしたがリカバリできない。
「KUSNAGI for さくらのVPSでWordPress構築」→「Mondo Rescueでイメージバックアップ」→「全く同じVPSにリストア」という、リカバリ条件としては最もハードルの低いリカバリでコケた。
簡単にバックアップが取れることも大切だがバックアップで最も重要なのはリカバリ。
いくら簡単にバックアップが取れてもリカバリ出来ないのならバックアップの意味はない。
リカバリに少し手間はかかってもよいので別の方法でバックアップを取るようにする。
All-in-One WP Migration
下記記事でもWordPressの移行に使ったプラグイン。
>>>複数のWordPressをKUSANAGI for さくらのVPSに移行する手順 まとめ
非常に使い勝手は良いがスケジュールと外部バックアップが有料版となる。
リストア容量も512MBに制限される(容量制限はごにょごにょすれば回避できるけど)
無料で構築したいので今回はパス。
BackWPup
バックアップは簡単に取れるがリストアが面倒。
FTPを使ったりDBのインポートが手動となる。
WordPressプラグインなのでリストアもWordPress管理画面から行いたい。
UpdraftPlus
バックアップ・リカバリ ともにWordPressの管理画面から行えるので楽。
一部機能が有料となっている。
- 詳細なバックアップ時刻設定
- 外部バックアップ(WebDAV)
ざっくりしたバックアップ時刻設定やFTPを使った外部バックアップは無料でできる。
この制限をwp-cronとcronコマンドを使って回避する。
UpdraftPlus +cron+WebDAV+TeraCLOUD で外部自動バックアップ
- UpdraftPlus:WordPressバックアップ用プラグイン
- cron:Linuxのコマンド定時実行スケジュール管理のためのコマンド 。Windowsでいうタスクスケジューラ。
- WebDAV:HTTPを使ったファイルのコピーや削除のためのプロトコル。自作DropBoxが作れる感じ。
- TeraCLOUD:WebDAVが使えるクラウドストレージ。無料で10GBが使用できるうえ最大14世代までスナップショットを取ってくれる。
なおTeraCLOUDは下記のキャンペーンコードを利用すると無料枠が10GBから15GBに増加する。
キャンペーンコード:H4THR
キャンペーンコードは新規登録後にマイページから入力すると反映される。
UpdraftPlusのインストールと設定
WordPress管理画面からUpdraftPlusをインストール→有効化。
WordPress管理画面→設定→UpdraftPlus Backups→設定タブ
今回の例では週1バックアップ。履歴は2つまでとして設定を行う。
変更を保存。
手動バックアップ
設定タブに移動し手動でバックアップを作成してみる。
次回のバックアップが先程設定タブで指定したスケジューで設定されている。
時間は手動バックアップを実行した時間となっていることがわかる。
(詳細の時間設定は有料オプション$70)
バックアップはサーバの負荷が小さい深夜に行いたいが、1回だけとはいえ深夜に手動バックアップするのは大変。
DB内に保存された設定データを直接修正する。
WP Crontrolで日時設定
UpdraftPlusのバックアップスケジュールはWordPressの疑似cronであるwp-cronで制御されている。
wp-cronの設定を「WP Crontrol」プラグインを使って書き換える。
ja.wordpress.org
WP Crontrolをインストール→有効化
ツール→cronイベント
「updraft_backup」と「updraft_backup_database」を希望の日時に修正する。
ここでは1時間早めてみる。
3:04から2:04に変更できている。
WebDAVでレプリケーション
UpdraftPlusで取ったバックアップは/wp-content/updraft/backup*に保存されている。
同サーバ内では障害が起こった時にバックアップも消失する危険があるので外部にコピーする。
さくらのVPSとTeraCLOUDを接続する
さくらのVPSに新たに作成したディレクトリとTeraCLOUDをWebDAVで接続する。
この2つは自動は同期される。
【参考】
さくらのVPSに無料の外部自動バックアップ機能を追加する方法 – Qiita
TeraCLOUDのWebDAV接続URLを確認する
TeraCLOUDアカウントがないのであれば新規作成。
ログインしマイページに移動。
teracloud.jp
なおマイページでキャンペーンコードを入力すると無料枠が恒久的に5GB追加される。
キャンペーンコード:H4THR
「WebDAV接続URL」を控えておく。
さくらのVPSにdavfs2インストールする
「davfs2」はWebDAVサーバーをディスクドライブとしてマウントできるようにするLinuxファイルシステムドライバー。
yum -y install davfs2
同期設定
同期用ディレクトリ作成。今回はドライブ直下に作成する。
mkdir /backup
WebDAVサーバーをマウントする
mount -t davfs [WebDAV接続URL]/backup
認証が必要なのでTeraCLOUDのユーザー名とパスワードで入力する。
Username:[TeraCLOUDユーザ名]
Password:[TeraCLOUDパスワード]
これで/backupに保存したファイルはTeraCLOUDに同期される。
またTeraCLOUDでは最大14世代までスナップショットを保存してくれる。
cronで同期用フォルダに定期的に移動する
定期的に/wp-content/updraft/backupから/backupにファイルを移動する。
また/backupの古いファイルを削除する。
cron設定ファイルの作成
/etc/cron.daily/webdav_backup.sh
#!/bin/bash
#バックアップイメージを移動
mv -n [WordPressへのパス]/wp-content/updraft/backup* /backup#古いバックアップイメージを削除(今回は15日前以前のファイルを削除)
find /backup -type f -mtime +15 -exec rm -f {} \;
cronの設定
crontab -e
毎朝5時3分にwebdav_backup.shを実行する。
まとめ
- 週1回 深夜2時ごろにupdraftでバックアップ。
- 毎朝5時3分に/backupに移動。
- /backupからTeraCLOUDに自動同期
このようなバックアップが自動で実行されるようになった。
週1回のバックアップとしているが、実際は7サイト可動しているのでUpdraftPlusで日替わりにバックアップを取っている。
1サイトしか無いのならUpdraftPlusで毎日バックアップすればいいと思う。
【関連記事】