MariaDB General_query_log 로테이션 설정 가이드

개요

  • 서버에서 실행되는 SQL 쿼리문을 기록하는 general_query_log 설정이 되어있는 경우 해당 로그파일의 적재와 관리에 대한 가이드입니다.
  • 일반적인 운영환경에서 디버깅용으로 사용하되, 로그파일의 크기에 의한 디스크 용량 부하를 유의하십시오.

임시로 활성화하는 경우 ( 실시간 )

  • mariadb 접속

    1. 로그 활성화
    SET GLOBAL general_log = ON;
    
    2. 로그 저장 방식 결정 (FILE 또는 TABLE)
    SET GLOBAL log_output = 'FILE';
    
    3. 디버깅 후 비활성화
    SET GLOBAL general_log = Off;
    

로그파일 적재 설정 ( 영구 설정 )

  • /etc/my.cnf.d/server.cnf 파일 설정

    [mariadb]
    # 일반 쿼리 로그 활성화
    general_log = 1
    
    # 로그 파일 저장 경로 (원하는 경로로 지정 가능)
    general_log_file = /var/log/mysql/mariadb-general.log
    
    # 로그 저장 방식
    log_output = FILE
    

로테이션 설정 ( 영구 설정 )

  • 적재 설정만하면 로그파일이 한 개의 파일에 지속적으로 적재되어 유지관리가 힘들어짐

  • 1일 단위 파일분리 및 삭제 주기 등 설정

  • /etc/logrotate.d/mariadb 파일 내 수정

    /var/log/mariadb/general_query.log {
        daily              # 매일 실행
        rotate 3           # 3일치 로그 보관 후 삭제
        missingok          # 로그 파일이 없어도 에러 미발생
        notifempty         # 내용이 없으면 순환하지 않음
        compress           # 구버전 로그 압축 (.gz)
        delaycompress      # 최근 로그 하나는 압축 제외 (사용 중일 수 있으므로)
        sharedscripts
        postrotate         # 로그 분할 후 MariaDB에 새 파일 쓰라고 신호 보냄
            /usr/bin/mariadb-admin flush-logs
        endscript
    }
    

향후 MariaDB를 재시작하여 설정내용을 적용