본문 바로가기

DB/Mysql(MariaDB)

MariaDB - General Log 하루치씩 남기는 방법

728x90

MariaDB의 일반 로그(general_log)를 하루치씩 저장하고 오래된 로그는 자동으로 삭제하는 방법입니다.

Windows에서 .bat 파일과 Linux에서 .sh 스크립트를 사용하여 처리할 수 있습니다. 

 

Windows (Batch 파일)

@echo off

:: 현재 시간을 형식에 맞게 설정 (예: 0830)
set TIME2=%TIME: =0%
set TIME3=%TIME2:~0,2%%TIME2:~3,2%

:: 일반 로그 비활성화
C:\MariaDB\bin\mysql.exe -uroot -p비밀번호 --execute="set global general_log=off"

:: 로그 파일 복사 및 날짜/시간을 파일명에 추가
copy C:\DB_LOG\DB01_history.log C:\Storage\DB_LOG\DB01\DB01_%DATE%_%TIME3%_history.log

:: 원본 로그 파일 삭제
del C:\DB_LOG\DB01_history.log

:: 일반 로그 다시 활성화
C:\MariaDB\bin\mysql.exe -uroot -p비밀번호 --execute="set global general_log=on"

:: 30일 이상 된 로그 파일 삭제
forfiles /P "C:\Storage\DB_LOG\DB01" /M *.log /D -30 /C "cmd /c del @file"
  • 로그 비활성화/활성화: set global general_log=off 및 set global general_log=on 명령을 사용해 로그 기록을 중단하고, 백업이 끝난 후 다시 시작합니다.
  • 로그 파일 복사 및 삭제: 현재 날짜와 시간을 추가하여 로그 파일을 저장하고, 원본 로그 파일을 삭제합니다.
  • 오래된 파일 삭제: forfiles 명령어로 30일 이상 된 로그 파일을 자동으로 삭제합니다.

 

반응형

 

Linux (Shell 스크립트)

#!/bin/sh

LOGDIR=/var/lib/mysql
NAME=db01.log
DateNow="$(date +%Y%m%d)"

# 일반 로그 비활성화
/usr/bin/mysql -uroot -p비밀번호 --execute="set global general_log=off"

# 로그 파일 백업
cp $LOGDIR/$NAME $LOGDIR/$NAME-${DateNow}

# 백업된 로그 파일 압축
sleep 5
gzip $LOGDIR/$NAME-${DateNow}

# 원본 로그 파일 비우기
cat /dev/null > $LOGDIR/$NAME

# 일반 로그 다시 활성화
sleep 5
/usr/bin/mysql -uroot -p비밀번호 --execute="set global general_log=on"

# 30일 이상 된 로그 파일 삭제
find ${LOGDIR} -name "db01*.gz" -mtime +30 -exec rm -f {} \;
  • 일반 로그 비활성화 및 활성화: general_log를 비활성화한 후 로그 파일을 백업하고 다시 활성화합니다.
  • 로그 파일 백업 및 압축: 로그 파일을 날짜별로 백업하고, 압축한 뒤 원본 로그 파일을 비웁니다.
  • 오래된 파일 삭제: find 명령어로 30일 이상된 압축 로그 파일을 자동으로 삭제합니다.

요약

  • MariaDB 로그 관리: 로그를 중단 없이 백업하고 압축하는 방식으로, 하루치씩 로그를 남길 수 있습니다.
  • 30일 이상 된 로그 삭제: 오래된 로그 파일은 자동으로 삭제되어 디스크 공간을 절약할 수 있습니다.
728x90
반응형