drop databaseをつけてダンプ

mysqldumpで、drop databaseを付けてデータベースをダンプするコマンドを解説する。

コマンド

コマンドは下記のとおりである。

mysqldump -u username -ppassword  --add-drop-database --all-databases > dumpfilename.sql

具体例

少し具体的に書こう。DB情報等が下記であったとする。

項目
DBユーザ名 pudding
DBパスワード qwerty123456
(ダンプファイル名) alldatabases.sql

このDB情報等を反映すると、下記のように書くことになる。 --add-drop-database がポイントだ。

mysqldump -u pudding -pqwerty123456 --add-drop-database --all-databases > alldatabases.sql

ダンプファイルの内容

上記コマンドを実行した際のダンプファイルの記述は以下の通り。抜粋である。

--
-- Current Database: `zipcode`
--

/*!40000 DROP DATABASE IF EXISTS `zipcode`*/;

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `zipcode` /*!40100 DEFAULT CHARACTER SET latin1 */;

USE `zipcode`;

ちなみに、 --add-drop-database を使わずに普通にダンプした場合は以下の通り。
違いは、

/*!40000 DROP DATABASE IF EXISTS `zipcode`*/;

が無いことである。

--
-- Current Database: `zipcode`
--

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `zipcode` /*!40100 DEFAULT CHARACTER SET latin1 */;

USE `zipcode`;

なお、SQLを知っている人は、

/*  */;

で囲まれた部分はコメント欄なのだから、実行されないではないか、と思うであろう。しかし、これは「拡張コメント」といい、MySQLのバージョンを判定して実行されるか否かを操作できるコマンドである。今回出力された

/*!40000 DROP DATABASE IF EXISTS `zipcode`*/;

は、ほとんどの環境では、drop databaseが実行される構文である。すごく古いMySQLのバージョンにも対応するための細かな仕様なのだ、とだけ理解いただきたい。

注意点

エクスポートする対象のデータベースが単体のデータベースの場合、そもそもmysqldumpの仕様として、出力されるSQLファイルにはdrop databaseはつかないようになっている。そのため、DB指定のmysqldumpの場合は、この --add-drop-database をつけてもつけなくても、出力されるSQLファイルは全く同じになる。

用途

用途としては、

  • 開発環境DBへ本番環境DBを丸ごと移行する
  • 壊れた本番環境へ、バックアップを戻す

というような用途が考えられるだろう。

database関連

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください