WP-DBManager + MAMPでサイトのフルバックアップをとる方法
2014/1/23追記
最近は、サイトのファイル(wp-content直下)までバックアップしてくれるソフトとして、BackWPupというプラグインがあるらしい。しかも、バックアップファイルをDropBoxなど別のファイルサーバにも送ってくれるというスグレモノ。
BackWPUpは動かない率かなり高いです。なので、UpdraftPlus Backup/Restoreをおすすめします。
これは最初のセットアップさえ頑張ればかなり使いやすいです。
wp-content以下も保存してくれるし、DropBoxやGoogle Drive等にも自動保存できます。
詳細は「Wordpressの便利なバックアップ/リストアプラグイン - UpdraftPlus」をご覧下さい。
サイトにwpの機能を使って写真などを頻繁にアップロードする人は、こういったプラグインの使用をおすすめします。
サイトのフルバックアップはなかなか頭の痛い問題。
昔はhtmlだけだったから、単に全てのファイルをとってくれば済む話だったけれど、wordpressにしてから当然データベースのバックアップもとらないといけないわけで。
勿論、wordpressには、そのデータベースのバックアップをやってくれるプラグインがいくつかあります。
WP-DBManagerはデータベースファイルをメールで送ったりもしてくれるので、なかなか使い勝手が良いのだけど、ではこれをどうやって復元するの? と思ったときに、はたと困ってしまった。
ネットで検索すると、どこでも「新しいWPをインストールして…」という一文に突き当たります。これが嬉しくない。
理由は、山ほど入れているプラグインをまたダウンロードしてくるのが面倒臭い、というのもあるけど、もっと切実なのは、いつでも一番最新のWPやプラグインを使っているとは限らないからです。
まあ、wp本体はマイナーチェンジくらいでテーブルの構造が変わったりはしない、と信じたいけれど、サードパーティのプラグインあたりはバージョンが新しくなった時に新しくフィールドを足したり、といったことがあるかも知れない。
そうなると、いざサイトのファイルがぶっ壊れたときに、ぶっ壊れる直前のWP及びプラグインの、まったく同じバージョンのセットを作るのは大変だ、というのは容易に想像がつきます。
なので、できれば、定期的にWPフォルダごとバックアップして、一方でデータベースもWP-DBManagerで定期的にバックアップして、いざ事が起こったら、
1)データベースを完全消去
2)バックアップしたWPフォルダをコピー
3)WP-DBManagerのバックアップファイルを食わせて完全復帰!
という形にしたいわけです。
これができれば、現在使っているサーバが重くなったので、サーバを引っ越したい、というときにも簡単です。
で、こんな実験を今稼働しているサイトでやるのは危険すぎるので、とりあえずローカルでやってみよう、とMAMP環境の中でやってみたまとめ。
私がMacを使っているので、MacOSXを仮定していますが、基本的にはWindows + XMAMPでも同じはずです。
※ターミナルを使ってコマンド入力しますので、UNIXコマンドに慣れていない方にはちょっと敷居が高い方法かも。
MAMPのインストール
…は、よそさまのサイトでも沢山説明されているのでスキップ。
インストールができたら、/Applications/MAMP/htdocsの下に、サーバーからコピーしてきたwordpressフォルダを置きます。(私の場合このフォルダ名がwpとなっています)
MAMPのインストールの説明では、このあとwordpressをインストールして、wordpressからデータベースを作成する方法が書かれていることが多いですが、ここではデータベースへの接続は別の方法でやるので、その部分はスキップして下さい。
ユーザとデータベース作成
MAMPをインストールすると、デフォルトでmysqlにrootユーザが追加されます。でも、サーバー上でrootユーザで運営することなんてあるわけがないので、サーバー上で使っているデータベースのユーザ名とパスワードで新ユーザを作成します。
まずは、MAMPを起動しておいて、データベースにrootでログイン。
全てコマンドラインでやりますので、ターミナルを使います。
(ターミナルはアプリケーション/ユーティリティの中にあります。これをダブルクリックして起動します。)
ちなみに、mysqlコマンドは、MAMPの場合、/Applications/MAMP/Library/bin/mysql にあります。
MAMPのデフォルトrootパスワードはrootです。
以下、$記号はターミナル(デフォルトではbash)のプロンプト記号、mysql>はmysqlを起動した後のプロンプト記号です。
shellに詳しくない方は、行の最後でリターンキーを押すのを忘れずに。
$ /Applications/MAMP/Library/bin/mysql -u root -p
このあと、パスワードをきかれるので、rootと入れてリターン。
それから、以下のコマンドを打つ。
mysql> CREATE DATABASE データベース名; mysql> GRANT ALL ON データベース名.* to ユーザ名@localhost; mysql> FLUSH PRIVILEGES; mysql> SET PASSWORD FOR ユーザ名@localhost=password('パスワード');
文末の;も忘れずに打って下さい。
ここで必要な情報は全て、コピーしたwpフォルダの中の、wp-config.phpに書いてあります。
define('DB_NAME', 'test1'); // データベース名 define('DB_USER', 'test1'); // ユーザー名 define('DB_PASSWORD', '12345678'); // パスワード
こんな感じ。
ところで、CREATE DATABASEで失敗することがあります。つまり、既にその名前のデータベースが存在している場合です。
その際は、作成するデータベースの名前を変えるか、必要なければ古いデータベースを以下のコマンドで消します。
ここでは、test1という名前のデータベースを、DROP DATABASEコマンドで削除します。
mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | test1 | | test2 | | test3 | | mysql | | performance_schema | +--------------------+ 6 rows in set (0.03 sec) mysql> DROP DATABASE test1; Query OK, 35 rows affected (6.11 sec) mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | test2 | | test3 | | mysql | | performance_schema | +--------------------+ 5 rows in set (0.03 sec)
こんな感じ。
テーブルが作れたら、一度mysqlを抜けます。
mysql> quit Bye
ここまでできたら、一気にDBにバックアップを流し込みます。WP-DBManagerでバックアップしたファイルを、仮にここではバックアップ.sqlとします。
$ /Applications/MAMP/Library/bin/mysql -u ユーザ名 -p データベース名 < バックアップ.sql
パスワードは、さっき指定したユーザ名のパスワードを入れて下さい。
できたら、早速接続確認!
ユーザ名とデータベース名は適宜変更。
$ /Applications/MAMP/Library/bin/mysql -u ユーザ名 -p mysql> USE データベース名 Database changed mysql> SHOW TABLES; +-------------------------------+ | Tables_in_test1 | +-------------------------------+ | wp_automaticSEOlinks | | wp_automaticSEOlinksStats | | wp_blc_filters | | wp_blc_instances | | wp_blc_links | | wp_blc_synch | | wp_commentmeta | | wp_comments | | wp_icl_cms_nav_cache | | wp_icl_content_status | | wp_icl_core_status | | wp_icl_flags | | wp_icl_languages | | wp_icl_languages_translations | | wp_icl_locale_map | | wp_icl_message_status | | wp_icl_node | | wp_icl_reminders | | wp_icl_string_positions | | wp_icl_string_status | | wp_icl_string_translations | | wp_icl_strings | | wp_icl_translate | | wp_icl_translate_job | | wp_icl_translation_status | | wp_icl_translations | | wp_links | | wp_options | | wp_postmeta | | wp_posts | | wp_term_relationships | | wp_term_taxonomy | | wp_terms | | wp_usermeta | | wp_users | +-------------------------------+ 35 rows in set (0.00 sec)
こんな感じで見えれば成功ではないでしょうか。
既存のwordpressへの接続
さて、ここまで済んだら、ローカルにコピーしてきたwordpressフォルダの中のwp-config.phpに1カ所だけ変更を加えます。
これをやらないと、ログインしようとしてもサーバ上のファイルにとんでしまいます。
/* wp-config.phpに以下の行を追加 */ define('WP_SITEURL', 'http://localhost:8888/wp');
ちなみに、私のwordpressフォルダ名がwpなので、パスの最後がwpで終わっていますが、そこはご自身の環境に合わせて下さい。
これができたら、以下のアドレスにブラウザから接続します。
http://localhost:8888/wp/wp-admin/ (/wp/の部分は自分の環境に合わせる)
ユーザー名、パスワードとも、サーバで使っているもので接続できるはずです。
ログインしたら、設定→一般タブから、サイトアドレス(URL)を確認。
もとからここを弄っていない人は変更の必要はありませんが、ここをカスタマイズしている人は、ローカルの環境にあわせて書き直します。
これで、ローカルに完全なサイトのコピー作成完了!
ローカルでここまでやれれば、サイトのファイルがぶっとんだ時に、逆にローカルからサイトサーバへのコピーが簡単に作れます。
……といっても、使っているホスティングサーバがシェルによるログインをサポートしていて、内部でmysqlコマンドを使わせてくれることが前提条件ですが……(汗)。
この条件が満たされないサーバでは、もしかしたらmysqladminかなにかでmysqlの実行権限はもらえることもあるかもしれないので、それで頑張ってみて下さい。
ダメなら……やっぱりwordpressの新規インストールで頑張るしかないかな?(^^;)