[MySQL] MySql 쿼리 디버깅을 위한 방법 - MySql 로그
페이지 정보
작성자 서방님 댓글 0건 조회 157회 작성일 12-07-02 18:04본문
echo나 print로 로그를 찍게 되면, 화면에 직접 출력되기 때문에 만약 운영중인 웹 어플리케이션이라면 화면 가득 쏟아져 나온 쿼리를 보게 될 것이다.
syslog를 이용하여 쿼리를 시스템 로그 파일에 기록하는 방법도 있겠지만(MySql 쿼리 디버깅을 위한 방법 - syslog 참고), 보다 근본적으로 해결하는 방법이 있다면 그 방법을 써야겠다.
MySql을 설치하면 일반적으로 로그에 대한 설정은 따로 해주지 않는다. 이 때문에 로그를 syslog로 찍어야 하는 방법 밖에 없는, 또는 echo 정도로 로그를 찍어주는 것만 하고 있을지도 모른다.
MySql 설치시에 로그에 대한 설정을 자동으로 해준다면, 더할나위 없겠지만 아쉽게도 수동으로 주석을 풀어줘야 한다.
1. /etc/my.cnf 파일을 연다.
2. 로그와 관련된 설정을 심어준다.
3. 저장 후에 MySql을 재시동 한다.
3번 항목 재시동이라는 부분이 마음에 걸리지만, 그래도 한번 적용으로 두고두고 득(得)이 된다.
설정법은 아래와 같다.
# 바이너리 로그 설정
log-bin = bin_logs
# 쿼리 로그 설정
log = query_logs
# 에러 로그 설정
log-error = err_logs
# 느린 쿼리(slow query) 설정
log-slow-queries = slow_logs
# Update 쿼리 설정
log-update = update_logs
5가지의 로그 설정을 해 주면, 각 상황에 맞게 tail -f 파일명 을 이용하여 콘솔로 찍기만 하면 된다.
위에 설정에서 bin_logs, query_logs, err_logs, slow_logs, update_logs는 임의로 지정한 명칭이다. 상황에 맞게 적어주면 된다.
이렇게 지정된 로그의 위치는 mysql/data 폴더 안에 생성된다.
이 위치에서 보면 위에서 설정한 이름으로 파일들이 생성되었음을 확인 할 수 있다.
MySQL은 여러 개의 로그 파일을 가지고 있으며, 이 로그를 이용하여 mysql server에서 진행되고 있는 상황을 알아볼 수 있다<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
* MySQL Log Type
(1) Error Log : mysql 시작, 구동, 종료할 때 나오는 문제점을 기록하는 Log
(2) Query Log : Client 접속 및 Query 내용을 기록하는 Log
(3) Binary Log : 데이터를 변경시키는 모든 명령문 (replication으로 사용되는 것 포함)
(4) Slow Log : long_query_time 시간보다 오래 실행되는 모든 쿼리 및 인덱스를 사용하지 않는 쿼리
Error Log같은 경우 mysqld의 특별한 옵션을 주지 않아서 data를 저장하는 디렉토리에 localhost.err 형태로 기록된다. 그러나 이 외에의 로그 같은 경우에는 mysql 데몬을 기동시킬 때 각각 옵션을 지정해줘야 한다. (Error Log의 파일명을 바꾸고 싶은 경우에는 옵션을 명시하여야 한다.)
Query Log를 활설화 시키는 방법은
$> mysqld_safe --log[=filename]
이며, 해당 로그는 클라이언트에서 실행시킨 모든 쿼리를 log파일로 남기기 때문에 클라이언트의 에러를 의심할 경우 및 mysqld가 클라이언트에게 보내는 것이 무언인지 정확히 알고자 할 때 아주 유용한다. 그러나 로그 파일의 용량이 매우 커질 수 있으므로 주기적인 관리가 필요하다.
Binary Log를 활성화 시키는 방법은
$> mysqld_safe --log-bin[=filename]
이며, 데이터를 지금 또는 나중에 업데이트하는 모든 명령문이 기록되어 있다.
Slow Query Log를 활성화 시키는 방법은,
$> mysqld_safe --log-slow-queries[=filename]
이다.
*참고 : MySQL 데몬 중지 방법
$> mysqladmin -u아이디 –p shutdown
댓글목록
등록된 댓글이 없습니다.