에러 로그 파일 (Error Log)
위치: MySQL 설정 파일(my.cnf)의 log_error 파라미터로 정의된 경로
주요 정보
- MySQL 시작 과정 관련 정보 및 에러 메시지
- InnoDB의 트랜잭션 복구 메시지 (비정상 종료 후 재시작 시)
- 쿼리 처리 중 발생하는 문제에 대한 에러 메시지
- 비정상적으로 종료된 커넥션 메시지 (Aborted connection)
- InnoDB 모니터링 결과
- MySQL 종료 메시지
서버의 상태 진단, 문제 해결, 비정상 종료 원인 파악을 위해 사용될 수 있다.
[mysqld]
log_error = /var/log/mysql/error.log
SHOW VARIABLES LIKE '%log_error%';
Variable_name | Value |
---|---|
binlog_error_action | ABORT_SERVER |
log_error | stderr |
log_error_services | log_filter_internal; log_sink_internal |
log_error_suppression_list | |
log_error_verbosity | 2 |
설정 방법
-
TABLE로 저장하고 싶다면
SET GLOBAL log_output='TABLE';
-
파일로 저장하고 싶다면
SET GLOBAL log_output='FILE';
제너럴 쿼리 로그 파일 (General Query Log)
위치: general_log_file 파라미터로 지정된 경로
주요 정보
- 모든 클라이언트의 접속 정보와 실행된 모든 쿼리가 기록
- 쿼리 실행 전에 기록되므로, 실행 중 에러가 발생해도 로그에 기록
- 전체적인 쿼리 패턴 분석, 디버깅에 유용하나 성능에 영향을 줄 수 있음
설정 방법
log_output 파라미터로 파일 또는 테이블 저장 선택 가능
[mysqld]
general_log = 1
general_log_file = /var/log/mysql/general.log
SHOW VARIABLES LIKE "general_log%";
MySQL은 기본적으로 log 기록 부분이 OFF 되어 있다.
Variable_name | Value |
---|---|
general_log | OFF |
general_log_file | /var/lib/mysql/84ad8baffa51.log |
SET GLOBAL general_log = 'ON';
SET GLOBAL general_log_file='/var/lib/mysql/localhost.log';
슬로우 쿼리 로그 (Slow Query Log):
성능이 좋지 않은 쿼리 식별 및 최적화를 위해 사용한다.
쿼리 실행 완료 후 기록되므로, 정상 실행된 쿼리만 포함된다.
주요 정보
- Query_time: 쿼리 실행 총 시간
- Lock_time: MySQL 엔진 레벨의 테이블 잠금 대기 시간
- Rows_examined: 쿼리 처리를 위해 접근한 레코드 수
- Rows_sent: 실제 클라이언트로 전송된 결과 레코드 수
설정 방법
설정 파일(my.cnf)
- long_query_time: 이 시간 이상 소요된 쿼리를 기록 (초 단위, 소수점 사용 가능)
- slow_query_log_file: 파일 또는 테이블 저장 선택
[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
쿼리문(SQL)
SHOW VARIABLES LIKE '%slow_query%';
Variable_name | Value |
---|---|
slow_query_log | OFF |
slow_query_log_file | /var/lib/mysql/84ad8baffa51-slow.log |
SHOW VARIABLES LIKE '%long_query%';
Variable_name | Value |
---|---|
long_query_time | 10.000000 |
SET GLOBAL long_query_time=5;
로그 분석 도구
Percona Toolkit의 pt-query-digest
기능: 로그 파일을 분석하여 쿼리 성능 통계 제공
-
슬로우 쿼리 통계: 전체 쿼리의 실행 시간, 잠금 대기 시간 등의 평균 및 최소/최대값
-
실행 빈도 및 누적 실행 시간 랭킹: 쿼리별 응답 시간과 실행 횟수
-
쿼리별 상세 정보: 실행 횟수, 누적 실행 시간, 응답 시간 히스토그램 등
로그 활용
- 에러 로그는 주기적으로 검토하여 잠재적 문제 파악
- 제너럴 로그는 필요할 때만 일시적으로 활성화 (성능 영향 고려)
- 슬로우 쿼리 로그는 지속적으로 모니터링하여 성능 개선 포인트 파악
- pt-query-digest 등의 도구를 활용하여 로그 분석 효율화
참고 내용
- Real MySQL 8.0 1권 (백은빈, 이성욱)