2016-10-12 11 views
3

大きなデータベースをmysqlコンテナにインポートしようとしています。私はホストディレクトリをmysqlコンテナのボリュームとしてマウントしました。したがって、データはホスト上で永続的です。インポートするSQLファイルは14 GB +です。 mysqlコンテナは、インポートの途中で応答しなくなります。私がdocker statsを実行すると、CPU %の使用が< 1になっていることがわかります。一度mysqlコンテナが利用可能なすべてのメモリを使用しました。私は10 GBまでドッカーのメモリを増やしてみました.Dockerにもっと多くのメモリを割り当てると、インポートからさらに多くのテーブルが作成されます。ホストから10GB以上は割り当てることができません。続き大きなデータベースをdocker mysqlコンテナにインポートできません

は私がコンテナにログインし、また/tmp

からSQLファイルをインポートするdocker exec -it docker_mysql_1 /bin/bashを使用していたドッキングウィンドウのバージョン1.12.1

を持ってDocker for macを使用しています私のdocker-compose.ymlファイル

mysql: 
    image: mysql:5.6 
    environment: 
     - MYSQL_ROOT_PASSWORD=12345678 
    volumes: 
     - ./mysql/lib:/var/lib/mysql 
     - ./mysql/conf.d:/etc/mysql/conf.d 
     - ./mysql/log:/var/log/mysql 
     - /tmp:/tmp 
    ports: 
     - "3306:3306" 

です私は/docker-entrypoint-initdb.dにSQLファイルをマウントして、mysql repoが推奨する方法を試しました。しかし、これはmysql initも停止させます。

UPDATE 1

$ docker info 
Containers: 1 
Running: 0 
Paused: 0 
Stopped: 1 
Images: 2 
Server Version: 1.12.1 
Storage Driver: aufs 
Root Dir: /var/lib/docker/aufs 
Backing Filesystem: extfs 
Dirs: 18 
Dirperm1 Supported: true 
Logging Driver: json-file 
Cgroup Driver: cgroupfs 
Plugins: 
Volume: local 
Network: host bridge null overlay 
Swarm: inactive 
Runtimes: runc 
Default Runtime: runc 
Security Options: seccomp 
Kernel Version: 4.4.20-moby 
Operating System: Alpine Linux v3.4 
OSType: linux 
Architecture: x86_64 
CPUs: 4 
Total Memory: 9.744 GiB 
Name: moby 
ID: 43S4:LA5E:6MTG:IFOG:HHJC:HYLX:LYIT:YU43:QGBQ:K5I5:Z6LP:AENZ 
Docker Root Dir: /var/lib/docker 
Debug Mode (client): false 
Debug Mode (server): true 
File Descriptors: 16 
Goroutines: 27 
System Time: 2016-10-12T07:52:58.516469676Z 
EventsListeners: 1 
No Proxy: *.local, 169.254/16 
Registry: https://index.docker.io/v1/ 
Insecure Registries: 
127.0.0.0/8 


$ df -h 
Filesystem  Size Used Avail Capacity iused  ifree %iused Mounted on 
/dev/disk1  233Gi 141Gi 92Gi 61% 2181510 4292785769 0% /
devfs   193Ki 193Ki 0Bi 100%  668   0 100% /dev 
map -hosts  0Bi 0Bi 0Bi 100%  0   0 100% /net 
map auto_home 0Bi 0Bi 0Bi 100%  0   0 100% /home 
/dev/disk2s2 466Gi 64Gi 401Gi 14% 1857 4294965422 0% /Volumes/mac 
/dev/disk2s3 465Gi 29Gi 436Gi  7% 236633 3575589 6% /Volumes/PORTABLE 
/dev/disk3s1 100Mi 86Mi 14Mi 86%  12 4294967267 0% /Volumes/Vagrant 

私はボリュームをマウントするためには/ dev/disk1のディレクトリを使用していました。

+0

あなたはの出力を追加してもらえ:1 – guenhter

+0

を、あなたはどんな解決策を見つけましたこの問題に。私は同じことに直面しています。 – Gihan

+0

こんにちはを更新参照してください@guenhter 'ドッキングウィンドウのinfo'と ' DF -h' –

答えて

0

データベースに大きなsqlファイルをロードしようとすると、同様の問題が発生しました。私はちょうどコンテナの最大パケットサイズを増やす必要があり、インポートは期待通りに機能しました。たとえば、あなたは512メガバイトにあなたのSQLファイルの最大サイズを大きくしたいとあなたのコンテナがmy_mysqlとして命名され、あなたは、このコマンドで実行されている容器にパッケージサイズを調整することができます。

docker exec -it my_mysql bash -c "echo 'max_allowed_packet = 512M' >> /etc/mysql/mysql.conf.d/mysqld.cnf" 

はこれが追加しますconfigファイルの行。この後は、コンテナを再起動する必要があります。

docker restart my_mysql 
+0

私はdbを小さな塊に分割してインポートすることができました。私はこの値を調整しようとしたと思うが、私の場合は悪かった。 – Gihan

+0

これはあなたの問題のより良い解決策かもしれません。私はちょうど数hundretメガバイト大きなファイルをインポートする必要がありました。 – n2o

関連する問題