최적화를 사용할 수있는 쿼리를 식별하기 위해 서버에서 느린 쿼리 로깅을 활성화하려고합니다. 간단하게 들리지만 파일을 쓰지 않습니다. 나는 오류 나 그와 비슷한 것을 얻지 못하고 느린 쿼리를 기록하지 않는 것 같습니다. 구성 변경 후 mysql을 다시 시작한 것을 기억했습니다.
MySQL Ver 5.1.61을 사용하고 있습니다. 다음은 my.cnf에있는 내용입니다.
slow-query-log=1
slow-query-log-file=/var/logs/my.slow.log
long_query_time=1
/var/logs/my.slow.log 파일에는 소유자로서 mysql이 있으며, 로그 파일에서 모두 읽기 / 쓰기를 수행 한 디버깅에 관심이 있습니다.
위의 경우 long_query_time을 1로 설정하여 작동하는지 확인하고 싶습니다. 나는 그것을 더 낮게 설정하려고했지만 (예 : 0.3) 여전히 아무것도 기록하지 않습니다. 내 앱이 실행하는 쿼리가 1 초 이상 걸리고 SELECT sleep(10);
테스트를 위해 터미널에서 의도적으로 로그 쿼리 ( )를 실행 했으며 로그가 여전히 비어 있음을 알고 있습니다 .
나는 이것이 작동하는 것을 볼 수있는 것에서 문서를 살펴 보았습니다. 아무도 내가 뭘 잘못하고 있는지에 대한 제안이 있습니까? 모든 조언을 부탁드립니다, 감사합니다!
편집 : 의견에 따라 쿼리를 실행했습니다.
`SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');`
결과:
10.0000000
/var/run/mysqld/mysqld-slow.log
OFF
분명히 이것이 기본 설정이라고 믿기 때문에 구성 변경 사항이 고려되지 않습니다. 변경 한 my.cnf 파일이 잘못된 값을 넣은 것처럼 구문 분석되고 있다고 확신합니다 .mysql은 재시작시 오류가 발생합니다. 여기서 무슨 일이 일어날 수 있습니까?
다른 편집 :
@RolandoMySQLDBA의 조언을 받아 느린 쿼리 구성 줄을 [mysqld]
내 설정으로 옮기면 절약되는 것처럼 보입니다. 위의 variable_value 쿼리 결과는 다음과 같습니다.
1.0000000
/var/logs/my.slow.log
ON
그러나 여전히 my.slow.log 파일이 작성되는 것을 볼 수 없습니다. 나는 파일이 MySQL을 소유하고대로 권한 문제라고 생각하지 않습니다 와 나는 파일의 모든 사용자에 대한 모든 권한을 추가했습니다. 아무도 이것이 작동하지 않는 이유를 생각할 수 있습니까?
편집 : 해결! 느린 쿼리 로그의 경로가 올바르지 않습니다. / var / log * s * / my.slow.log 대신 /var/log/my.slow.log 여야합니다. 도움을 주신 모든 분들께 감사드립니다.
SET GLOBAL log_output=FILE
나를 위해 고쳤다.
SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');
출력을 실행 하고 게시 하십시오 .