it-swarm-pt.tech

Acelerando despejos e importações do mysql

Existem técnicas documentadas para acelerar despejos e importações do mySQL?

Isso incluiria configurações my.cnf, usando ramdisks, etc.

Procurando apenas técnicas documentadas, de preferência com referências mostrando potencial aumento de velocidade.

51
deadprogrammer

http://www.maatkit.org/ possui um mk-parallel-dump e mk-parallel-restore

Se você deseja o mysqldump multiencadeado, não deseja 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 sensível) ou como um wrapper ao redor de SELECT INTO OUTFILE. Ele foi projetado para aplicativos de alto desempenho em tamanhos de dados muito grandes, onde a velocidade é muito importante. Ele tira proveito de várias CPUs e discos para descarregar seus dados muito mais rapidamente.

Existem também várias opções em potencial no mysqldump, como não criar índices enquanto o dump está sendo importado - mas, ao contrário, fazê-los em massa na conclusão.

15
Alister Bulman
  1. Obtenha uma cópia de MySQL de alto desempenho. Grande livro.
  2. Pastilhas estendidas nos lixões
  3. Despejar com o formato --tab para que você possa usar o mysqlimport, que é mais rápido que o mysql <dumpfile
  4. Importe com vários threads, um para cada tabela.
  5. Use um mecanismo de banco de dados diferente, se possível. importar para um mecanismo altamente transacional como o innodb é muito lento. A inserção em um mecanismo não transacional como o MyISAM é muito mais rápido.
  6. Veja o script de comparação de tabelas no kit de ferramentas Maakit e veja se você pode atualizar suas tabelas em vez de descartá-las e importá-las. Mas você provavelmente está falando de backups/restaurações.
24
JBB

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 em 1 se você precisar de ACID.

13
Aleksandar Ivanisevic

Acho que sua pergunta também depende de onde está o gargalo:

  • Se sua rede é um gargalo, você também pode dar uma olhada no -C/--compress sinalize para mysqldump.
  • Se o seu computador ficar sem memória (ou seja, começar a trocar), você deverá comprar mais memória.

Além disso, dê uma olhada no --quick sinalizador para mysqldump (e --disable-keys se você estiver usando o MyIsam).

5
Ztyx

O uso de inserções estendidas em despejos deve tornar as importações mais rápidas.

4
che

desative as verificações de chave estrangeira e ative a confirmação automática.

4
longneck

mysqlhotcopy pode ser uma alternativa para você também se você tiver apenas tabelas MyIsam.

1
Ztyx