느린 쿼리가 로깅되지 않음


13

최적화를 사용할 수있는 쿼리를 식별하기 위해 서버에서 느린 쿼리 로깅을 활성화하려고합니다. 간단하게 들리지만 파일을 쓰지 않습니다. 나는 오류 나 그와 비슷한 것을 얻지 못하고 느린 쿼리를 기록하지 않는 것 같습니다. 구성 변경 후 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 여야합니다. 도움을 주신 모든 분들께 감사드립니다.


1
SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');출력을 실행 하고 게시 하십시오 .
RolandoMySQLDBA

1
이 내용을 읽은 후에도 여전히 문제가 있으면 log_output 변수를 확인하십시오. SET GLOBAL log_output=FILE나를 위해 고쳤다.
molholm

답변:


21

나는 대답을 얻었다 고 생각한다.

해당 옵션을 [mysqld]섹션 아래에 배치해야합니다

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

mysql을 다시 시작하십시오.

업데이트 2013-03-05 16:36 EST

왜 이런 일이 발생하는지 모르겠지만 다음을 시도하십시오.

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

실행 SELECT SLEEP(10);하고 그것이 도착하는지 확인/var/logs/my.slow.log


감사합니다! 제안한 내용은 설정이 올바르게 저장되는 것 같지만 여전히 글을 쓰지 못했습니다. 이것을 반영하기 위해 내 질문을 편집했습니다.
TheMethod

그냥 궁금해서 데비안 시스템을 VM에서 실행하고 있습니다. 답장에 경로가 정확합니까? /var/logs/대신/var/log
Silviu-Marian

그냥 정보. CentOS 6.6 mysql 5.1.73 환경에서도 "touch & chown"이 필요합니다.
Fumisky Wells

방금 시스템에 꽂아서 [mysqld_safe]작동시키지 않았습니다. 그것들을 놓으면 [mysql]문제가 해결되었습니다.
Michael Hampton
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.