MYSQL의 쿼리로그(query log)를 남기려면
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 1,425 조회
- 0 추천
- 목록
본문
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”파일이라는 쿼리로그파일을 저장하게될 것이다.
관련자료
-
이전
-
다음