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

时间:2016-10-12 05:45:42

标签: mysql docker docker-compose

我正在尝试将大型数据库导入mysql容器。我已经将主机目录挂载为mysql容器的卷。因此数据在主机上是持久的。导入的sql文件是def lock(key, timeout) if @redis.set(key, Time.now, nx: true, px: timeout) begin yield ensure release key end end end +。 mysql容器在导入的一半时间内没有响应。当我运行14 GB时,一旦mysql容器占用了所有可用内存,我就可以看到docker stats用法变为CPU %。我尝试将docker的内存增加到< 1,当我为Docker分配更多内存时,它会从导入中创建更多表。但是我无法从主机分配超过10 GB

以下是我的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 exec -it docker_mysql_1 /bin/bash

导入sql文件

此外,我通过将sql文件挂载到/tmp来尝试mysql repo推荐的方式。但是这也会停止mysql init。

更新1

/docker-entrypoint-initdb.d

我正在使用/ dev / disk1目录来安装卷。

2 个答案:

答案 0 :(得分:1)

我通过更改环境解决了phpmyadmin-> import大型数据库错误 docker-compose.yml中的变量

UPLOAD_LIMIT = 1G


myadmin:
        image: phpmyadmin/phpmyadmin
        container_name: phpmyadmin
        ports:
            - "8083:80"
        environment:
            - UPLOAD_LIMIT=1G
            - PMA_ARBITRARY=1
            - PMA_HOST=${MYSQL_HOST}
        restart: always
        depends_on:
            - mysqldb

答案 1 :(得分:0)

即使我遇到了类似的问题。 请执行以下过程,这可能对您有帮助: 首先将您的sql文件(filename.sql)复制到db容器中。

docker cp filename.sql docker_db_container:/filename.sql

稍后登录到您的db容器,并使用此(filename.sql)文件填充db。 为了在数据库中插入文件(filename.sql), 将mysql转到db容器中,使用要在其中存储数据库的db。 use database_name;

source /filename.sql

但是,如果您遇到大数据包大小的问题,那么请增加容器的数据包大小

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