[SQL] MySQL General/Slow log

DeMar_Beom·2023년 10월 5일
0

SQL

목록 보기
9/17

General log & Slow log

✅ general log와 slow log의 차이를 알아보고 관련 설정 및 조회 방법을 확인

Mysql 로그 종류

  • Error log : MySQL 시작, 실행, 종료 시 발생한 문제 기록
  • General log : 클라이언트 연결 설정 및 실행된 쿼리 기록
  • Binary log : 테이블 생성 및 데이터 변경과 같은 변경 사항을 기록
  • Relay log : 복제 구성 시 마스터의 변경 사항을 기록
  • Slow log : long_query_time 파라미터로 설정된 시간보다 수행시간이 긴 쿼리 기록
  • DDL log : DDL문의 실행을 기록

log_output

  • 쿼리가 어떤 방식으로 쌓일지 설정하는 파라미터
  • General log, Slow log는 Table 혹은 File형식으로 저장
  • TABLE
    • General log = mysql.general_log테이블
    • Slow log = mysql.slow_log테이블
  • FILE
    • 지정된 파일에 로그를 기록
  • NONE
    • 쿼리를 로깅하지 않음
show variables like '%log_output%';

  • 파일 저장 위치를 확인하기 위해서는 my.ini파일을 확인해보면 가능
  • 저는 general_log는 DESKTOP-TFEAOUP.log, slow log는 DESKTOP-TFEAOUP-slow.log라는 파일에 저장

my.ini 파일

  • general-log, slow-query-log 파일 위치

general log파일

slow log파일

general_log

  • general log를 활성화하기 위해서는 my.ini파일에서 'ON'으로 변경하거나 MySQL 클라이언트에서 아래 명령어를 통해 변경할 수 있음
show variables like '%general%';

slow_query_log

  • 슬로우 쿼리도 general_log 는
  • long_query_time : 실행시간 값을 초 단위로 설정 (default : 10, min : 0)
show variables like '%slow_query%';

로그 조회 방법 변경

  • 방법은 my.ini파일에서 변경하거나 MySQL클라이언트에서 CLI를 통해 진행하는 방법 2가지입니다.

1. 설정 파일변경

  • log-output에서 table, file, none 를 입력하여 저장 후 mysql재시작

2. CLI

SET GLOBAL LOG_OUTPUT = 'TABLE';

테이블 로그 조회방법

SELECT event_time,
       user_host,
       thread_id,
       server_id,
       SUBSTRING(argument, 1, 1000) AS argument_text 
FROM mysql.general_log;

  • 저는 여기서 argument_text가 계속 BLOB형태로 표시되었는데 이는 보안 및 성능 관련 이유로 기본 설정이라고 하네요
  • 설정을 몇 개 건드려 봤는데 해결되지 않아서 로그 조회 쿼리를 변경해봤습니다.

참조

https://omty.tistory.com/48
https://myinfrabox.tistory.com/10
Real MySQL 8.0

0개의 댓글