강좌
클라우드/리눅스에 관한 강좌입니다.
데이터베이스 분류

MYSQL의 쿼리로그(query log)를 남기려면

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

MYSQL의 쿼리로그(query log)를 남기려면

 

 

 

 

앞의 예에서 보았던 MYSQL의 주로그(에러로그)에는 웹프로그램이나 MYSQL접속후에 사용되는 SQL쿼리(Query)에 대한 로그는 기록되지 않는다.

 

 

 

 

  만약 쿼리로그를 기록하게 된다면 로그의 크기가 순식간에 커질 수 있으며, 어느 순간에 파일시스템이 꽉 차버리는 시스템장애가 발생할지도 모르기 때문에 MYSQL에서 SQL쿼리로그는 필요할 경우에만 지정된 로그파일에 기록할 수 있도록 선택적으로 사용할 수 있다.

 

 

 

 

 

 

MYSQL데이터베이스를 사용하는 프로그래머의 입장에서 본다면 SQL쿼리로그가 종종 필요할 경우가 있을 것이다.

 

 

 

 

 이때 서버관리자에게 SQL쿼리로그를 기록하게 해달라고 요청할 것이며 이런 경우에 서버관리자의 입장에서 , 알겠습니다.

 

 

 

 

라고 준비된 대답을 할 수 있어야 할 것이다.

 

 

 

 

  아래 설명을 참고하여 그 답을 준비하도록 하자.

 

MYSQL 쿼리로그를 기록하려면 “mysqld_safe”으로 MYSQL을 실행하실 때에 다음과 같은 옵션을 추가로 사용하면 된다.

 

 

 

 

 

 

쿼리로그옵션형식 : --log=쿼리로그파일명

 

 

 

 

위와같이 쿼리로그의 형식을 사용하면 MYSQL의 데이터디렉토리 ( : /usr/local/mysql/data/)쿼리로그파일명으로 지정된 로그파일이 생성되며 SQL쿼리로그를 기록하게 된다.

 

 

 

 

  만약 위의 형식에서 쿼리로그파일명을 생략하고 “--log”라고만 한다면 호스트명.log”라는 파일명으로 쿼리로그가 기록될 것이다.

 

 

 

 

 

 

아래의 예는 /usr/local/mysql/data/디렉토리에서 쿼리로그를 기록하기위하여 아래와 같이 실행한 것이다.

 

 

 

 

 

 

[root@sulinux data]#/usr/local/mysql/bin/mysqld_safe --log=MYSQL_QUERY_LOG &

[1] 4006

[root@sulinux data]#090429 02:19:33 mysqld_safe Logging to '/usr/local/mysql/data/sulinux.net.err'.

090429 02:19:34 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data

 

[root@sulinux data]#

 

 

 

 

즉 위의 예에서 쿼리로그파일명으로 MYSQL_QUERY_LOG라고 지정하였기 때문에 /usr/local/mysql/data/디렉토리에는 MYSQL_QUERY_LOG라는 파일명이 생성되어 쿼리로그를 기록할 것이다.

 

 

 

 

 

 

다음은 /usr/local/mysql/data/디렉토리에서 위의 예에서 지정한 쿼리로그파일을 확인한 것이다.

 

 

 

 

 그 내용을 보면 사용한 쿼리들이 기록되어있다는 것을 알 수 있다.

 

 

 

 

 

 

[root@sulinux data]#ls -l /usr/local/mysql/data/MYSQL_QUERY_LOG

-rw-rw---- 1 mysql mysql 179  4 29 02:19 /usr/local/mysql/data/MYSQL_QUERY_LOG

[root@sulinux data]#

[root@sulinux data]#cat /usr/local/mysql/data/MYSQL_QUERY_LOG

/usr/local/mysql/libexec/mysqld, Version: 5.1.32-log (Source distribution). started with:

Tcp port: 3306  Unix socket: /tmp/mysql.sock

Time                 Id Command    Argument

090429  2:20:28    1 Connect    tempuser@localhost on temp_db2

                    1 Query     xit

exit

090429  2:20:29    1 Quit

090429  2:20:37    2 Connect    root@localhost on mysql

                    2 Query     select @@version_comment limit 1

090429  2:20:42    2 Query      show databases

090429  2:20:50    2 Query      select * from user

090429  2:20:52    2 Query      select * from db

090429  2:20:59    2 Query      select * from db where user='root'

[root@sulinux data]#

 

 

 

 

참고로 MYSQL의 로그파일을 특별한 위치에 저장하고자 한다면 다음과 같이 디렉토리경로와 함께 MYSQL을 시작하면 된다.

 

 

 

 

 

 

[root@sulinux bin]# ./mysqld_safe --log=/디렉토리경로/MYSQL_QUERY_LOG &

 

 

 

 

위와같이하면 지정된 “/디렉토리경로/“MYSQL_QUERY_LOG”파일이라는 쿼리로그파일을 저장하게될 것이다.

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,158 명
  • 현재 강좌수 :  36,517 개
  • 현재 접속자 :  368 명