Wordpressのデータベースをバックアップする
こんにちわ。たかちんです。
さて、データベースのバックアップです。
Wordpressは、通常、MySQLを使ってますから、データベースのバックアップは、単純にMySQLのバックアップということになります。
では、早速、簡単に解説してみます。
データベースを丸ごとバックアップ
MySQLのバックアップには、バイナリダンプ(mysqlhotcopy)とSQLダンプ(musqldump)があります。
一般的によく利用されるものは、後者です。
前者のバイナリダンプでは、TABLE LOCKなどの一時的なMySQLの停止処置が必要で、初級者には、少し面倒です。また、mysqlhotcopyを実行するホストでmysqlが動作している必要があります。
後者は、厳密には、同じような処置が必要ですが、一般的には、MySQLを意識的に止めることはありません。すべては、musqldumpの中で実施します。
ここでは、後者を利用してバックアップを作成してみましょう。
$ mysqldump -hzzzz -uxxxx -pyyyy nnnn > ffff |
※XREAの場合は、localhostなので、-hzzzz は省略可です。
xxxx:mysqlのユーザ名
yyyy:mysqlのパスワード
nnnn:mysqlのデータベース名
ffff:バックアップしたいファイル名(カレントディレクトリにない場合は、フルパスで指定します。)
以下は、例です。
mysqlが動作しているホスト:100.100.100.100 IPアドレスでもホスト名でも可。
mysqlのユーザ名:hoge
mysqlのユーザパスワード:passwordhoge
mysqlのデータベース名:hogedb
mysqlのバックアップファイル名:hoge.sql
$ mysqldump -h100.100.100.100 -uhoge -ppasswordhoge hogedb > hoge.sql |
また、合わせてgzipで圧縮したいなら、
$ mysqldump -h100.100.100.100 -uhoge -ppasswordhoge hogedb | gzip > hoge.sql.gz |
とすれば、gzipで圧縮してくれます。
テーブルごとにバックアップ
先のデータベース丸ごとバックアップと同様に、各テーブルごとにバックアップを作成することもできます。
レンタルサーバーでは、データベース数が限られている場合も多く、1つのデータベースに複数のサイトテーブルを作成している場合もあると思います。
その場合は、テーブルごとにバックアップすればOKですね。
$ mysqldump -hzzzz -uxxxx -pyyyy nnnn t1 t2 .... > ffff |
簡単ですね。

テーブル名がわからないときは、mysqlで出力できます。
$ mysql -hzzzz -uxxxx -pyyyy -Dnnnn Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 6268702 Server version: 5.1.22-rc Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> show tables like 'wp_%'; +-----------------------+ | Tables_in_b3d | +-----------------------+ | wp_commentmeta | | wp_comments | | wp_links | | wp_options | | wp_postmeta | | wp_posts | | wp_term_relationships | | wp_term_taxonomy | | wp_terms | | wp_usermeta | | wp_users | +-----------------------+ 11 rows in set (0.00 sec) mysql> |
xxxx:mysqlのユーザ名
yyyy:mysqlのパスワード
nnnn:mysqlのデータベース名
とこんな感じで出力できます。これを単純にバックアップしたいテーブル名を追加しれば良いだけですね。

バックアップした状態に戻す
一般にバックアップしたときの状態に、データベースを戻すことをリストアといいます。
ここでは、単純に先に記述したようなバックアップファイルから、リストアする方法を記述します。
$ mysql -hzzzz -uxxxx -pyyyy -Dnnnn < ffff |
※XREAの場合は、localhostなので、-hzzzz は省略可です。
xxxx:mysqlのユーザ名
yyyy:mysqlのパスワード
nnnn:mysqlのデータベース名
ffff:バックアップしたファイル名(カレントディレクトリにない場合は、フルパスで指定します。)
以下は、例です。
mysqlが動作しているホスト:100.100.100.100 IPアドレスでもホスト名でも可。
mysqlのユーザ名:hoge
mysqlのユーザパスワード:passwordhoge
mysqlのデータベース名:hogedb
mysqlのバックアップファイル名:hoge.sql
$ mysql -h100.100.100.100 -uhoge -ppasswordhoge -Dhogedb < hoge.sql |
また、合わせてgunzipで解凍したいなら、
$ gunzip < hoge.sql.gz | mysql -h100.100.100.100 -uhoge -ppasswordhoge -Dhogedb |
とすれば、gunzipで解凍した上で、リストラしてくれます。
Wordpressのデータベースは、基本的にテーブル名の先頭にwp_が付きますから、もし、テーブル名がまったくわからないようなら、wp_の付いたテーブルを探してみてください。