728x90
반응형

일주일 동안의 로그를 저장하기 위하여 매일 새벽에 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

 

 

반응형

+ Recent posts