Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 쿼리 로그(general_log) 활성화 및 비활성화 방법

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 부담이 클 수 있으므로, 운영 환경에서는 필요한 경우에만 일시적으로 활성화하고 사용 후 비활성화하는 것이 좋습니다.