【问题标题】:Docker-compose + MariaDB + 4GB SQL File = incredibly slow database importDocker-compose + MariaDB + 4GB SQL 文件 = 非常慢的数据库导入
【发布时间】:2019-01-01 02:06:25
【问题描述】:

我们有以下 MySQL 节点:

mysql:
    build: ./docker/builds/mysql
    ports:
      - "3306:3306"
    environment:
      - MYSQL_USER=root
      - MYSQL_PASSWORD=password
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_DATABASE=password
    volumes:
      - ./docker/data/ps_de:/data
      - ./docker/builds/mysql/my.cnf:/etc/mysql/my.cnf
      - ./docker/mysql:/var/lib/mysql_shared
    networks:
      vpcbr:
        ipv4_address: 172.55.0.20

这基本上只是用FROM mariadb:latest 拉取 MariaDB。

如果我们尝试将大量 SQL 转储导入此数据库,则需要大量时间才能完成此任务。

转储本身使用优化的设置进行转储,因此已经比普通转储“更快”。

在 HDD 上导入 4GB 转储最多需要 5 小时,而在 SSD 上仍需要最多 55 分钟。我读过关于在使用 Docker 时将如此庞大的数据导入 MySQL 时遇到的问题。

其他人有这个问题吗?您是如何解决的?

【问题讨论】:

  • 您找到解决方案了吗?我正在解决同样的问题

标签: mysql docker mariadb


【解决方案1】:

Docker 中的数据导入基本上是一个标准化的过程。

导入速度取决于您的 SSD/HDD 和您要导入的转储文件的大小。根据 HDD 的 IO 速度,导入可能需要一些时间。

我们花了好几个小时来实现一个进度条,但公平地说,这不值得花时间,因为速度也不会随之提高。

我们导入 50+GB 转储的方法是从物理数据库文件(直接存储在 MariaDB/MySQL 中)生成转储,而不是导入转储。下载 50GB 包比导入 50GB 转储快得多。

这不是最好的方法,因为您不能在此处应用 Dev-Settings(Docker 的入口点),并且您可能需要来自您的 comp 的 SRE/DevOps 来提供 Dump 本身,但值得一试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多