DockerのMySQLからダンプを取得する

Docker

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

問題なくインポートが完了したら、データを一応確認して作業完了です。

お疲れ様でした。

コメント

タイトルとURLをコピーしました