■ エクスポート
* mysqldumpを使用する
構文
全てのDBをエクスポートする(DB「information_schema」「mysql」「performance_schema」「sys」まで作成する)mysqldump -u【User Name】 -p【Passsword】 -r 【Export File】 --single-transaction --all-databases複数のDBをエクスポートする
mysqldump -u【User Name】 -p【Passsword】 -r 【Export File】 --single-transaction --databases【DB Name1】 【DB Name2】 ...特定のDBをエクスポートする
mysqldump -u【User Name】 -p【Passsword】 -r 【Export File】 --single-transaction 【DB Name】テーブル定義部分とデータ部分を分けてエクスポート
https://www.saintsouth.net/blog/how-to-speedup-export-and-import-for-mysql/
# テーブル定義のみダンプ mysqldump -u【User Name】 -p【Passsword】 -r 【Export File】 --no-data 【DB Name】 # データのみダンプ mysqldump -u【User Name】 -p【Passsword】 -r 【Export File】 --no-create-info 【DB Name】
例
mysqldump -uroot -ppassword -r backup.sql --single-transaction sampledb mysqldump -uroot -ppassword --single-transaction --routines --events --hex-blob sampledb > backup.sql【出力結果】backup.sql (一部抜粋)
-- -- Table structure for table `sample_table` -- DROP TABLE IF EXISTS `sample_table`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `sample_table` ( `column_1` int(11) NOT NULL AUTO_INCREMENT, `column_2` varchar(255) DEFAULT NULL, `column_3` int(11) DEFAULT NULL, `column_4` varchar(255) DEFAULT NULL, `column_5` date DEFAULT NULL, `column_6` datetime NOT NULL, `column_7` datetime NOT NULL, PRIMARY KEY (`column_1`), KEY `index_sample_table_on_column_2_and_column_3` (`column_2`,`column_3`), KEY `index_sample_table_on_column_4` (`column_4`), KEY `index_sample_table_on_column_7` (`column_7`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `sample_table` -- LOCK TABLES `sample_table` WRITE; /*!40000 ALTER TABLE `sample_table` DISABLE KEYS */; INSERT INTO `sample_table` VALUES (1,'MIKE',1,'SAM','2018-03-08','2018-03-08 22:05:45','2018-03-08 22:05:47'),(2,'Kevin',3,'Ken','2018-03-08','2018-03-08 22:06:19','2018-03-08 22:06:21'); /*!40000 ALTER TABLE `sample_table` ENABLE KEYS */; UNLOCK TABLES;
使用上の注意
★重要★* 「ストアドプロシージャ」「ストアドファンクション」「イベント」は、 デフォルトで出力しない場合があるので、ダンプしたい場合は、 オプション「--routines」「--events」を明示的に付加する # 新しいバージョンだと、デフォルトできるらしいが、、、https://dev.mysql.com/doc/refman/5.6/ja/mysqldump-stored-programs.html
余談
出力されるファイルは、テキストエディタで参照することができる
mysqldumpの主なオプション
https://dev.mysql.com/doc/refman/5.6/ja/mysqldump.html`# | `オプション | 説明 |
01 | --databases | データベース全体のバックアップ |
02 | --single-transaction | テーブルをロックしないでバックアップ |
03 | --lock-all-tables | データベースの全てのテーブルをロックしてバックアップ |
04 | --routines | プロシージャや関数がある場合に付ける |
05 | --hex-blob (※) | バイナリ型のデータをエスケープ処理を行わずに実際に格納された値の16進表記でダンプ |
06 | --disable-keys | 全レコードのインポートが完了するまでインデックスを作らないようにする |
07 | --no-data(-d) | CREATE TABLE 文のみを出力 |
08 | --no-create-info(-t) | データのみ。--no-data とは逆で CREATE TABLE 文を出力せず |
09 | --routines(-R) | ストアドプロシージャおよびストアドファンクションを出力 |
10 | --events | イベントスケジューラのイベントを出力 |
11 | --triggers | テーブルのトリガを出力 |
12 | --skip-triggers | テーブルのトリガを出力しない |
※ 補足:--hex-blobの使いどころ
* mysqldump は、バックアップとしてテキスト形式で出力しているが、 テキストで扱えない値は、エスケープ処理をして出力する => 場合によっては、エスケープ処理に失敗する可能性があり バイナリデータが破壊されてしまう => --hex-blobで指定すると、16進表記でダンプするため、 バイナリデータの破壊を防ぐことができる
参考文献
http://www.risewill.co.jp/blog/archives/1111
http://qiita.com/ryounagaoka/items/7be0479a36c97618907f
http://www.risewill.co.jp/blog/archives/195
https://yakst.com/ja/posts/1355
http://oinume.hatenablog.com/entry/wp/292
http://www.risewill.co.jp/blog/archives/1111
http://qiita.com/ryounagaoka/items/7be0479a36c97618907f
http://www.risewill.co.jp/blog/archives/195
https://yakst.com/ja/posts/1355
http://oinume.hatenablog.com/entry/wp/292
■ インポート
構文
mysql -u【User Name】 -p【Passsword】【DB Name】 < 【Import File】
例
mysql -uroot -ppassword sampleNewDb < backup.txt
注意
* ユーザは、 root もしくは、それに準ずるユーザで行うこと