我们有以下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
.
如果我们尝试将大量的sql转储导入这个db,那么完成这个任务需要花费大量的时间。
转储本身以优化设置转储,因此已经比正常转储“更快”。
在hdd上,导入4gb转储最多需要5小时,而在ssd上,导入4gb转储最多需要55分钟。我读过关于在使用docker时将如此巨大的数据导入mysql的问题。
还有其他人有这个问题吗?你是怎么解决的?
1条答案
按热度按时间exdqitrt1#
docker中的数据导入基本上是一个标准化的过程。
导入速度取决于您的ssd/hdd和要导入的转储文件的大小。根据硬盘的io速度,导入可能需要一些时间。
我们花了好几个小时来实现一个进度条,但公平地说,它不值得花时间,因为它的速度不会增加。
我们所做的导入50+gb转储的工作是从物理db文件(直接存储在mariadb/mysql中)生成转储,而不是导入转储。下载50gb包比导入50gb转储要快得多。
这不是最好的方法,因为您不能在这里应用dev设置(docker的entrypoint可以),而且您可能需要公司的sre/devops来提供转储本身,但是值得一试。