[MySQL] Audit Log, Slow Query, Error Log 정리

2026. 3. 27. 10:27·Database | SQL | OS/MySQL | Maria

오늘은 MySQL 에서 장애 상황을 파악하기에 매우 중요한 Audit Log, Slow Query Log, Error Log를 정리해보려 합니다. 

장애 상황이 생겼을 때나, 성능에 문제가 발생했을 때, Long Running Query가 발생했을 때 꼭 살펴봐야 합니다. 

 

아래는 MySQL 의 공식 매뉴얼 문서입니다. 참고하면 좋을듯 하여 첨부합니다. 

 

MySQL :: MySQL 8.4 Reference Manual :: 7.4.2 The Error Log

This section discusses how to configure the MySQL server for logging of diagnostic messages to the error log. For information about selecting the error message character set and language, see Section 12.6, “Error Message Character Set”, and Section 1

dev.mysql.com

 

MySQL :: MySQL 9.6 Reference Manual :: 7.4.5 The Slow Query Log

7.4.5 The Slow Query Log The slow query log consists of SQL statements that take more than long_query_time seconds to execute and require at least min_examined_row_limit rows to be examined. The slow query log can be used to find queries that take a long

dev.mysql.com

 

MySQL :: MySQL 8.4 Reference Manual :: 8.4.5 MySQL Enterprise Audit

8.4.5 MySQL Enterprise Audit Note MySQL Enterprise Audit is an extension included in MySQL Enterprise Edition, a commercial product. To learn more about commercial products, see https://www.mysql.com/products/. MySQL Enterprise Edition includes MySQL Ente

dev.mysql.com

 


개요

Audit MySQL (감사 로그), Error Log (에러 로그), Slow Query Log (슬로우 쿼리 로그) 는 기본적으로 Maria, MySQL의 이슈가 발생하였을때 확인하는 매우 기본적인 로그 입니다. 

 

오늘은 AWS 환경에서의 이 3가지 로그가 로깅되는 것, 그리고 관련 파라미터를 함께 공부해보고자 합니다. 

우선 인스턴스 생성시에 아래 로그 내보내기를 체크하게 되면 CloudWatch에서 로그를 저장하게 됩니다. 하지만 이것도 과금이 되니 참고해서 체크하시면 됩니다. 

AWS 에서의 로깅 설정
AWS 로그 생성

Audit Log란 ?

우선 Audit Log는 감사 로그로, Database 서버 내에서 발생하는 모든 사용자 활동과 데이터 접근 내역을 추적하고 기록하는 보안 및 모니터링, 규제 목적의 로그 성격을 띕니다. AWS 에서는 아래와 같이 server_audit_logging 으로 제어하게 됩니다. 

 

하지만, 개요에서 확인한 것 처럼 로그 내보내기를 진행하지 않는다면 Audit Log와 Error Log, Slow Query Log가 발생하더라도 Cloudwatch 에 로깅되지 않아서 확인할 수가 없습니다.

Audit Log 활성화

하지만, EC2 에서 설치된 Maria, MySQL 이나 On-Prem 환경의 MySQL 인 경우에는 사용자가 설정한 폴더에 Log 들이 로깅되며 별도의 과금 없이도 사용자가 확인 할 수 있습니다. 

 

Audit Log (감사 로그)의 동작 원리 및 특징

  • 데이터베이스에 접속하는 행위 (Connection 성공,실패), SQL 쿼리 실행 (DML, DDL, DCL) 등 시스템 레벨의 모든 이벤트를 파일이나 시스템 로그 형태로 저장합니다.
  • MySQL, Maria Community 에서는 기본적으로 제공되진 않고 Maria DB Audit PlugIn을 설치하거나 활성화 시켜주어야 합니다. (기본적으로 내재되어있는 플러그인 이지만, 사용자가 사용 가능하도록 설치는 진행해야합니다.)
 

MariaDB Community Audit Plugin | Server | MariaDB Documentation

Complete MariaDB Audit Plugin reference: server_audit activity logging, connection/query event tracking, file/syslog output, and compliance configuration.

mariadb.com

 

성능적 고려사항

  • 모든 트랜잭션과 쿼리를 로깅하므로 Disk I/O 나 CPU를 점유할 수 있으며 쿼리가 많거나 사용량이 많은 Database인 경우 로깅 데이터가 많은 용량을 차지할 수 있습니다.
  • 운영 환경에서는 Audit Log에 대한 전체 로깅을 피하고 특정 User를 배제하는 server_audit_excl_users 옵션을 사용하여 필터링 하거나, 특정 명령어 (DDL 등) 만을 기록하도록 설정하는 것이 권장됩니다. 

AWS 에서는 아래와 같은 Format 으로 Audit Log가 로깅됩니다. Query DDL,DML, DCL이 모두 포함된 경우는 빨간색 상자와 같은 포맷으로 출력되고, TABLE 에 대한 변경사항을 기록할 때에는 파란색 상자와 같은 포맷으로 출력됩니다. 

AWS 에서 Audit Log 로깅 형태

 

Error Log란?

Error Log는 데이터베이스 프로세스 (mysqld) 자체가 구동되거나 동작하는 과정에서 발생하는 시스템 레벨의 상태 변화와 치명적인 오류를 기록하는 가장 기본적인 로그입니다.

Error Log (에러 로그)의 동작 원리 및 특징

  • 데이터베이스 서버의 시작(Startup) 및 정상/비정상 종료(Shutdown) 프로세스를 상세히 기록합니다.
  • InnoDB 스토리지 엔진의 크래시 복구(Crash Recovery) 과정, 메모리 할당 실패(OOM), 테이블 손상(Corruption), 복제(Replication) 스레드 끊김 현상 등 서비스 장애와 직결되는 물리적/구조적 에러가 모두 이곳에 남습니다.
  • 별도로 설정을 끄지 않는 한 기본적으로 활성화되어 있으며, log_error 시스템 변수를 통해 저장 경로를 지정합니다.

aborted connection 등 에러 로그 출력 모습

실무적 활용도

  • 인프라 엔지니어나, Database Administrator가 DB 장애 발생시 (Down, BinLog Corruption 등) 원인 파악 및 원인 규명을 위해 1순위로 확인해야 하는 로그이기도 합니다.
 

MySQL :: MySQL 8.4 Reference Manual :: 7.4.2 The Error Log

This section discusses how to configure the MySQL server for logging of diagnostic messages to the error log. For information about selecting the error message character set and language, see Section 12.6, “Error Message Character Set”, and Section 1

dev.mysql.com

Slow Query Log란?

Slow Query Log는 쿼리 최적화 및 성능 튜닝을 위해, 실행 완료까지 특정 시간 이상 소요된 비효율적인 SQL 문을 기록하는 로그입니다.

Slow Query Log 의 동작 원리 및 특징

  • 관리자가 설정한 long_query_time 변수 값을 초과하여 실행된 쿼리만 선별하여 로그 파일에 로깅 됩니다. (Second 단위)
  • 단순히 쿼리 문장뿐만 아니라, 해당 쿼리가 실행된 시간(Query_time), 락을 대기한 시간(Lock_time), 쿼리 처리를 위해 읽어들인 행의 수(Rows_examined), 실제 클라이언트에게 반환한 행의 수(Rows_sent)를 함께 기록하여 성능 병목의 원인을 수치화하여 제공합니다.

Slow Query Log (실제 Query 항목은 블라인드 처리 하였습니다.)

실무적 활용 방법

  • log_queries_not_using_indexes 옵션을 활용하여 인덱스를 사용하지 않는 모든 쿼리를 Slow Query Log에 기록할 수 있습니다. 인덱스를 정상적으로 수행하지 않음으로써 발생할 수 있는 잠재적인 성능 저하를 사전에 파악하기에 용이합니다.

분석의 한계점

  • 트래픽이 많고 느린 쿼리가 많은 대용량 서버에서는 슬로우 로그 파일의 크기가 매우 커져서 직접 확인하기가 매우 어렵습니다. mysqldumpslow 같은 파싱 툴을 사용하여 동일한 형태의 쿼리를 그룹화하고 실행 횟수나 평균 시간을 기준으로 정렬하여 분석하는 것이 표준 프로세스입니다. 

보통은 my.cnf 파일에서 로그의 위치를 설정하고 거기에서 데이터를 적재합니다. 하지만 AWS의 경우에는 CloudWatch로 로그를 전송하고, 그 과정에서도 비용이 발생합니다. 보통 출력되는 로그의 형태는 아래와 같습니다. 

# Time: 2026-03-23T14:45:10.000000Z
# User@Host: root[root] @ localhost []  Id:    45
# Query_time: 5.007123  Lock_time: 0.000100 Rows_sent: 15  Rows_examined: 5100000
SET timestamp=1711205110;
SELECT * FROM users WHERE user_name LIKE '%USER_50000';

 

결론

오늘은 이렇게 Maria, MySQL 장애 상황 판단에서의 중요한 Log Data를 살펴보았습니다. 얼마나 빠르게 로그를 파악하고 조치하느냐에 따라 시스템 안정성을 향상시킬 수 있으니 참고해서 안정적인 시스템 운영을 할 수 있도록 해야겠습니다. 

'Database | SQL | OS > MySQL | Maria' 카테고리의 다른 글

[MySQL] View란?  (0) 2026.04.15
[MySQL] Performance Schema, Information Schema 란?  (0) 2026.03.13
[MySQL] MySQL 스토리지 엔진의 Lock (레코드 락, 갭 락, 네스트 키 락, 자동 증가 락)  (0) 2026.03.10
[MySQL] MySQL 엔진의 Lock 수준 (글로벌 락, 테이블 락, 네임드 락, 메타데이터 락)  (0) 2026.03.05
[MySQL] 동시성 제어 MVCC 란 무엇인가?  (0) 2026.03.03
'Database | SQL | OS/MySQL | Maria' 카테고리의 다른 글
  • [MySQL] View란?
  • [MySQL] Performance Schema, Information Schema 란?
  • [MySQL] MySQL 스토리지 엔진의 Lock (레코드 락, 갭 락, 네스트 키 락, 자동 증가 락)
  • [MySQL] MySQL 엔진의 Lock 수준 (글로벌 락, 테이블 락, 네임드 락, 메타데이터 락)
달달무슨달 쟁반같이 둥근 반달
달달무슨달 쟁반같이 둥근 반달
  • 달달무슨달 쟁반같이 둥근 반달
    반달
    달달무슨달 쟁반같이 둥근 반달
  • 전체
    오늘
    어제
    • 분류 전체보기 (56)
      • Database | SQL | OS (45)
        • Oracle (5)
        • MySQL | Maria (10)
        • MS-SQL (13)
        • SQL 개발공부 (10)
        • Linux OS (1)
        • SQL Tuning (5)
        • SQLD & SQLP (1)
      • NoSQL (0)
        • MongoDB (0)
        • Redis (0)
      • Cloud (11)
        • AWS (10)
        • Azure (1)
        • MongoDB Atlas (0)
      • 취미 (0)
        • 방탈출 (0)
        • 축구 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Oracle
    alwayson
    SQL
    aurora mysql
    오라클
    프로그래머스
    group by
    Inner Join
    mysql
    SQL Server
    튜닝
    AWS
    DBA
    아키텍처
    Maria
    index
    성능
    join
    코딩테스트
    MSsql
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
달달무슨달 쟁반같이 둥근 반달
[MySQL] Audit Log, Slow Query, Error Log 정리
상단으로

티스토리툴바