LoginSignup
1
0

More than 3 years have passed since last update.

MySQLのダンプファイルをDockerコンテナで復元する

Last updated at Posted at 2020-07-11

概要

コンテナを使うことでローカル環境を汚さず
使い終わったらコンテナごと削除されます。

ダンプファイルはMySQLが提供しているサンプルを使用しています。
Other MySQL Documentation - Example Databases
使用しているダンプファイル: world database

環境

  • Docker version 19.03
  • MySQL 5.7

MySQLのコンテナを実行する

# コンテナを実行する
$ docker container run --rm --name some-mysql -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7
27b05b9a3337d930941c24e6a4ae507d206619de879e7067ef3855f6bc9710b5

# コンテナが実行されていることを確認する
$ docker container ls --filter "name=some-mysql"
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                 NAMES
27b05b9a3337        mysql:5.7           "docker-entrypoint.s…"   51 seconds ago      Up 49 seconds       3306/tcp, 33060/tcp   some-mysql

ダンプファイルからデータを復元する

# ホストにあるダンプファイルからコンテナにあるMySQLにデータを流し込む
$ docker container exec -i some-mysql /bin/bash -c 'mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /file/to/path/world.sql

データが復元されているか確認する

# コンテナに接続
$ docker container exec -it some-mysql /bin/bash

# MySQLに接続
root@container_id /# mysql -uroot -p$MYSQL_ROOT_PASSWORD -Dworld

# データーベースの確認
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| world              |
+--------------------+
5 rows in set (0.00 sec)

# テーブルの確認
mysql> show tables;
+-----------------+
| Tables_in_world |
+-----------------+
| city            |
| country         |
| countrylanguage |
+-----------------+

# レコードの確認
mysql> select * from city;
+----+----------+-------------+----------+------------+
| ID | Name     | CountryCode | District | Population |
+----+----------+-------------+----------+------------+
|  1 | Kabul    | AFG         | Kabol    |    1780000 |
|  2 | Qandahar | AFG         | Qandahar |     237500 |
...
| 4078 | Nablus | PSE         | Nablus   |     100231 |
| 4079 | Rafah  | PSE         | Rafah    |      92020 |
+------+--------+-------------+----------+------------+

4079 rows in set (0.00 sec)

実行したコンテナを削除する

# コンテナを停止する
$ docker container stop some-mysql
some-mysql

# コンテナが削除されていることを確認する
$ docker container ls --filter "name=some-mysql"
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

参考

Docker Hub - MySQL Description

1
0
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
1
0