Estou esperando há 36 horas para que um arquivo .sql de 12 GB seja importado com um type site.sql | mysql
comando simples. Eu posso ver ibdata1
que ainda está crescendo, atualmente quase 40 GB.
Considerando que os gatilhos e os procedimentos armazenados estão no final do .sql, acho que o MySQL deveria adicionar dados e índices de chave.
O site.sql foi gerado usando este comando de outro servidor:
mysqldump -R -e --databases site --add-drop-database --add-create-database --add-drop-table -C --single-transaction --triggers
O que está demorando tanto?
Tente isto:
Identifique o id do processo então
Deixe 10 segundos ou um minuto então
^C
. Isso lhe dirá onde o processo está gastando seu tempo, por exemplo, pode estar apenas esperando pelo disco se você o virread
ewrite
dominar.Você tem alguma tabela InnoDB com uma chave primária
Qualquer uma dessas condições provavelmente pode fazer com que grandes nós BTREE em seus índices tenham muito poucas folhas em cada nó BTREE. A chave de cluster na chave primária também é anexada a cada entrada de chave não exclusiva em chaves não clusterizadas.
Outra consideração: a soma das páginas de dados do InnoDB é significativamente menor do que as páginas de índice do InnoDB?
Você pode descobrir isso com esta consulta (em MB):
Consideração adicional: você tem log binário ativado no servidor de banco de dados que está carregando? Se estiver, faça isso no servidor que está carregando:
Eu espero que isso ajude !!!
Tem certeza de que as tabelas em que você está lendo não possuem gatilhos, índices e restrições? Em qual hardware e sistema operacional você está executando? Como está configurado o seu armazenamento?
Estou mais familiarizado com o oracle, mas a importação de 12G em tabelas sem gatilhos, índices e restrições deve ir facilmente com 200 GB/h. Um único gatilho pode transformar o processo em um caracol, dependendo do que esse gatilho faz...
Eu espero que isso ajude