Acelerando dumps e importações do mysql [fechado]
Pergunta
Existem técnicas documentadas para acelerar despejos e importações do MySQL?
Isso incluiria configurações my.cnf, uso de ramdisks, etc.
Procurando apenas técnicas documentadas, de preferência com benchmarks que mostrem potencial aceleração.
Solução
http://www.maatkit.org/ tem um mk-parallel-dump e mk-parallel-restore
Se você deseja um mysqldump multithread, não deseje mais.Esta ferramenta despeja tabelas MySQL em paralelo.É um mysqldump muito mais inteligente que pode atuar como um wrapper para o mysqldump (com comportamento padrão sensato) ou como um wrapper em torno de SELECT INTO OUTFILE.Ele foi projetado para aplicações de alto desempenho em tamanhos de dados muito grandes, onde a velocidade é muito importante.Ele aproveita várias CPUs e discos para despejar seus dados com muito mais rapidez.
Existem também várias opções potenciais no mysqldump, como não criar índices enquanto o dump está sendo importado - mas sim fazê-los em massa na conclusão.
Outras dicas
- Obtenha uma cópia de MySQL de alto desempenho.Grande livro.
- Inserções estendidas em dumps
- Despeje com -Tab Format para que você possa usar o MySqlimport, que é mais rápido que o MySQL <Dumpfile
- Importe com vários threads, um para cada tabela.
- Use um mecanismo de banco de dados diferente, se possível.Importar para um motor fortemente transacional como o InnoDB é muito lento.Inserir em um motor não transacional como Myisam é muito mais rápido.
- Olhe para a tabela Compare o script no Maakit Toolkit e veja se você pode atualizar suas tabelas em vez de despejá -las e importá -las.Mas você provavelmente está falando sobre backups/restaurações.
Se você estiver importando para o InnoDB, a coisa mais eficaz que você pode fazer é colocar
innodb_flush_log_at_trx_commit = 2
na tua my.cnf
, temporariamente enquanto a importação está em execução.Você pode colocá-lo de volta 1
se você precisar de ÁCIDO.
Acho que sua pergunta também depende de onde está o gargalo:
- Se a sua rede for um gargalo, você também pode dar uma olhada no
-C
/--compress
bandeira paramysqldump
. - Se o seu computador ficar sem memória (ou seja,começa a trocar), você deve comprar mais memória.
Além disso, dê uma olhada no --quick
bandeira para mysqldump
(e --disable-keys
se você estiver usando MyIsam).
O uso de inserções estendidas em dumps deve tornar as importações mais rápidas.
desative as verificações de chave estrangeira e ative a confirmação automática.
mysqlhotcopy
pode ser uma alternativa para você também se você tiver apenas tabelas MyIsam.
Outra alternativa é http://www.mydumper.org - backup/restauração mysql multithread que é 3x a 10x vezes mais rápido que o mysqldump e pode lidar com MyISAM e InnoDB, bem como Drizzle http://vbtechsupport.com/1695/
Usando índices, mas não muito, ative o cache de consultas, usando o sphinx para grandes bancos de dados, aqui estão algumas boas dicas http://www.keedeo.com/media/1857/26-astuces-pour-accelerer-vos-requetes-mysql (Em francês)