2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MySQLのテスト環境(+数百万件のテストデータ)を5分で作る

Last updated at Posted at 2020-10-30

TL;DR

ことで、簡単にローカルでMySQLのテストを行えるようになります。データの中身にはこだわらず、MySQLの機能自体をテストしてみたい、といった用途に利用できます。

コマンドをコピペしていけばだいたい5分くらいで環境を作れるはずです。

前提

  • Docker、Gitはインストール、設定済み
  • 本記事を作成する際には、Ubuntu20.04(WSL2)を使用しました。コマンドは適宜読み替えてください。

方法

1. 永続化させる設定とファイルを用意する


# 設定ファイルを入れるフォルダを準備
mkdir -p ~/mysql/config
# DBのデータをマウントするためのフォルダを準備
mkdir ~/mysql/mount_dir

次に、設定ファイルを作成しておきます。


vi ~/mysql/config/config-file.cnf

設定自体は好みで行います(空でもよい)が、ここでは例としてテーブル名を小文字にする制限を入れてみます。


[mysqld]
lower_case_table_names=1

2. MySQLのDockerコンテナを実行する

本記事では、MySQL 8.0.21 をインストールします。


# イメージ取得
docker pull mysql:8.0.21
# コンテナ実行
docker run --name mysql -p 3306:3306 \
-v $HOME/mysql/config:/etc/mysql/conf.d \
-v $HOME/mysql/mount_dir:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.21

docker run実行時にフォルダをマウントしておくことで、後でコンテナを更新したい場合などに、データや設定が削除されずに保持しておくことができます。

以下のコマンドでmysqlに接続できれば、無事MySQLのインストールは完了しています。

mysql -h127.0.0.1 -uroot -proot --port=3306

3. データを挿入する

MySQL公式サイトで紹介されているtest_dbレポジトリを利用することで、大量のテストデータを利用することができます。

cd ~/mysql
# GitHubのレポジトリをダウンロード
git clone git@github.com:datacharmer/test_db.git
# employees.sqlを取り込む
cd test_db
mysql -h127.0.0.1 -uroot -proot --port=3306 -t < employees.sql

以下がデータ件数です。employeesテーブルだけでも30万件以上、合計で数百万以上のデータがあり、MySQLの仕様を動かしながら確かめたい際に便利です。

+--------------+------------------+------------------------------------------+
| table_name   | expected_records | expected_crc                             |
+--------------+------------------+------------------------------------------+
| employees    |           300024 | 4d4aa689914d8fd41db7e45c2168e7dcb9697359 |
| departments  |                9 | 4b315afa0e35ca6649df897b958345bcb3d2b764 |
| dept_manager |               24 | 9687a7d6f93ca8847388a42a6d8d93982a841c6c |
| dept_emp     |           331603 | f16f6ce609d032d6b1b34748421e9195c5083da8 |
| titles       |           443308 | d12d5f746b88f07e69b9e36675b6067abb01b60e |
| salaries     |          2844047 | b5a1785c27d75e33a4173aaa22ccf41ebd7d4a9f |
+--------------+------------------+------------------------------------------+

公式ドキュメントに詳細な利用方法が記載されているので、詳しくはこちらをご参照ください。

備考:別の環境からデータを移行する

以下の記事にデータの移行方法を記載したので、必要あれば併せて参照してみてください。

[MySQL]mysqldumpを利用して別の環境にデータを移行する

4. (おまけ)後片付け

テスト後、MySQLが不要になった場合は、以下のコマンドで削除します。

# コンテナを削除
docker rm -f mysql
# データも設定も要らない場合、フォルダごと削除
sudo rm -rf ~/mysql
2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?