MySQL 과 연동하여 한창 개발하다 보면, MySQL 쿼리 로그를 확인하고 싶을 때가 있다.
MySQL client 에서 아래와 같이 설정해주면 간단하게 쿼리 로그를 적재하고 확인할 수 있다.
SET GLOBAL log_output = 'table'; // 로그를 테이블에 적재하겠다는 옵션. 기본은 file 로 셋팅되어 있음.
SET GLOBAL general_log = 1; // 로깅을 on 한다는 뜻. 기본은 off (0)
위와 같이 설정하면, mysql.general_log 테이블에 모든 쿼리 로그가 적재된다.
쿼리를 여러개 실행해보고 아래 쿼리를 실행해보면, 지금까지 실행했던 쿼리들의 로그를 확인할 수 있다.
SELECT * FROM mysql.general_log;
간혹 argument 가 (hex) 로 표시되기도 하는데, 이런 경우 converting 해서 쿼리하면 된다.
SELECT log.*, convert(log.argument using utf8) FROM mysql.general_log log;
모든 쿼리가 general_log 에 적재되므로, 실 사용 서비스에서는 이렇게 사용하면 DB 에 부담을 많이 주게 된다.
개발용 DB 에서만 사용하고, 사용하고 나면 반드시 아래와 같이 설정을 off 해주자.
SET GLOBAL log_output = 'file';
SET GLOBAL general_log = 0;
general_log 테이블도 모든 내용 확인이 끝나고 데이터가 더 이상 필요 없으면 truncate 로 비워주자.
truncate table mysql.general_log;