概要
「DB定義揃えたいからdumpでコピーしといて〜」と言われて、「???」ってなったので調べて実行してみた備忘録。
やりたいこと
DBを定義そっくりそのままコピーして、新しくDBを作成したい。
mysqldump
mysqldump -u #{ユーザー名} -p #{コピーしたいDB名} > ファイル名.sql
-u : ユーザー名の指定
-p : パスワード有りで接続する
オプション系は公式リファレンスに載ってるから、使うときは一回目を通すといいかも。
MySQL公式リファレンス
https://dev.mysql.com/doc/refman/5.6/ja/mysqldump.html
コピー元DBの作成
- 新しくDBを作成
- テーブルの作成
- データのインサート
mysql> create database test;
Query OK, 1 row affected (0.00 sec)
mysql> create table test
-> (
-> id int not null auto_increment,
-> name varchar(20) not null,
-> birthday varchar(6) not null,
-> primary key (id)
-> );
Query OK, 0 rows affected (0.03 sec)
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| test |
+----------------+
1 row in set (0.00 sec)
mysql> insert into test
-> values
-> (null,"山田","200012"),
-> (null,"丸亀","199304"),
-> (null,"民芸","198502");
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> select * from test;
+----+--------+----------+
| id | name | birthday |
+----+--------+----------+
| 1 | 山田 | 200012 |
| 2 | 丸亀 | 199304 |
| 3 | 民芸 | 198502 |
+----+--------+----------+
3 rows in set (0.00 sec)
早速やってみるぞ!
- cdコマンドでファイルを保存したいディレストリに移動
-
mysqldump -u #{ユーザー名} -p #{コピーしたいDB名} > ファイル名.sql
を実行 - 作成したsqlファイルを使ってDBを作成
今回はダウンロード配下に保存するので、cdコマンドでダウンロードに移動する。
$ cd Downloads/
mysqldumpするぞーーー!!
(ユーザー名 = root , パスワード = password の場合を想定して記載。)
$ mysqldump -u root -p test > dump.sql
Enter password:password
この後特に何も出なかったら成功!ファイルができたかどうか確認しよう!
$ ls
dump.sql
いぇーーーーい、できてる〜〜〜!
作成したファイルを使って新しいDBを作る。これは何個か方法がある。(随時追記)
1:sql内でsourceコマンドを使う
mysql> source #{ファイルパス}/ファイル名.sql
#{ファイルパス}には、使いたいsqlファイルが置いてある場所までの絶対パスを書く。
mysql> create database dump;
Query OK, 1 row affected (0.00 sec)
mysql> use dump
Database changed
mysql> source /Users/saori/Downloads/dump.sql
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
…
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| test |
+----------------+
1 row in set (0.00 sec)
mysql> select * from test;
+----+--------+----------+
| id | name | birthday |
+----+--------+----------+
| 1 | 山田 | 200012 |
| 2 | 丸亀 | 199304 |
| 3 | 民芸 | 198502 |
+----+--------+----------+
3 rows in set (0.00 sec)
テーブルが同じ状態の新しいDBができてる…!!
本当に同じなの…?
show create database
show create table
show create view
上記のコマンドでどうやってテーブルが作られたかも確認できる!!
まとめ
mysqldump -u #{ユーザー名} -p #{コピーしたいDB名} > ファイル名.sql
やってみたら、意外と親切に指示を出してもらっていたことに気がついた。頭の中の「???」もスッキリしたから良かった。バックアップとかファイルで管理できるから、そういう用途で使うのかなと思った。