MySQLのデータベースをmysqldumpでバックアップ/復元する方法

投稿者 : OSCA

[PR] "東野・岡村の旅猿"で登場したロケ地を紹介するファンサイト「あの場所へ行こう!」はこちら。

 本稿では MySQL のデータベースを論理バックアップ/復元する方法について説明します。MySQL データベースのバックアップ/復元には、mysqldump コマンドを利用します。 mysqldump コマンドは、MySQL をインストールすれば含まれています。

バックアップ

ここでは2通りのバックアップ方法を説明します。

  1. 特定のデータベースのみバックアップする方法
  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. 特定のデータベースのみ復元する方法
  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

おわりに

本稿では MySQL のデータベースをバックアップ/復元する方法について説明しました。

MySQL 入門へ戻る

更新履歴

  • 2015年04月28日 – 初稿を執筆しました。
  • 2015年06月24日 – –single-transaction オプションについて追記しました。

MySQLのトップへ戻る

著者 : OSCA

OSCA

Java, PHP 系のWEBエンジニア。 WEBエンジニア向けコミュニティ「WEBエンジニア勉強会」を主催。 個人として何か一つでも世の中の多くの人に使ってもらえるものを作ろうと日々奮闘中。
@engineer_osca