[MySQL] 무한정 늘어나는 log-bin 파일 줄이기 - 리눅스 2011. 1. 22. 03:05
공유하기 |
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 -u root -p -e "PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 30 DAY)"Enter password:
물론 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에 등록하시면 됩니다. 일주일에 한번정도의 실행이 적당하겠네요.
---------------------------------------------------------------------------------------------
파일이 커서 저장하지 안을려면 my.cnf 에서 log-bin 된부분을 주석 처리 해야 되고
파일 위치를 바꾸고 싶다면 log-bin = /usr/~~/file 처럼 주소를 적어주면 된다.
생성된 파일은 복구에도 사용이 가능하다.
기본적으로는
/usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/var/localhost-bin.000001 > bakcup.sql
식으로 파일을 일반 쿼리로 컨버팅 가능하다...
사용할 만한 옵션으로는
-d 데이타베이스명 이건 특정 데이타베이스만 가져온다.
/usr/local/mysql/bin/mysqlbinlog --start-datetime="2008-12-30 01:00:00" --stop-datetime='2009-01-10 01:00:00' /usr/local/mysql/var/localhost-bin.000001 > bakcup.sql
이건 시간을 지정해서 그부분만을 가져온다...
가져온걸 다시 디비로 넣을때는 .
/usr/local/mysql/bin/mysql -u 사용자 -p < backup.sql
[출처] [MySQL] 무한정 늘어나는 log-bin 파일 줄이기 |작성자 매직크레용
'리눅스' 카테고리의 다른 글
apache2 설정 (0) | 2014.03.30 |
---|---|
CentOS 6 릴리즈 (0) | 2011.10.22 |
SSH 포트 변경 (1) | 2010.11.09 |
리눅스 서버시간 수정하기(date) (0) | 2010.11.09 |
ssh 접속시 root 접속 못하게 설정 (0) | 2010.11.02 |
|
|