Linux DB

MySQL에서 사용하는 log-bin이라는 옵션은 사용된 쿼리들이 로깅되는 파일이며 Innodb 혹은 Replication등에서 사용되곤 합니다.

하지만 이 파일의 문제는 무한정 늘어난다는 것입니다. relay-log-space-limit 같은 옵션이 있지만 이 옵션은 Replication에서 사용되는 relay-log-bin의 용량을 제한 하는 옵션이지 해결책이 되지 못합니다.

하지만 이 파일을 정리하는 방법이 있습니다. 우선 다음의 Query를 사용하는 것입니다.

PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 30 DAY)

INTERVAL에서는 원하시는 로깅 시점을 기록하시면 됩니다. 위의 경우에는 30일 이전의 로깅 정보를 삭제하게 됩니다.

차례차례 해보도록 하겠습니다.

1. 현재의 하드디스크 용량 상태를 확인합니다.

[root@Theeye db]# df -h 
Filesystem            Size  Used Avail Use% Mounted on 
/dev/sda1              18G  1.9G   15G  12% / 
/dev/sda3              15G  803M   13G   6% /home 
/dev/sda2              97G   78G   15G  85% /usr/local/mysql/db

데이터베이스 공간이 85%나 사용되어 곧 꽉찰지도 모른다는 불안감에 휩싸이게 되었습니다.

2. log-bin 파일을 확인해 봅시다.

[root@Theeye db]# ls mysql-bin.* 
mysql-bin.000001  mysql-bin.000002  mysql-bin.000003 ......  mysql-bin.000073

파일이 엄청나게 많이 있습니다.

3. 다음 명령어를 수행합니다.

mysql -e "PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 30 DAY)"

물론 mysql에 접속하셔서 위의 명령어를 입력하셔도 됩니다. Super권한을 가진 root계정으로 실행해 주세요.

4. log-bin 파일이 줄었나 확인해 봅시다.

[root@Theeye db]# ls mysql-bin.* 
mysql-bin.000041  mysql-bin.000042  mysql-bin.000043 ......  mysql-bin.000073

41번 이전의 파일들이 모두 삭제 되었습니다. 41번 부터가 최근 30일 이내의 로그정보가 남아있는 모양이군요.

5. 하드디스크 용량 상태를 확인해 봅시다.

[root@Theeye db]# df -h 
Filesystem            Size  Used Avail Use% Mounted on 
/dev/sda1              18G  1.9G   15G  12% / 
/dev/sda3              15G  803M   13G   6% /home 
/dev/sda2              97G   40G   53G  43% /usr/local/mysql/db


주기적인 실행이 필요하실 경우에는 위의 명령어를 crontab에 등록하시면 됩니다. 일주일에 한번정도의 실행이 적당하겠네요.
번호 제목 글쓴이 날짜 조회 수
25 MySQL 설치 시 checking "LinuxThreads"… "Not found" 에러 발생 시 호스트웨이 2012.09.21 11309
24 [mysql] /tmp/mysql.sock이 없다고 DB접속이 안되는 경우 호스트웨이 2015.09.21 11173
23 Mysql DB 생성 및 사용자 추가 호스트웨이 2012.03.23 11144
22 MySQL Table 상태 확인, 복구 및 최적화 호스트웨이 2015.09.11 10900
21 MySQL 원격 접속이 이뤄지지 않는다면? 호스트웨이 2012.07.13 10736
20 chive – phpMyAdmin 보다 좋은 ! 호스트웨이 2012.05.18 10621
19 mysql replication을 이용한 DB 백업 동기화 에러 발생시 (slave db 1062 error) 호스트웨이 2015.09.09 8981
18 MySQL 보안을 위한 전용관리계정으로 MySQL 관리하기 호스트웨이 2015.09.08 8956
17 [mysql] table 백업 호스트웨이 2015.09.21 7801
16 Client does not support authentication protocol requested by server 메시지 발생 시 호스트웨이 2012.10.18 7604
15 MYSQL 동시접속자수 늘리기 호스트웨이 2015.09.18 7319
14 [Oracle] 대량 자료 조회 Parallel 호스트웨이 2015.09.26 7244
13 mysql-5.5.x 에서 character-set 변경 호스트웨이 2012.12.07 7200
12 [MySQL] 쿼리 한 번으로 데이터베이스 용량 알아내기 file 호스트웨이 2012.11.16 7154
11 [mysql] 작은 용량의 파일 로드 속도가 느려진 경우 호스트웨이 2015.09.22 7104
10 MySQL에서 Query Cache 사용하기 호스트웨이 2012.12.20 7088
» [MySQL] 무한정 늘어나는 log-bin 파일 줄이기 호스트웨이 2012.11.23 7057
8 MySQL DB 옵티마이저 사용법 호스트웨이 2015.09.18 6858
7 Mysql에서 log-slow-queries 로그 남기기 호스트웨이 2012.09.21 6813
6 phpmyadmin에서 'mcrypt 확장모듈을 불러올 수 없습니다' 에러 시 file 호스트웨이 2012.11.29 6658