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

MySQL에서 일반 로그(General Log) 활성화하는 방법

MySQL에서 일반 로그(General Log)를 켜려면 SET 명령어를 사용해야 합니다. 일반 로그는 서버로 들어오는 모든 클라이언트의 SQL 쿼리를 기록하므로, 디버깅이나 쿼리 분석 시 매우 유용합니다.

일반 로그 활성화 문법

다음은 일반 로그를 켜는 기본 문법입니다.

set global general_log=ON;

현재 일반 로그 상태 확인하기

먼저 SHOW 명령어로 현재 일반 로그 상태를 확인해 보겠습니다.

mysql> SHOW variables like '%general_log%';

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+------------------+---------------------+
| Variable_name    | Value               |
+------------------+---------------------+
| general_log      | OFF                 |
| general_log_file | DESKTOP-QN2RB3H.log |
+------------------+---------------------+
2 rows in set (0.06 sec)

현재 general_log 값이 OFF로 설정되어 있는 것을 확인할 수 있습니다.

일반 로그 켜기

이제 다음 쿼리를 실행하여 일반 로그를 활성화합니다.

mysql> set global general_log=ON;
Query OK, 0 rows affected (0.18 sec)

설정이 정상적으로 적용되었는지 다시 한번 상태를 확인해 보겠습니다.

mysql> SHOW variables like '%general_log%';

실행 결과는 다음과 같습니다.

+------------------+---------------------+
| Variable_name    | Value               |
+------------------+---------------------+
| general_log      | ON                  |
| general_log_file | DESKTOP-QN2RB3H.log |
+------------------+---------------------+
2 rows in set (0.01 sec)

general_log 값이 ON으로 변경된 것을 볼 수 있습니다.

로그 파일 저장 위치 변경하기

필요에 따라 일반 로그 파일의 저장 위치도 변경할 수 있습니다. 다음과 같이 general_log_file 변수에 원하는 경로를 지정하면 됩니다.

mysql> SET GLOBAL general_log_file = 'E:\mysqllog';
Query OK, 0 rows affected (0.11 sec)

변경된 로그 파일 경로를 다시 확인해 보겠습니다.

mysql> SHOW variables like '%general_log%';

실행 결과는 다음과 같습니다.

+------------------+------------+
| Variable_name    | Value      |
+------------------+------------+
| general_log      | ON         |
| general_log_file | E:mysqllog |
+------------------+------------+
2 rows in set (0.01 sec)

주의 사항

SET GLOBAL로 변경한 설정은 MySQL 서버가 재시작되면 초기화됩니다. 재시작 후에도 설정을 유지하려면 MySQL 설정 파일(my.cnf 또는 my.ini)에 아래 내용을 추가해야 합니다.

[mysqld]
general_log = ON
general_log_file = /path/to/mysqllog

또한 일반 로그는 모든 쿼리를 기록하기 때문에 디스크 사용량이 빠르게 증가할 수 있습니다. 운영 환경에서는 필요한 경우에만 활성화하고, 사용 후에는 반드시 꺼두는 것이 좋습니다.