无法将大型数据库导入到docker mysql容器中

我试图导入一个大型数据库到一个MySQL容器。 我已经将主机目录挂载为mysql容器的卷。 所以数据在主机上是持久的。 导入的sql文件是14 GB +。 mysql容器通过导入变成无响应的一半。 当我运行docker stats我可以看到一旦mysql容器吃了所有可用的内存CPU %使用率变得< 1 。 我试图增加docker的内存高达10 GB和它分配更多的内存到Docker时从导入创build更多的表。 但我不能从主机分配超过10GB

以下是我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 for mac版本1.12.1 Docker for mac

我正在使用docker exec -it docker_mysql_1 /bin/bashlogin到容器并从/tmp导入sql文件

此外,我尝试了通过将SQL文件安装到/docker-entrypoint-initdb.d的方式推荐的方式。 但是,这也停止了MySQL的初始化。

更新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目录来装载卷。

当我试图加载一个大的SQL文件到我的数据库时,我有一个类似的问题。 我只需要增加容器中的最大数据包大小,并且导入按预期工作。 例如,要将SQL文件的最大大小增加到512 MB,并将容器命名为my_mysql ,则可以使用以下命令调整正在运行的容器中的包大小:

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

这附加行到configuration文件。 之后,您需要重新启动容器:

 docker restart my_mysql