Que configurações usar para o recarregamento mais rápido de um backup MySQL?

2

Eu tenho um banco de dados MySQL que copia para um backup de 3,5 GB (mysqldump) em cerca de 10 minutos.

Mas o recarregamento deste backup em um servidor em espera / teste leva quase duas horas [originalmente 12 antes de algum ajuste].

Quais são algumas configurações que maximizam o desempenho do recarregamento?

Os mais promissores parecem ser innodb_buffer_pool_size, innodb_additional_mem_pool_size e innodb_log_buffer_size ... mas estou atingindo os limites da minha abordagem de tentativa e erro. Quais dessas configurações "devem" ser as mais importantes?

Por meio de tentativa e erro, não consegui obter mais de 70% de utilização da CPU e 63% de utilização de memória. Eu gostaria de ambos em 100% durante uma recarga.

Todas as tabelas são InnoDB.

UPDATE

Consegui reduzir o tempo de carregamento de 12 horas para 1h55min com estas configurações:

innodb_buffer_pool_size=192M
innodb_additional_mem_pool_size=96M
innodb_flush_log_at_trx_commit=0
innodb_log_buffer_size=64M
innodb_file_per_table
key_buffer              = 32M
max_allowed_packet      = 32M

O servidor de teste é um Rackspace Cloud Server de 512 MB.

O servidor de produção é um Athlon 64 X2 4200 de 2 GB.

mysql Ver 14.12 Distrib 5.0.67, for debian-linux-gnu (i486) using readline 5.2

Não tenho certeza de quanto mais isso pode ser ajustado agora ... mas ainda me incomoda que apenas 63% da RAM disponível seja utilizada no meu mysqld durante a carga.

Eu não acho que isso seja um problema de limite de E / S de disco. O mesmo servidor pode copiar 20MB / s de um arquivo zip. Então, usando alguma matemática aproximada, apenas 6 minutos da 1h55m podem ser atribuídos à latência do disco. Então, isso deve estar ligado à CPU ou à memória, mas nenhum desses está indo para 100%.

    
por Alex R 19.05.2010 / 06:52

3 respostas

2

Eu descobri que innodb_flush_log_at_trx_commit tem a maior influência na velocidade de restauração. Certifique-se de que esteja configurado para 2, pelo menos durante a restauração.

Outro que, verifique as ferramentas do maatkit como sugerido por lg acima, o dump / restore é simples, mas não muito paralelo, apenas o mk_parallel_restore pode utilizar totalmente o seu cpu

    
por 19.05.2010 / 20:03
2

Você pode tentar mk-parallel-restore

    
por 19.05.2010 / 10:39
0

Talvez um método de backup diferente? Eu suponho que você deseja restaurar o servidor de banco de dados completo em outro servidor. Se você tem LVM em sua caixa, você pode usar Instantâneo do LVM e copie arquivos de banco de dados brutos. Outra opção (e possivelmente melhor) é usar xtrabackup ao invés do mysqldump.

    
por 19.05.2010 / 22:02

Tags