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에 등록하시면 됩니다. 일주일에 한번정도의 실행이 적당하겠네요.
번호 제목 글쓴이 날짜 조회 수
45 MySQL 원격 접속이 이뤄지지 않는다면? 호스트웨이 2012.07.13 10736
44 MySQL Table 상태 확인, 복구 및 최적화 호스트웨이 2015.09.11 10902
43 Mysql DB 생성 및 사용자 추가 호스트웨이 2012.03.23 11144
42 [mysql] /tmp/mysql.sock이 없다고 DB접속이 안되는 경우 호스트웨이 2015.09.21 11173
41 MySQL 설치 시 checking "LinuxThreads"… "Not found" 에러 발생 시 호스트웨이 2012.09.21 11309
40 mysql 로그 삭제하기 호스트웨이 2012.07.20 11497
39 Mysql banchmark tool – sysbanch 설치하기 호스트웨이 2012.07.06 11543
38 MYSQL의 "too many connections" 에러 해결법 호스트웨이 2015.09.10 11793
37 MySQL Bash 스크립트를 활용한 로컬 백업 호스트웨이 2016.02.04 12402
36 안전한 MySQL 접속하기 file 호스트웨이 2012.06.22 13056
35 MariaDB, MySQL 의 InnoDB 엔진 백업 솔루션 xtrabackup 호스트웨이 2015.05.07 13867
34 Mysql - 원격 접속 지연 발생시 호스트웨이 2012.08.03 14014
33 심볼릭 링크를 이용한 mysql 데이터 디렉토리 위치 변경 호스트웨이 2012.03.23 14315
32 MySQL-5.5 설치하기 호스트웨이 2012.04.27 15711
31 Ubuntu mysql 삭제/재설치 호스트웨이 2015.09.04 16828
30 DB접속시 DNS 관련 오류 호스트웨이 2015.09.25 18276
29 MySQL Table 이 깨졌을 때 복구하는 방법 호스트웨이 2012.03.16 18665
28 mysql의 table이 깨졌다는 메시지가 출력됩니다. sylee 2008.05.15 18875
27 show processlist의 state 종류 호스트웨이 2012.05.11 19263
26 My SQL 사용자 추가 호스트웨이 2008.05.19 19265