MySQLではデータベース全体をダンプ(バックアップ)することが一般的ですが、開発やテスト、移行作業では「特定のテーブルだけをバックアップしたい」というケースも少なくありません。
このポストでは、mysqldump
コマンドを使って特定のテーブルだけを安全かつ効率的にバックアップする方法を、実際のコマンド例を交えながらわかりやすく解説します。
コマンドのオプションや注意点も紹介しているので、MySQLの初心者から中級者まで役立つ内容となっています。
特定のテーブルをバックアップする
あまりやりたくない事ですが、プログラム(システム)の都合や仕様上でどうしてもデータベース(のデータ)を直接編集する場面というのがあると思います。
その場合に「いつでもデータを元に戻せる体制」をとる際、システムのDBデータを全部バックアップするのでは時間がかかってしまいがち。
ということで、今回は必要テーブルのみダンプする方法を紹介します。
なお、この作業はSQLではないので、phpMyAdmin上では実行できません。
WindowsならDOSプロンプト、UNIXではputtyなどのターミナルから接続した上での処理となります。
単一のテーブルのみをダンプする場合の記述
文法
$ mysqldump -u [ユーザー名] -p [データベース名] [テーブル名] > [ダンプファイル名.sql]
例として「shop_manage」データベースの「products」テーブルをダンプする例を記述すると、以下のようになります。
1 2 |
$ mysqldump -u username -p shop_manage products > shopmanage_dump.sql Enter password:******** ←データベースのパスワードを入力 |
↑ データベースのパスワードはコマンド発行のあとに入力する形です。
コマンド発行時、同時にデータベースパスワードを記述したいときは、オプション「-p」のあとに スペースをつけずに パスワードを書けば、Enter password でパスワードを別途入力する必要はありません。
ダンプ用のコマンドには、シングル、ダブルのクォーテーションマークもつけずに書きましょう。
複数テーブルをまとめてダンプする際の記述
単一の場合とほぼ同じで、単にテーブル名を続けて書くだけ。
やはりこちらもシングル、ダブルのクォーテーションマークはつけずに書きましょう。
文法
$ mysqldump -u [ユーザー名] -p [データベース名] [テーブル名1] [テーブル名2] [テーブル名3]… > [ダンプファイル名.sql]
例として「product_manage」データベースの「products」「sales」「customers」テーブルをダンプする例を記述すると、以下のようになります。
こちらはデータベースパスワードをオプション(-p)に続けて書いてみます。
1 |
$ mysqldump -u username -ppassword shop_manage products sales customers > shopmanage_dump.sql |
あっさりとバックアップファイルが出来上がるので、今日から怖いものなしですね。
全てのテーブルをバックアップする
ついでですので、データベース内の全てのテーブルをバックする方法も載せておきます。
文法
$ mysqldump -u [ユーザー名] -p [データベース名] > ダンプファイル名.sql
下記は一例です。
1 |
$ mysqldump -u username -ppassword shop_manage > shopmanage_dump.sql |
関連するかもしれないポスト

