MySQL データベースのバックアップ・リストア
昨日のファイルのバックアップ・リストアに続いて、今日は MySQL データベースのバックアップ・リストアの方法をご紹介します。
MySQL ではいくつかのバックアップ方法が用意されており、それぞれに一長一短があります。大まかに言うとバイナリ形式のバックアップと、テキスト形式のバックアップに分けられます。バイナリ形式は高速にバックアップが取れますが、データ形式がプラットフォームに依存するので、同一マシン上でしかリストアできません。また、MySQL のメジャーバージョンが異なる場合などもリストアできないことがあります。それに対してテキスト形式は別プラットフォームの MySQL はもちろん、MySQL 以外のデータベースにもデータを移行できます。
ここでは、後者のテキスト形式のバックアップ方法をご紹介します。
※この方法ではユーザー情報が完全に再現されないことがわかりました。とりあえず、こちらの記事のようにしてユーザーを作り直せば復帰できるようです。
バックアップ
データベースのバックアップには mysqldump コマンドを利用します。すべてのデータベースのバックアップを "/backup.sql" に取るなら、以下のようにします。
mysqldump -u root --password -x --opt -A > /backup.sql
特定のデータベースのみをバックアップするなら以下のようにします。
mysqldump -u root --password -l --opt -B <データベース名> > /backup.sql
いずれも実行するとパスワードを尋ねてきますので、MySQL の root ユーザーのパスワードを入力してください。
ちなみに、-x オプションは mysqldump コマンドの実行時にすべてのデータベースをロックします。それによってデータベース間の整合性のとれた完全なバックアップが実現できますが、各データベースが独立している場合はロック期間が無意味に長くなってしまいます。一般的な Web アプリケーションはそれぞれが単一のデータベースを使用するだけなので、その場合は -l オプションが使用できます。
リストア
バックアップしたデータの復元は、単純に mysql コマンドに流し込むだけです。具体的には、以下のようにします。
mysql -u root -p < /backup.sql
バックアップ時と同様にパスワードを尋ねてきますので、MySQL の root ユーザーのパスワードを入力してください。また、特定のデータベースのバックアップで -B(--databases) オプションを指定しなかった場合は、mysql コマンドでもデータベースを指定する必要があるので注意してください。
以上です。意外と簡単ですね。これらのやり方はサーバー移行時だけではなく、日々のバックアップにも活用できますので、覚えておいて損はないですよ!(^^)
詳しくはこちらの記事をどうぞ!
この記事にコメントする