MySQL general 로그를 logrotate 로 관리하기

리눅스/MySQL|2019. 6. 4. 12:06
반응형

1. general 로그 설정

 

[root@sysdocu ~]# vi /etc/my.cnf

[mysqld]

general_log_file  = /usr/local/mysql/data/general.log

general_log  = 1

 

 

2. logrotate 설정

 

[root@sysdocu ~]# vi /etc/logrotate.d/mysql

/usr/local/mysql/data/general.log {

    daily

    rotate 1    // 사용중인것 말고 날짜로 된것 하나만 보관하도록 한다

    dateext

    missingok

    sharedscripts

    create 660 mysql mysql

    postrotate

        /usr/local/mysql/bin/mysqladmin -uroot -p'00000000' flush-logs

    endscript

}

 

[root@sysdocu ~]# chmod 640 /etc/logrotate.d/mysql

 

강제 실행 테스트

[root@sysdocu ~]# logrotate -f /etc/logrotate.d/mysql

 

 

3. 로그 압축 백업 설정

 

용량이 큰 general 로그를 압축하여 보관하도록 한다.

 

[root@sysdocu ~]# vi /etc/crontab

59 23 * * * root sh /root/general_log.sh

 

[root@sysdocu ~]# vi /root/general_log.sh

!#/bin/bash

 

find /data2/general_log/ -ctime +200 -print -exec rm -f {} \;

date=`date +%Y%m%d`

tar cvzf /data2/general_log/general_log_${date}.tar.gz /data1/general.log-${date}

 

exit 0

 

[root@sysdocu ~]# chmod 700 /root/general_log.sh

 

반응형

댓글()