[Ruby on Rails 4] Rails で mysqldump する場合は no-create-info オプションを付けると良い
migration file にテーブル作成情報が含まれるので、ダンプには不要では?と思い調べました。
Contents
調査
こちらで紹介されていました。
ありがとうございます。
Rails の場合、-t オプションを付けたほうが良いと思います。これは、「テーブル作成情報(CREATE TABLE ステートメント)を書き込まない」オプション。Rails の場合、テーブル作成情報はマイグレーションファイルに含まれるので、sql ダンプには不要です。
バックアップ
$ mysqldump -u ユーザー名 -p -t データベース名 テーブル1 テーブル2 ... > ダンプファイル名
リストア
$ mysql -u ユーザ名 -p データベース名 < ダンプファイル名
mysqldump のオプション
–no-create-info, -t
ダンプされた各テーブルを再作成する CREATE TABLE ステートメントを書き込みません。
実行例
オプションなしでダンプすると
% /usr/local/bin/mysqldump foo_production items --result-file=/Users/****/dump_items.sql --user=bar --host=127.0.0.1 --port=3306 --password
drop, create が含まれる。
DROP TABLE IF EXISTS `items`;
CREATE TABLE `items` (
:
LOCK TABLES `items` WRITE;
INSERT INTO `items` VALUES (
:
-t
オプション(--no-create-info
)を付けると、
% /usr/local/bin/mysqldump foo_production items --result-file=/Users/****/dump_items.sql --no-create-info --user=bar --host=127.0.0.1 --port=3306 --password
insert のみとなる。
LOCK TABLES `items` WRITE;
INSERT INTO `items` VALUES (
:
手順メモ
DB を作り直して、リストアする。
% bin/rake db:reset RAILS_ENV=production
% mysql -u bar -p foo_production < db/dump_items.sql