sagara.inkITエンジニアのまとめノート

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

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

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

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

mysqldumpする

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

console(リモート)
mysqldump -u root -h DB_HOSTNAME.com -p database_name > dumpfile.sql
rootユーザのパスワードを入力

ローカルに転送

ダンプファイルがリモート環境(EC2など)にある場合は、転送します。

console(ローカル)
scp -i ~/.ssh/id_rsa ec2-user@123.45.67.89:~/dumpfile.sql dumpfile.sql
rootユーザのパスワードを入力

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

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

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

console(ローカル)
docker cp dumpfile.sql mysql_containername:/home

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

console(ローカル)
docker exec -it mysql_container sh

# コンテナの/homeで
mysql -u root -p database_name < dumpfile.sql

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

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

console(ローカル)
docker exec -t mysql_container mysql -u root -p database_name < dumpfile.sql

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