Consultas lentas não registradas

13

Estou tentando habilitar o log lento de consultas em nosso servidor para identificar quaisquer consultas que possam usar otimização. Parece bastante simples, no entanto, meu arquivo não está sendo gravado. Não recebo erros ou algo parecido, apenas não parece estar registrando as consultas lentas. Lembrei-me de reiniciar o mysql após minhas alterações de configuração.

Estou usando o MySQL Ver 5.1.61. Aqui está o que eu tenho no my.cnf:

slow-query-log=1
slow-query-log-file=/var/logs/my.slow.log
long_query_time=1

o arquivo /var/logs/my.slow.log tem o mysql como proprietário, também no interesse da depuração que dei leitura / gravação a todos no arquivo de log.

Eu tenho o long_query_time definido como 1 no acima, pois eu só quero ver se está funcionando. Eu tentei defini-lo mais baixo (por exemplo, 0,3), mas ainda não estou recebendo nada registrado. Sei que as consultas que meu aplicativo está executando demoram mais de 1 segundo e também executei intencionalmente consultas de log ( SELECT sleep(10);) no terminal para teste e o log ainda está vazio.

Eu olhei os documentos, pelo que vejo isso deve estar funcionando. Alguém tem alguma sugestão sobre o que estou fazendo de errado? Qualquer conselho seria apreciado, muito obrigado!

Edit: Conforme solicitado nos comentários, executei a consulta:

 `SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');`

O resultado:

10.0000000
/var/run/mysqld/mysqld-slow.log
OFF

Obviamente, minhas alterações na configuração não estão sendo levadas em consideração, pois acredito que sejam padrões. Estou certo de que o arquivo my.cnf que estou alterando está sendo analisado como se eu colocasse um valor inválido, o mysql irá erro ao reiniciar. O que poderia estar acontecendo aqui?

Outra edição:

Depois de seguir o conselho do @RolandoMySQLDBA e mover minhas linhas de configuração de consulta lenta para [mysqld]minhas configurações, parece estar salvando. Agora, o resultado da consulta variable_value acima é:

1.0000000
/var/logs/my.slow.log
ON

No entanto, ainda não estou vendo o arquivo my.slow.log sendo gravado. Eu não acho que seja um problema de permissões, pois o arquivo pertence ao mysql e adicionei todas as permissões para todos os usuários no arquivo. Alguém poderia pensar em uma razão pela qual isso não estaria funcionando?

Edit: Resolvido! O caminho para o log de consulta lenta estava incorreto, deveria ter sido /var/log/my.slow.log em vez de / var / log * s * / my.slow.log. Obrigado a todos pela ajuda, eu aprendi allot!

O método
fonte
1
Por favor, execute SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');e publique sua saída.
RolandoMySQLDBA
1
Se alguém ainda tiver problemas depois de ler isso, verifique a variável log_output. SET GLOBAL log_output=FILEconsertou para mim.
Mølholm

Respostas:

21

Eu acho que recebi a resposta:

Você precisa colocar essas opções na [mysqld]seção

[mysqld]
slow-query-log=1
slow-query-log-file=/var/logs/my.slow.log
long_query_time=1

e reinicie o mysql

ATUALIZAÇÃO 05-03-2013 16:36 EST

Não sei por que isso ainda está acontecendo, mas tente o seguinte:

service mysql stop
rm -f /var/logs/my.slow.log
touch /var/logs/my.slow.log
chown mysql:mysql /var/logs/my.slow.log
service mysql start

então corra SELECT SLEEP(10);e veja se ele cai/var/logs/my.slow.log

RolandoMySQLDBA
fonte
Obrigado! O que você sugeriu ajudou, parece que as configurações estão sendo salvas corretamente, mas ainda não estou escrevendo as coisas. Eu editei minha pergunta para refletir isso.
precisa saber é o seguinte
Ei, apenas curioso, estou executando um sistema Debian sob uma VM. O caminho está correto na sua resposta? /var/logs/em vez de/var/log
Silviu-Marian
Apenas informaçoes. "touch & chown" também são necessários no ambiente do CentOS 6.6 mysql 5.1.73.
Fumisky Wells
Acabei de encontrar um sistema em que eles tentaram colocá-los [mysqld_safe], o que não funcionou. Colocá-los em baixo [mysql]resolveu o problema.
Michael Hampton