MySQL에서 실행되는 모든 쿼리를 기록하는 일반 쿼리 로그(General Query Log)는 디버깅이나 성능 분석에 매우 유용한 기능입니다. 이 로그는 SET GLOBAL 명령을 사용하여 활성화할 수 있습니다.
SET general_log 사용 시 발생하는 오류
MySQL 8.0.12 버전부터는 general_log가 전역(GLOBAL) 변수로만 관리되기 때문에, 일반적인 SET 구문으로는 설정할 수 없습니다. 만약 다음과 같이 입력하면 오류가 발생합니다.
mysql> SET general_log = 1;
실행 결과는 아래와 같습니다.
ERROR 1229 (HY000): Variable 'general_log' is a GLOBAL variable and should be set with SET GLOBAL
오류 메시지에서 알 수 있듯이, general_log 변수는 반드시 SET GLOBAL 구문으로 설정해야 합니다.
쿼리 로그 활성화하기
아래와 같이 GLOBAL 키워드를 함께 사용하면 쿼리 로그를 정상적으로 활성화할 수 있습니다.
mysql> SET global general_log = 1; Query OK, 0 rows affected (0.10 sec)
활성화 여부 확인하기
설정이 제대로 적용되었는지 확인하려면 SHOW VARIABLES 명령을 사용합니다.
mysql> SHOW variables like '%general_log%';
실행 결과는 다음과 같습니다.
+------------------+---------------------+ | Variable_name | Value | +------------------+---------------------+ | general_log | ON | | general_log_file | DESKTOP-QN2RB3H.log | +------------------+---------------------+ 2 rows in set (0.03 sec)
출력 결과에서 general_log 값이 ON으로 표시된 것을 확인할 수 있습니다. 값 1은 활성화를 의미하며, 로그 파일명도 함께 확인됩니다.
쿼리 로그 비활성화하기
반대로 값을 0으로 설정하면 쿼리 로그를 비활성화할 수 있습니다.
mysql> SET global general_log = 0; Query OK, 0 rows affected (0.06 sec)
다시 한번 상태를 확인해 보겠습니다.
mysql> SHOW variables like '%general_log%';
실행 결과는 다음과 같습니다.
+------------------+---------------------+ | Variable_name | Value | +------------------+---------------------+ | general_log | OFF | | general_log_file | DESKTOP-QN2RB3H.log | +------------------+---------------------+ 2 rows in set (0.00 sec)
general_log 값이 OFF로 변경된 것을 확인할 수 있습니다. 참고로 쿼리 로그는 모든 SQL 문을 기록하기 때문에 디스크 I/O 부담이 클 수 있으므로, 운영 환경에서는 필요한 경우에만 일시적으로 활성화하고 사용 후 비활성화하는 것이 좋습니다.