ある日、Docker上で運用していたMySQLサーバーから、別のMySQLサーバーへデータ移動をする必要があったため、ダンプを取ることにしました。
その際に実施した作業内容を共有したいと思います。
docker-composeの設定
Docker上のMySQLサーバーは、下記のような設定で作成しました。(一部省略)
docker-compose.yml
version: '3'
services:
# MySQL
mysql:
image: mysql:5.7
container_name: dmysql
environment:
MYSQL_DATABASE: my_db
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_USER: db_user
MYSQL_PASSWORD: abcde
TZ: 'Asia/Tokyo'
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
volumes:
- /opt/…
restart: always
ports:
- 3310:3306
ダンプを取得する
ダンプ取得する際は、下記形式でコマンドを実行します。
コマンド
mysqldump -u [ユーザー] -p -h localhost -P [ポート番号] --protocol=tcp [バックアップするDB名] > backup.sql
従って、今回は下記コマンドをホスト側で実施します。
コマンド
mysqldump -u db_user -p -h localhost -P 3310 --protocol=tcp my_db > backup.sql
これでbackup.sqlが生成されれば成功です。
インポートする
インポートする際は、下記形式でコマンドを実行します。
コマンド
mysql -u root -p [インポート先DB名] < backup.sql
上記形式に当てはめたものが下記になります。
コマンド
mysql -u root -p my_new_db < backup.sql
問題なくインポートが完了したら、データを確認して作業完了です!。