Si tiene principalmente tablas MyISAM, debe aumentar el búfer de inserción masiva . Esto es lo que dice la documentación de MySQL sobre la configuración de bulk_insert_buffer_size :
MyISAM usa un caché especial en forma de árbol para hacer insertos masivos más rápido para INSERT ... SELECT, INSERT ... VALUES (...), (...), ..., y LOAD DATA INFILE cuando agrega datos a no vacío mesas. Esta variable limita el tamaño del árbol de caché en bytes por subproceso. Establecerlo en 0 deshabilita esta optimización. El valor predeterminado es 8 MB.
Hay dos cosas que debes hacer
1) Agréguelo a /etc/my.cnf
[mysqld]
bulk_insert_buffer_size=512M
2) Establecer el valor global para ello
SET GLOBAL bulk_insert_buffer_size = 1024 * 1024 * 512;
Si no tiene el privilegio de establecer bulk_insert_buffer_size a nivel mundial, haga esto
service mysql restart
Por supuesto, esto no es para InnoDB.
Desde otro ángulo, si las tablas son InnoDB o MyISAM, si los índices son más grandes que la tabla, es posible que tenga demasiados índices. Por lo general, considero que la recarga de un mysqldump MyISAM debería tomar 3 veces más tiempo que el mysqldump tardó en hacerse. También considero que la recarga de un mysqldump de InnoDB debería tomar 4 veces más tiempo que el mysqldump tardó en hacerse.
Si está excediendo la proporción 4: 1 para recargar un mysqldump, definitivamente tiene uno de dos problemas:
- demasiados índices
- índices demasiado grandes debido a columnas grandes
Puede medir el tamaño de sus datos por motor de almacenamiento con esto:
SELECT IFNULL(B.engine,'Total') "Storage Engine",
CONCAT(LPAD(REPLACE(FORMAT(B.DSize/POWER(1024,pw),3),',',''),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') "Data Size", CONCAT(LPAD(REPLACE(
FORMAT(B.ISize/POWER(1024,pw),3),',',''),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') "Index Size", CONCAT(LPAD(REPLACE(
FORMAT(B.TSize/POWER(1024,pw),3),',',''),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') "Table Size" FROM
(SELECT engine,SUM(data_length) DSize,SUM(index_length) ISize,
SUM(data_length+index_length) TSize FROM
information_schema.tables WHERE table_schema NOT IN
('mysql','information_schema','performance_schema') AND
engine IS NOT NULL GROUP BY engine WITH ROLLUP) B,
(SELECT 3 pw) A ORDER BY TSize;
Vea si los índices son casi tan grandes como los datos o incluso más grandes
También puede considerar deshabilitar el registro binario como este:
echo "SET SQL_LOG_BIN=0;" > footable.sql
mysqldump --databases foo >> footable.sql
antes de volver a cargar el script