TL;DR
- MySQLのDockerコンテナを立てる
- MySQL公式から数百万件のテストデータをインポートする(https://dev.mysql.com/doc/employee/en/employees-installation.html)
ことで、簡単にローカルで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