2022-02-27 投稿

DockerのMySQLコンテナにダンプファイルを流し込む

Docker上で動いているMySQLのコンテナにDumpfileを流し込みデータをコピーする方法です。

DockerにMySQLのデータを入れたい

移行元DBからSQLダンプファイルをエクスポートする

mysqldumpする

移行(コピー)元のMySQLに接続できるサーバーなどでmysqldumpコマンドを実行しダンプを生成します。

1mysqldump -u root -h DB_HOSTNAME.com -p database_name > dumpfile.sql
2rootユーザのパスワードを入力

ローカルに転送

1scp -i ~/.ssh/id_rsa [email protected]:~/dumpfile.sql dumpfile.sql
2rootユーザのパスワードを入力

ダンプしたデータをMySQLコンテナに入れる

コンテナにコピー&インポート

Dockerコンテナの任意の場所(以下の例では/home)にダンプファイルを転送します。

1docker cp dumpfile.sql mysql_containername:/home

コンテナにログインし、ダンプファイルを流し込みます。

1docker exec -it mysql_container sh
2
3# コンテナの/homeで
4mysql -u root -p database_name < dumpfile.sql

ローカルから直接ダンプファイルをインポート

または、コンテナにコピーして流す代わりに以下のやりかたでもできます。

1docker exec -t mysql_container mysql -u root -p database_name < dumpfile.sql

ただし、筆者の実践上はデータベースのレコードが膨大だと処理が停止することがありました。