4
4

More than 3 years have passed since last update.

【MySQL】DBをコピーする(mysqldump)

Posted at

概要

「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の作成

  1. 新しくDBを作成
  2. テーブルの作成
  3. データのインサート
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)

早速やってみるぞ!

  1. cdコマンドでファイルを保存したいディレストリに移動
  2. mysqldump -u #{ユーザー名} -p #{コピーしたいDB名} > ファイル名.sqlを実行
  3. 作成した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

やってみたら、意外と親切に指示を出してもらっていたことに気がついた。頭の中の「???」もスッキリしたから良かった。バックアップとかファイルで管理できるから、そういう用途で使うのかなと思った。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4