DockerでMySQLを立ち上げて運用していましたが、別のサーバーへデータ移動をしたくなったのでダンプを取ることにしました。
少しコマンドが特殊になるかと思いましたが、そんなことなく簡単に行えました。
docker-composeの設定
一部省略などしていますが、下記のような設定でDockerにMySQLサーバーを作成しました。
注意するべき点は、ポートを 3306 から 3310 へ変更していることです。
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
問題なくインポートが完了したら、データを一応確認して作業完了です。
お疲れ様でした。
コメント