Database/Mysql

[Real MySQL] 4-4. 아키텍쳐: MySQL 로그 파일

noahkim_ 2023. 11. 24. 21:46

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다.

 

1. 에러 로그 파일

  • 실행되는 도중에 에러나 경고로 인해 출력되는 메시지 파일을 의미합니다.
  • datadir에 .err 확장자로 생성됨

 

서버 시작 관련

변수명을 인식하지 못한 경우
특정 변수가 무시된 경우

 

트랜잭션 복구 메시지 (비정상적으로 종료된 경우)

재처리 작업 과정
  • 서버가 비정상적으로 종료된 경우 재시작 시, 트랜잭션 복구를 시도함

 

완료되지 못한 트랜잭션을 정리
  • 서버가 종료되기 전에 완료되지 못한 트랜잭션을 정리하여 데이터 무결성을 유지함

 

디스크 기록
  • 서버가 정상적으로 재시작되었을 때, 복구하는 과정이 로그에 남음

 

쿼리 에러 메시지

쿼리 도중 발생하는 문제점이 기록

 

커넥션 메시지 (비정상적으로 종료된 경우)

클라이언트가 애플리케이션에 접속하지 못할 경우
  • ex) 커넥션 갯수가 max_connect_errors 값이 넘어가면 연결 불가

 

상태 조회 명령의 결과 메시지

테이블 모니터링
SHOW TABLE STATUS

 

락 모니터링
SHOW ENGINE INNODB STATUS

 

InnoDB 스토어드 엔진 조회

 

종료 메시지

정상 종료될 경우
  • "Received SHUTDOWN from user..." 라는 메시지 출력

 

비정상 종료될 경우
  • ex) 세그먼테이션 폴트 시, 스택 트레이스와 같은 내용이 출력됨

 

2. 제너럴 쿼리 로그 파일

  • MySQL에서 수행한 모든 쿼리를 기록하는 로그 파일
  • 디버깅 용도로 사용되며, 쿼리 실행 내역을 추적할 때 유용

 

활성화

실행 중 활성화
SET GLOBAL general_log = 'ON';
  • 시스템 변수 셋팅
    • general_log: 제너럭 쿼리 로그 활성화 여부
    • general_log_file: 쿼리 로그 파일의 경로
    • log_output: 쿼리 로그를 파일에 저장할지 테이블로 저장할지 설정 (FILE / TABLE)
  • 테이블
    • mysql.general_log

 

MySQL 설정 파일에서 활성화
[mysqld]
general_log=1
general_log_file=/usr/local/var/mysql/general.log
log_output=FILE
  • 설정 파일 수정하기 (my.cnf or my.ini)

 

3. 슬로우 쿼리 로그

  • 실행 시간이 오래 걸린 쿼리만 기록하는 로그
  • 쿼리 튜닝 및 DB 성능 최적화에 매우 유용함

 

활성화

실행 중 활성화
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;  -- 2초 이상 걸리는 쿼리만 기록
  • 시스템 변수 셋팅
    • slow_query_log: 슬로우 쿼리 활성화 여부
    • long_query_time: 해당 시간 이상으로 걸리는 쿼리만 로깅
    • log_output: 슬로우 쿼리 로그를 파일로 할지 테이블로 할지 결정합니다.
  • 테이블
    • mysql.slow_log

 

MySQL 설정 파일에서 활성화
[mysqld]
slow_query_log=1
slow_query_log_file=/usr/local/var/mysql/slow_query.log  # 로그 파일 경로
long_query_time=2  # 2초 이상 걸리는 쿼리만 기록
log_output=FILE  # FILE(파일) 또는 TABLE(테이블 저장)
  • 설정 파일 수정하기 (my.cnf or my.ini)