WebOS Goodies

WebOS の未来を模索する、ゲームプログラマあがりの Web 開発者のブログ。

WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。
Subscribe       

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

いずれも実行するとパスワードを尋ねてきますので、MySQLroot ユーザーのパスワードを入力してください。

ちなみに、-x オプションは mysqldump コマンドの実行時にすべてのデータベースをロックします。それによってデータベース間の整合性のとれた完全なバックアップが実現できますが、各データベースが独立している場合はロック期間が無意味に長くなってしまいます。一般的な Web アプリケーションはそれぞれが単一のデータベースを使用するだけなので、その場合は -l オプションが使用できます。

リストア

バックアップしたデータの復元は、単純に mysql コマンドに流し込むだけです。具体的には、以下のようにします。

mysql -u root -p < /backup.sql

バックアップ時と同様にパスワードを尋ねてきますので、MySQLroot ユーザーのパスワードを入力してください。また、特定のデータベースのバックアップで -B(--databases) オプションを指定しなかった場合は、mysql コマンドでもデータベースを指定する必要があるので注意してください。

以上です。意外と簡単ですね。これらのやり方はサーバー移行時だけではなく、日々のバックアップにも活用できますので、覚えておいて損はないですよ!(^^)

関連記事

この記事にコメントする

Recommendations
Books
「Closure Library」の入門書です。
詳しくはこちらの記事をどうぞ!
Categories
Recent Articles