我有一个超过1 1GB的文件*.SQL,当我在本地或Vagrant上导入到Mysql时,它总是成功。但是用同样的文件,我在Docker上导入到Mysql,它非常非常慢(大约10MB / 15分钟)。我已经检查了很多次,结果都是一样的。我尝试了许多文件;它似乎发生在指定的文件中。我不知道原因。我需要帮助。
这是我的docker-compose.yml:
version: "2.0"
services:
database:
image: "mysql/mysql-server:5.5"
ports:
- "3307:3306"
volumes:
- "db:/var/lib/mysql"
- ./sql:/home/sql
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
volumes:
db: {}发布于 2017-04-04 22:26:49
我在windows中使用docker ...我的解决方案是将.sql文件移到Docker mysql容器中,然后手动执行导入。
中
docker cp base_ok.sql docker_mysql_1:/home/base_ok.sql
docker exec -ti docker_mysql_1 bash
mysql -p -u root magento < base_ok.sql
请注意,我的停靠容器是docker_mysql_1,您可以输入docker ps列出所有容器
发布于 2021-06-06 23:44:19
我的回答有点晚了,但我在这方面遇到了困难,我认为解决方案可以帮助其他人。
我已经读了很多,我在我的ext4文件系统中尝试了barrier=0,但是什么都没有。最后,对我有效的简单解决方案是将innodb缓冲池大小扩大到一个合适的值
mysql.cnf:
[mysql]
innodb_buffer_pool_size=128M就这样。
您可以将现有的conf复制到本地目录,然后挂载它: docker cp -a
<container>:/etc/mysql/conf.d mysql_conf
# change mysql.cnf
docker run ... -v /path/to/mysql_conf:/etc/mysql/conf.d ...或者据我所知直接传递给docker run:
docker run ... mysql:latest --innodb-buffer-pool-size=128M更新
我发现这个解决方案本身是不够的,它有时以某种方式碰巧有效,而对其他人仍然如此缓慢(不深入挖掘原因)。
因为我只在我的pc上使用它作为mysql的开发版本,所以我并不特别担心数据损坏等问题,所以我现在有:
[mysql]
innodb_buffer_pool_chunk_size=128M
innodb_buffer_pool_size = 128M
innodb_buffer_pool_instances = 4
innodb_read_io_threads = 4
innodb_write_io_threads = 4
innodb_flush_log_at_trx_commit = 2
innodb_file_per_table = 1
innodb_flush_method = O_DIRECT
innodb_doublewrite = 0
innodb_support_xa = 0
innodb_checksums = 0
general_log = 0
slow_query_log = 0
innodb_lru_scan_depth=256然后我在所有的表上启动了一个优化表,以确保"innodb_file_per_table“是有效的。
如果您在生产环境中,请相应地调整您最害怕的选项。
https://stackoverflow.com/questions/42711882
复制相似问题