linux/DB

mysql logrotate 설정

배움엔 끝이없다 2021. 6. 14. 13:49
728x90
반응형

로그로테이트 설정 옵션

 

  • daily : 일단위로 실행합니다
  • weekly : 주단위로 실행합니다
  • monthly : 월단위로 실행합니다

 

  • rotate 5 : 회전 주기를 설정합니다  (ex. 5일까지 보관)
  • notifempty : 로그파일의 내용이 없을경우 rotate 하지 않습니다
  • missingok : 로그파일이 없을경우 에러메시지를 출력하고 다음으로 실행합니다
  • compress : 로그파일을 압축합니다
  • delaycompress를 넣어주면 로그 파일을 먼저 보관 처리한 후에 압축을 진행
  • sharedscripts : 여러개의 로그파일을 스크립트로 공유하여 실행합니다
  • postrotate : 실행 후 스크립트 파일 실행합니다
  • endscript : 실행 후 스크립트 파일 실행합니다
  • notifempty : 로그파일이 비어있으면 rotate 하지 않는다.
  • create 0664 root utmp : 로그파일을 새로 생성할 때, 0644 권한, root 사용자, utmp 그룹으로 생성한다.

 

ex)   
postrotate

/server/apache2/bin/apachectl graceful

endscript



 

 

 

     예제     

# vi /test/mysql_query_status

/test/mysql.log {
        create 600 mysql mysql
        daily 
        rotate 30 
        missingok 
        dateext 
    postrotate

      if test -x /usr/bin/mysqladmin && \
             /usr/bin/mysqladmin ping -u [사용자] -p [패스워드] & > /dev/null
      then
             /usr/bin/mysqladmin -u [사용자] -p [패스워드] flush-logs
      fi
    endscript
}
  • 파일의 소유주 mysql생성 및 600 권한으로 설정
  • 매일 실행
  • 파일 30개까지 유지
  • 로그파일이 없을 경우 에러메세지를 출력 후 다음 실행
  • 날짜형식으로 분할
  • 실행이 끝나고 할 명령어
  • ㄴ 파일을 mysql에서 계속 붙잡고 있기 때문에 flush로 꼭 한번 리셋 해줘야 함.

 

생성 후 /etc/logrotate.d/ 디렉토리 안에 넣으면 되지만 매일 일정한 시간에 실행되지 않는 단점이 있음

 

 

일정 시간마다 생성하고 싶다면 crontab에 등록

 

# crontab -e

0 2 * * * /usr/sbin/logrotate /test/mysql_query_status -f /test/mysql.log              -> 매일 새벽 2시 실행

 

 

 

 

 

 

728x90
반응형
LIST

'linux > DB' 카테고리의 다른 글

mysql LOCK TABLES 오류  (0) 2021.06.30
mysqlbinlog 사용법  (0) 2021.06.30
mysql - thread concurrency / innodb_thread_concurrency 차이  (0) 2021.06.08
mysql 실시간 쿼리 확인  (0) 2021.06.04
mysql 락 테이블 확인  (0) 2021.06.04