본문 바로가기

DB/My-sql

크론탭으로 자동으로 오래된 파일 지우기

크론탭으로 자동으로 오래된 파일 지우기


출처: http://blackbull.tistory.com/63

mysql bin-log 가 많이 쌓여서, 디스크를 꾹꾹 채워가는 것이 마음에 걸린다.

로그를 자동으로 지우고 싶다...

그래서 고수님이 일전에 가르쳐 주신, 리눅스 명령어를 이용해 크론탭을 걸어주었다.

## CRONTAB ##########################################################################
0 0 * * * (find /db/mysql/mysqllog/mysql-bin.* -ctime +14 -exec rm -rf {} \;) 
#######################################################################################

의미인 즉슨, 

 0 0 * * * 매일 자정에
 find /db/mysql/mysqllog/mysql-bin.* /db/mysql/mysqllog/ 에 있는 mysql-bin 이란 이름을 갖는 모든 파일 중
 -ctime +14 최종 수정시간이 14일이 넘는다면
 rm -rf {} \; 지우시오~



흠... 이제 디스크 풀났다구 걱정할 필요는 없다.

***** 추가 ********************************************************
아.. MySQL 리퍼런스를 백날 읽고, 서버 스테이터스랑 베리어블을 백날 봐도 무슨 소용인가 ㅠ,.ㅠ
무식하면 3대가 내리 고생한다고... 

MySQL 에서 글로벌 변수 logs를 찾아보자.

mysql> SHOW GLOBAL VARIABLES LIKE '%logs%'; 
+------------------+-------+
| Variable_name    | Value   |
+------------------+-------+
| expire_logs_days | 60       |
+------------------+-------+
1 row in set (0.03 sec)

MySQL에서는 로그가 오래되면 자동으로 삭제하게 해주는, expire_logs_days 가 있다.

동적으로 변경이 가능한 변수이므로,
1.     SET GLOBAL expire_logs_days = 60;
라고 입력해도 바로 적용 되고,

2.     my.cnf 의 [mysqld] 영역에 
-----------------------------------------------
        [mysqld]
        # generic configuration options
        port            = 3306
        socket          = /tmp/mysql.sock
        skip-character-set-client-handshake
        character-set-filesystem = utf8
        default-character-set = utf8
        skip-locking
        expire_logs_days = 60
        federated
------------------------------------------------
라고 추가해 주고 mysql을 재시작해도 된다.

mysql의 로그는 예민한 영역이 될 수 있으므로, 
시스템이 권장하는 방식으로 로그를 관리하도록 하자. 

'DB > My-sql' 카테고리의 다른 글

mysql 수정, 삭제,  (0) 2016.02.05
mysql 한글문제  (0) 2016.02.05
mysql import / csv파일 import mysql  (0) 2016.02.05
mysql 백업 복구  (0) 2016.02.05
SP, FUNC, VIEW 백업  (0) 2016.02.05