Encontre bancos de dados e tabelas mais ocupados no servidor MySQL

3

Eu tenho um servidor MyMQL ocupado com alguns bancos de dados. Eu estou tentando descobrir a melhor maneira de encontrar os bancos de dados (e tabelas) mais ocupados no servidor para que eu possa migrá-los para uma máquina separada. Qual é a melhor maneira de fazer isso?

    
por erikcw 12.03.2012 / 20:31

4 respostas

2

Você deve ativar o log de consultas lentas e ver quais consultas levam mais tempo. Isto pode ser conseguido usando

  log_slow_queries       = /var/log/foo.log
  long_query_time = 5

Ajuste o long_query_time às suas necessidades.

Uma segunda opção é usar o mytop e ver as consultas enquanto elas voam. Mas eu recomendo ir a rota de consultas lenta log. Se você quiser requisições / segundas métricas, você deve habilitar o arquivo de log binário por um tempo (digamos um dia) e então executar algo como link nele .

    
por 12.03.2012 / 20:37
3

Use o conjunto de ferramentas do Maatkit. Especificamente mk-query-digest . Crie um log de todas as consultas, usando log geral ou tcpdump. O mk-query-digest irá criar um relatório das consultas mais frequentes. A partir desse relatório, você pode ver quais bancos de dados / tabelas são atingidos com mais frequência.

Captura de pacotes de consulta com

tcpdump -i eth1 port 3306 -s 65535 -x -n -q -tttt > dump.txt

Analise com

mk-query-digest --type=tcpdump dump.txt --order-by=Query_time:cnt --limit=200 > query_report.txt
    
por 13.03.2012 / 19:06
1

Se você tiver dinheiro extra para gastar, use MySQL Enterprise Monitor para avaliar todos os tipos de desempenho e estatísticas de consulta. Eu acho que é possível obter uma versão de avaliação do MEM de alguma forma.

Se você não tiver esse dinheiro extra, MySQL Proxy poderá interceptar as consultas e executar o que quiser, para que você possa coletar estatísticas dessa maneira.

O log de consultas lentas que Peter Meyer informou é também de um jeito.

    
por 12.03.2012 / 20:44
0

Eu sugeriria o chamado recurso user_statistics que o Google originalmente desenvolveu. Ele está disponível no Percona Server e no MariaDB, e há um recurso semelhante no PERFORMANCE_SCHEMA na próxima versão do MySQL 5.6. Todos eles tornam bastante trivial determinar quais tabelas, índices, etc. são usados.

Se isso não for uma opção, eu escolheria pt-query-digest como sugerido por sreimer.

    
por 14.03.2012 / 12:51