Se você possui principalmente tabelas MyISAM, deve aumentar o buffer de inserção em massa . Aqui está o que a documentação do MySQL diz sobre a configuração bulk_insert_buffer_size :
O MyISAM usa um cache especial em forma de árvore para tornar as inserções em massa mais rápidas para INSERT ... SELECT, INSERT ... VALUES (...), (...), ... e LOAD DATA INFILE ao adicionar dados a objetos não vazios mesas. Essa variável limita o tamanho da árvore de cache em bytes por encadeamento. Definir como 0 desativa essa otimização. O valor padrão é 8 MB.
Há duas coisas que você precisa fazer
1) Adicione-o ao /etc/my.cnf
[mysqld]
bulk_insert_buffer_size=512M
2) Defina o valor global para ele
SET GLOBAL bulk_insert_buffer_size = 1024 * 1024 * 512;
Se você não tiver o privilégio de definir globalmente bulk_insert_buffer_size, faça isso
service mysql restart
Obviamente, isso não é para o InnoDB.
De outro ângulo, se as tabelas são InnoDB ou MyISAM, se os índices forem maiores que a tabela, você poderá ter muitos índices. Eu costumo prever que uma recarga de um mysqldump do MyISAM deve levar três vezes o tempo que o mysqldump demorou para ser feito. Também acredito que a recarga de um mysqldump do InnoDB deve levar 4 vezes o tempo que o mysqldump demorou para ser feito.
Se você está excedendo a proporção de 4: 1 para recarregar um mysqldump, você definitivamente tem um dos dois problemas:
- muitos índices
- índices muito grandes devido a colunas grandes
Você pode medir o tamanho dos seus dados pelo mecanismo de armazenamento com este:
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;
Veja se os índices são quase tão grandes quanto os dados ou até maiores
Você também pode desabilitar o log binário como este:
echo "SET SQL_LOG_BIN=0;" > footable.sql
mysqldump --databases foo >> footable.sql
antes de recarregar o script