WordPress Backup : Rsyncとmysqldump

みなさんはWordpressのバックアップはどんなふうにしてますか。
私はUpdraftをつかっていたのですが、無料版を使っていたこともあり
・時間指定ができない
多分夜中3時頃にバックアップされるように工夫はしたけどランダム。
・クラウドストレージはつかっていない。
とりあえずローカルDiskに取得したものを、外付けHDDにバックアップ。

という感じでした。
毎回全量のバックアップを行うので、バックアップのタイミングでCPU使用率やDisk IO wait が上がりパフォーマンスに問題が出ていました。

WordPressは大きく以下で構成されているので、うまくやれば負荷が少なくバックアップできます。
・Wordpressインストール時にフォルダに展開するファイル群:wp-config.phpとか
・mysql上に展開されるデータ

↓ここを参考にやってみました。

http://73spica.tech/blog/wordpress-backup-procedure/

バックアップの目的:
・サーバー上のデータが壊れる/サーバーそのものがこわれてデータが吹っ飛ぶ
という時のためのバックアップ
・1世代しかバックアップしない
・日次でバックアップを取得

  1. Rsyncでインストール時にフォルダに展開するファイル群を更新差分バックアップ
    オプション:-avuで更新されたファイルだけをバックアップ先に送信します。
    オプション:–dleteでバックアップ元の削除を反映します。つまり完全同期。

    sudo -u hoge rsync -avu –delete /wordpress展開フォルダ /バックアップ先フォルダ
  2. mysqldumpを使ってデータベースのバックアップを取得
    mysqldump –add-drop-table -uhoge DB名|bzip2 -c > /バックアップ先/DB名.bak.sql.bz2

これだけでバックアップが取れます。cronなどに仕込めば定期的にバックアップが取得できます。
やってみるとわかると思うのですが、mysql上のデータはわずかです。
データ量のほとんどがWordpressの展開フォルダ内にある画像を代表とするファイルであることが分かります。
rsyncで差分データのみをバックアップしているので、日次バックアップの負荷が大幅に削減されます。

リストアの時にドメイン名とかIPとかDB名を変える場合は冒頭のリンク先にwp-cliを使ったやり方が書いてあるので試してください。

リストアする時は、
・rsyncで取得しておいたバックアップを元のディレクトリに戻すのと

bzip2 -d /バックアップ先/DB名.bak.sql.bz2
mysql -u root -p データベース名 < /バックアップ先/DB名.bak.sql

でOKです。私はこれで復活できました。
この方法にして以降、以下のように突出したCPU使用を抑える事ができました。

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