MySQL을 다시 시작하지 않고 MySQL의 느린 쿼리 로그를 활성화하려면 어떻게해야합니까?


88

http://crazytoon.com/2007/07/23/mysql-changing-runtime-variables-with-out-restarting-mysql-server/ 지침을 따랐 지만 임계 값 만 설정 한 것 같습니다.

파일 경로 설정과 같은 다른 작업을 수행해야합니까?

MySQL의 문서에 따르면

--log-slow-queries에 file_name 값이 지정되지 않은 경우 기본 이름은 다음과 같습니다. 
host_name-slow.log. 서버는 데이터 디렉토리에 파일을 생성합니다.
다른 디렉토리를 지정하기 위해 절대 경로 이름이 제공됩니다. 

달리는

변수 표시

로그 파일 경로를 나타내지 않고 서버에 느린 쿼리 로그 파일이 표시되지 않습니다.

편집하다

서버 버전 5.0.77을 사용중인 것 같아서 다음을 수행해야합니다.

SET GLOBAL log_slow_queries = 1;

그러나 나는 얻는다 : ERROR 1238 (HY000) : 변수 'log_slow_queries'는 읽기 전용 변수입니다.

서버를 다시 시작하고 내 구성에 log_slow_queries를 설정해야한다고 가정합니다.


5
개발 박스에서 테스트 해보는 건 어떨까요?
Martin

답변:


93

시도 SET GLOBAL slow_query_log = 'ON';하고 아마도FLUSH LOGS;

이것은 MySQL 5.1 이상을 사용하고 있다고 가정합니다. 이전 버전을 사용하는 경우 서버를 다시 시작해야합니다. 이것은 MySQL 매뉴얼에 문서화되어 있습니다. 구성 파일 또는 명령 줄에서 로그를 구성 할 수 있습니다.


8
FLUSH SLOW LOGS는 5.5에서 사용할 수 있습니다!
Carson Reinke 2013 년

10.0.36-MariaDB에서도 저를 위해 일했습니다. SET GLOBAL slow_query_log = 'OFF';예상대로 작동합니다. FLUSH LOGS두 경우 모두 필요하지 않았습니다.
rinogo

28

버전 <5.1에 대한 느린 쿼리의 경우 다음 구성이 저에게 효과적이었습니다.

log_slow_queries=/var/log/mysql/slow-query.log
long_query_time=20
log_queries_not_using_indexes=YES

또한 [mysqld]구성 파일의 일부에 배치 하고 다시 시작하십시오 mysqld.


2
이 로그 느린 쿼리보다는 log_slow_queries있어
나오미

6
게다가 당신은 수동으로 이전 로그 파일을 생성해야합니다 :sudo mkdir /var/log/mysql sudo touch /var/log/mysql/slow-query.log sudo chown -R _mysql /var/log/mysql/
찰스

1
log_slow_queries는 MySQL 5.1.29에서 더 이상 사용되지 않습니다 slow-query-log. MySQL의 5.1 참조 설명서는 자세한 내용이 있습니다.
Xeoncross

18

사용 가능한 로그를 찾습니까?

SHOW VARIABLES LIKE '%log%';

로그 설정 :-

SET GLOBAL general_log = 'ON'; 

SET GLOBAL slow_query_log = 'ON'; 


6

이 작품

SET GLOBAL LOG_SLOW_TIME = 1;
SET GLOBAL LOG_QUERIES_NOT_USING_INDEXES = ON;

내 설정에서 깨짐 5.1.42

SET GLOBAL LOG_SLOW_QUERIES = ON;
SET GLOBAL SLOW_QUERY_LOG = ON;
set @@global.log_slow_queries=1;

http://bugs.mysql.com/bug.php?id=32565

이를 수행하는 가장 좋은 방법은 log_slow_time을 매우 높게 설정하여 느린 쿼리 로그를 "끄는"것 같습니다. 활성화하려면 log_slow_time을 낮추십시오. log_queries_not_using_indexes에 대해 동일한 트릭 (OFF로 설정)을 사용합니다.


5

문제는 MySQL 서버에 파일에 대한 권한이 있고 편집 할 수 있는지 확인하는 것입니다.

파일에 액세스 할 수있는 경우 다음 설정을 시도 할 수 있습니다.
SET GLOBAL slow_query_log = 1;

그렇지 않은 경우 구성 파일을 변경 한 후 언제든지 서버를 '다시로드'할 수 있습니다. 리눅스에서는 일반적으로/etc/init.d/mysql reload


내가 얻을 : ERROR 1193 (HY000) : 알 수없는 시스템 변수 'slow_query_log'
mmattax

어떤 버전의 MySQL을 실행하고 있습니까?
Ian Gregory

3

일반 오류 로그 및 느린 쿼리 오류 로그를 파일 대신 테이블에 사용하려는 경우

파일 대신 테이블에서 로그인을 시작하려면 :

set global log_output = “TABLE”;

일반 및 느린 쿼리 로그를 활성화하려면 :

set global general_log = 1;
set global slow_query_log = 1;

로그를 보려면 :

select * from mysql.slow_log;
select * from mysql.general_log;

자세한 내용은이 링크를 방문하십시오.

http://easysolutionweb.com/technology/mysql-server-logs/


1

이것은 mysql> 5.5에서 작동합니다.

'% long %'와 같은 변수 표시;

SET GLOBAL long_query_time = 1;

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.