【问题标题】:Mysql docker container block while it's importing data (OSX)Mysql docker容器在导入数据时阻塞(OSX)
【发布时间】:2016-07-18 09:32:02
【问题描述】:

我正在使用两个容器:服务器(php+apache)和 mysql(图像)。 我正在使用最新的 docker 版本和 OSX El Capitan。

这是我的 docker-compose.yml:

server:
    build: docker/images/server
    ports:
        - "80:80"
        - "443:443"
    volumes:
        - .:/var/www/html
    links:
        - mysql
    tty: true
mysql:
    image: mysql
    environment:
        MYSQL_ROOT_PASSWORD: root
        MYSQL_USER: user
        MYSQL_DATABASE: test
    volumes: 
        - "./.data/db:/var/lib/mysql"

当我导入我的 mysql 转储时,15-20 分钟后进程阻塞。我使用这个命令来显示一个进程栏:

pv database_dump.sql | mysql -uroot -proot test

database_dump.sql 大约为 3.5GB。

在开始导入我的转储之前我是否需要执行一些额外的步骤?

谢谢!

解决方案

最后,我必须使用 Ubuntu 14.04 和 MySQL 创建一个新容器。我不知道为什么,当我尝试导入我的数据库时,官方的 MySQL 容器不起作用。

【问题讨论】:

    标签: mysql macos docker docker-compose


    【解决方案1】:

    尝试使用导入

    cat backup.sql | docker exec -i CONTAINER /usr/bin/mysql -u root --password=root DATABASE
    

    来源:https://gist.github.com/spalladino/6d981f7b33f6e0afe6bb

    【讨论】:

    • 嗨!最后我用 Ubuntu 14.04 和 Mysql 创建了一个新容器。
    【解决方案2】:

    最简单的方法是使用 MySQL Workbench 并连接到您的数据库 URI 并导入转储

    【讨论】:

    • 我正在寻找一种通过 bash 脚本自动导入转储的方法。无论如何,我通过 Vagrant 有一个开发环境,使用相同的命令导入我的转储没有任何问题。
    • 在这种情况下,使用此命令“docker exec -i $CONTAINER_ID mysql -u $WORDPRESS_DB_USER -p$WORDPRESS_DB_PASSWORD $WORDPRESS_DB_NAME
    【解决方案3】:

    首先,创建一个数据库; 然后运行命令:

    $ pv 数据文件.sql | docker exec -i container_name mysql -uUSER -pPASSWORD database_name

    【讨论】:

    • 请分享更多细节。你有什么改变?是什么让您认为这比原来的命令效果更好?
    猜你喜欢
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 2020-02-20
    • 2010-11-06
    • 1970-01-01
    • 2017-10-26
    相关资源
    最近更新 更多