本稿では MySQL のデータベースを論理バックアップ/復元する方法について説明します。MySQL データベースのバックアップ/復元には、mysqldump コマンドを利用します。 mysqldump コマンドは、MySQL をインストールすれば含まれています。
バックアップ
ここでは2通りのバックアップ方法を説明します。
- 特定のデータベースのみバックアップする方法
- 全てのデータベースをバックアップする方法
バックアップのコマンドを解説する前に知っておいて欲しい mysqldump コマンドのオプションがあります。 –single-transaction オプションです。 このオプションは InnoDB のトランザクションを利用してバックアップを取得します。 例えばバックアップの対象となるデータが膨大で、バックアップに1時間かかるとしましょう。 そうした場合でもトランザクションを利用してくれるので、バックアップを開始した時点のデータも(1時間後に)終了する間際のデータも全く整合性のとれたデータであることを保証してくれます。 ですので、 –single-transaction オプションは何も考えずにつけておくと良いと思います。
1.特定のデータベースのみバックアップする方法
MySQL の特定のデータベースのデータを dump バックアップするには、次のコマンドで行います。
$ mysqldump --single-transaction -u DBユーザ名 -p DB名 > 出力先ファイル名
例えば、DBユーザー root で wordpress という名前のデータベースを /tmp/mysqldump_wordpress.dump というファイル名でバックアップしたい場合は、次のようになります。 実行すると次のようにパスワードを聞かれる(パスワードを設定している場合)ので、パスワードを入力するとバックアップ完了です。
$ mysqldump --single-transaction -u root -p wordpress > /tmp/mysqldump_wordpress.dump
Enter password:
全てのデータベースをバックアップする方法
また、MySQL の全てのデータベースを dump バックアップするには、次のコマンドで行います。
$ mysqldump --single-transaction -u root -p -x --all-databases > 出力ファイル名
オプション -x は、全てのデータベースの全てのテーブルをロックするためのオプションです。 バックアップ中のデータの操作を禁止します。
例えば、DB ユーザー root で全てのデータベースを /tmp/mysqldump_all_database.dump というファイル名でバックアップしたい場合は、次のようになります。
$ mysqldump --single-transaction -u root -p -x --all-databases > /tmp/mysqldump_all_database.dump
復元
次に、上で説明したバックアップファイルを MySQL データベース上に復元する方法について説明します。 上記のバックアップと同様、2通りの復元方法について説明します。
- 特定のデータベースのみ復元する方法
- 全てのデータベースを復元する方法
1.特定のデータベースのみ復元する方法
特定のデータベースの dump ファイルを、特定のデータベースに復元する方法は次のコマンドでできます。 データの投入先となるデータベースは先に作成しておく必要があります。
$ mysql -u ユーザー名 -p データベース名 dumpファイル名
例としては次のような感じです。
$ mysql -u root -p wordpress /tmp/mysqldump_wordpress.dump
2.全てのデータベースを復元する方法
全てのデータベースの dump ファイルを、データベースに復元する方法は次のコマンドでできます。
$ mysql -u ユーザー名 -p dumpファイル名
例としては次のような感じです。
$ mysql -u root -p /tmp/mysqldump_all_database.dump
更新履歴
- 2015年04月28日 – 初稿を執筆しました。
- 2015年06月24日 – –single-transaction オプションについて追記しました。