MySQLで特定のデータベースをバックアップ(保存、Backup)したり、リストア(復元、Restore)したりすることがよくあります。
私の場合、よく使うけど、よく忘れる(^^)ので、やり方をメモしておきました。
データベースのダンプ、Dumpとは
ダンプとは、デバッグやデータ修復のために、ファイルやメモリの内容をディスクに出力することをいいます。
ダンプされたファイルにはダンプ作成時のメモリ上のデータが丸ごと書き出されます。
プログラムの開発などを行う場面では、データをダンプしてデバッガに読み込ませると、プログラムの問題点を発見できることがあります。
特にUNIX系OSにおける、メモリを強制的に中断させて内容を書き出すことを、コアダンプ(Core Dump)と呼びます。
メモリ違反を起こしたプログラムはコアダンプを出力して強制終了することがあります。
データベースにおいては、データベースの情報をファイルに書き出して保存することダンプと呼びます。
このダンプはデータベース移行のバックアップ(保存)の際に利用されます。
データベースのバックアップ、ダンプの作成方法
特定のデータベースのみのバックアップを行うには、以下のコマンドを使います。
ダンプファイル名は、よく dump.sql とかしますが任意の名前で大丈夫です。
1 |
# mysqldump -u ユーザ名 -p DB名 > ダンプファイル名 |
文字コードを指定して出力するには次のようにします。
1 |
# mysqldump --default-character-set=utf8 -u ユーザ名 -p DB名 > ダンプファイル名 |
全てのデータベースのバックアップするには次のようにします。
1 |
# mysqldump -u root -x --all-databases > ダンプファイル名 |
ちなみにダンプファイルはテキストファイルです。
リダイレクトしないと画面に出力されます。
ダンプからデータベースをリストアする方法
特定のデータベースのみリストア(復元)するには、以下のコマンドを使います。
1 |
# mysql -u ユーザ名 -p DB名 < ダンプファイル名 |
全てのデータベースをリストアするには次のようにします。
1 |
# mysql -u root -p < ダンプファイル名 |
まとめ
バックアップ、リストアはよく使います。
バックアップをエクスポート、リストアをインポートと呼ぶこともあるようです。
運用に入ると、Linuxでは cron.daily を使って毎日バックアップします。
最後まで読んでいただきありがとうござました。
コメント