일주일 동안의 로그를 저장하기 위하여 매일 새벽에 crontab에서 쉘을 수행하여 파일이름을 변경 함.
1. 이름이 변경되지 않는 로그파일 관리
# 로그 파일 이름 변경 스크립트
[root@mmysql ~]# cat rotate_fixed_log.sh #!/bin/sh #Change log name
#Argument 1 : logfile name
if [ $# -ne 1 ] ; then echo "Usage : $0 logfilename " 1>&2 exit 1 fi
logname=$1
mv $logname.6 $logname.7 mv $logname.5 $logname.6 mv $logname.4 $logname.5 mv $logname.3 $logname.4 mv $logname.2 $logname.3 mv $logname.1 $logname.2 mv $logname $logname.1
mysqladmin flush-logs
# 사용방법
[root@mmysql ~]# ./rotate_fixed_log.sh /var/lib/mysql/mmysql-slow.log mv: cannot stat `/var/lib/mysql/mmysql-slow.log.6': No such file or directory mv: cannot stat `/var/lib/mysql/mmysql-slow.log.5': No such file or directory mv: cannot stat `/var/lib/mysql/mmysql-slow.log.4': No such file or directory mv: cannot stat `/var/lib/mysql/mmysql-slow.log.3': No such file or directory mv: cannot stat `/var/lib/mysql/mmysql-slow.log.2': No such file or directory mv: cannot stat `/var/lib/mysql/mmysql-slow.log.1': No such file or directory
처음 수행하는 스크립트라서 1,2,3,4,5,6, 파일이 존재 하지 않아서 나는 에러
# 수행 결과
[root@mmysql ~]# ls -al /var/lib/mysql/mmysql-slow* -rw-r----- 1 mysql mysql 183 Dec 9 15:45 /var/lib/mysql/mmysql-slow.log -rw-r----- 1 mysql mysql 507772 Dec 9 15:33 /var/lib/mysql/mmysql-slow.log.1
# 매일 새벽 00:00 시에 로그파일 백업하도록 crontab에 등록
[root@mmysql ~]# crontab -e 0 0 * * * /root/rotate_fixed_log.sh /var/lib/mysql/mmysql-slow.log
|
2. 일반로그나 슬로우 쿼리 로그를 테이블로 output 해 놓았을 경우 처리
# 사용 스크립트 (purge_log_tab.sql)
use mysql ;
DROP TABLE IF EXISTS general_log_tmp , general_log_old ; CREATE TABLE general_log_tmp like general_log ; RENAME TABLE general_log TO general_log_old , general_log_tmp TO general_log ;
DROP TABLE IF EXISTS slow_log_tmp , slow_log_old ; CREATE TABLE slow_log_tmp like slow_log ; RENAME TABLE slow_log TO slow_log_old , slow_log_tmp TO slow_log ;
# 매일 새벽 00:01 시에 로그 테이블 flush
[root@mmysql ~]# crontab -e 1 0 * * * /usr/bin/mysql -uroot -proot1122 < /root/purge_log_tab.sql
암호 넣는 것이 보안상 이슈가 있을 수 있으므로 root의 홈 디렉터리에 .my.cnf 파일에 [client] user=root password=root1122 추가 후
[root@mmysql ~]# crontab -l 0 0 * * * /root/rotate_fixed_log.sh /var/lib/mysql/mmysql-slow.log 1 0 * * * /usr/bin/mysql -uroot < /root/purge_log_tab.sql
|