기본 콘텐츠로 건너뛰기

[블로그 개발 프로젝트] mysql 쿼리로그 저장

MySQL Query 추적하기

MySQL에서 실시간으로 쿼리(Query)를 추적할 수 있는 방법은 없을까?
많은 개발자 혹은 서버 관리자들이 궁금해 하는 질문입니다.
단순히 몇가지 설정만으로 쿼리를 실시간으로 모니터링하는 것이 가능합니다.
MySQL에 root로 로그인합니다.
general_log(query log) 상태를 확인합니다.
  • general log란 MySQL에서 실행되는 전체 쿼리에 대한 로그이며, general log를 활성화하면 MySQL이 쿼리 요청을 받을 때 즉시 general log에 기록합니다.
1





general_log(query log)를 활성화합니다.
mysql> set global general_log=on;Query OK, 0 rows affected (0.00 sec)
general_log(query log) ‘ON’ 상태를 확인합니다.(mysql 재시작 필요 없음)
  • general_log_file의 기본 경로에서 실시간으로 입력되는 쿼리 로그를 확인할 수 있습니다.
2





경로를 바꾸려면 다음과 같이 입력합니다. (경로를 변경하게 되면 mysql을 재시작해야 합니다.)
  • [mysqld]에 아래의 2줄을 삽입합니다.
  • 0은 비활성, 1은 활성을 의미합니다.
# vi /etc/my.cnf [mysqld]general_log_file  = /var/log/general.log  ⇐ 변경할 경로 입력general_log  = 1
변경된 경로를 적용한 후 mysql을 재시작 합니다.
# touch /var/log/general.log
# chown mysql.mysql /var/log/general.log
#/etc/init.d/mysqld restart
실시간으로 query log의 상세 내역을 확인할 수 있습니다.
# tail -f /var/log/general.log 160504 17:56:44    3 Query show variables like ‘general%
160504 18:02:44    3 Query show VARIABLES where variable_name like ‘%log%’160504 18:03:02    3 Query show VARIABLES where variable_name like ‘%log%
160504 18:03:31   3 Quit
[출처]
쿼리로그 활성화:

댓글

이 블로그의 인기 게시물