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!
fonte
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.SET GLOBAL log_output=FILE
consertou para mim.Respostas:
Eu acho que recebi a resposta:
Você precisa colocar essas opções na
[mysqld]
seçãoe reinicie o mysql
ATUALIZAÇÃO 05-03-2013 16:36 EST
Não sei por que isso ainda está acontecendo, mas tente o seguinte:
então corra
SELECT SLEEP(10);
e veja se ele cai/var/logs/my.slow.log
fonte
/var/logs/
em vez de/var/log
[mysqld_safe]
, o que não funcionou. Colocá-los em baixo[mysql]
resolveu o problema.