Tengo un archivo * .SQL de más de 1 GB, cuando lo importo a Mysql en local o Vagrant, siempre funciona correctamente. Pero con el mismo archivo, lo importo a Mysql en Docker, es muy lento (alrededor de 10 MB / 15 minutos). He comprobado muchas veces con el mismo resultado. Probé con muchos archivos; parece ocurrir con archivos específicos. No sé la causa. Necesito ayuda.
Este es mi 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: {}Uso Docker en Windows... Mi solución fue mover el archivo .sql al contenedor Docker mysql y ejecutar la importación manualmente.
Exporte .sql desde su servidor de producción mysql...
Copie el archivo en el contenedor Docker mysql
docker cp base_ok.sql docker_mysql_1:/home/base_ok.sql
ingrese al bash del contenedor docker mysql
docker exec -ti docker_mysql_1 bash
importar la DDBB
mysql -p -u root magento < base_ok.sql
tenga en cuenta que mi contenedor docker es docker_mysql_1 puede enumerar todos sus contenedores escribiendo docker ps
Llegué un poco tarde para responder, pero luché con esto y creo que la solución podría ayudar a otros.
He leído mucho, probé la barrera = 0 en mi sistema de archivos ext4 pero nada. Finalmente, la solución simple que funcionó para mí fue aumentar el tamaño del grupo de búfer de innodb a un valor decente
mysql.cnf:
[mysql] innodb_buffer_pool_size=128MEso es todo.
Puede copiar la configuración existente en un directorio local y luego montarla: docker cp -a
<container>:/etc/mysql/conf.d mysql_conf # change mysql.cnf docker run ... -v /path/to/mysql_conf:/etc/mysql/conf.d ...O por lo que sé, pasándolo directamente a docker run:
docker run ... mysql:latest --innodb-buffer-pool-size=128MDescubrí que esa solución no era suficiente en sí misma, de alguna manera funcionaba a veces mientras seguía siendo tan lenta en otros (no indagar por qué).
Como lo uso solo para una versión de desarrollo de mysql en mi PC, no estoy particularmente preocupado por la corrupción de datos, etc., así que ahora tengo:
[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=256Luego inicié una tabla de optimización en todas las tablas para asegurarme de que "innodb_file_per_table" fuera efectivo.
Ajuste las opciones que más le asustan en consecuencia si se encuentra en un entorno de producción.