root[mysql]> show binary logs; +------------------+------------+ | Log_name | File_size | +------------------+------------+ | mysql-bin.000035 | 401 | | mysql-bin.000036 | 362 | | mysql-bin.000037 | 1073742328 | | mysql-bin.000038 | 77130306 | +------------------+------------+ 4 rows in set (0.05 sec) root[mysql]> purge binary logs to 'mysql-bin.000038'; Query OK, 0 rows affected (0.10 sec) root[mysql]> show binary logs; 0 row in set (0.14 sec) root[mysql]>
DB에 레코드가 많이 쌓여 테이블 파일의 용량이 증가하는 것도 문제지만, binary log를 초기 세팅대로 방치하면 금방 HDD가 꽉 차게 된다.
data 디렉토리(configure에 따라 다름) 내의 파일들을 보면 binary log가 많이 생성된 것을 알 수 있다.
파일을 rm 명령어로 직접 지우지 말고 mysql 콘솔에서 지우는 것이 바람직하다.
root[mysql]> purge master logs to 'mysql-bin.000186'; Query OK, 0 rows affected (0.91 sec) root[mysql]> show binary logs; +------------------+------------+ | Log_name | File_size | +------------------+------------+ | mysql-bin.000186 | 1073742098 | | mysql-bin.000187 | 1073742018 | | mysql-bin.000188 | 1073742083 | | mysql-bin.000189 | 349742255 | +------------------+------------+ 4 rows in set (0.00 sec)
위 명령어에서 binary 로그 이름을 지정하면 해당 파일 이전의 파일들을 모두 삭제한다.
root[mysql]> set global expire_logs_days=2; Query OK, 0 rows affected (0.00 sec) root[mysql]> SHOW VARIABLES LIKE '%expire%'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | expire_logs_days | 2 | +------------------+-------+ 1 row in set (0.00 sec)
그리고 binary 로그를 저장할 주기를 설정한다.
시스템 사고가 발생해도 근시일 내에 확인할 수 있거나 특별히 백업해 분석할 것이 아니라면 2일 정도면 충분할 것이다.
MySQL Binary Log 는 add, delete, insert, update 등의 query 가 저장되어 있는 파일로서
MySQL을 설치하게 되면 기본적으로 MySQL Binary Log 가 생성된다.
Binary Log 를 쌓지 않아도 되는 MySQL 구동 환경에서는 Binary Log 를 삭제하므로, 디스크 공간 여유 공간을 확보할 수 있는데, MySQL Binary Log 를 지우는 방법은
# MySQL Replication 환경에서 지우기 # MySQL Replication MASTER 서버 [root@gl ~]# mysql -u root -p root[mysql]> RESET MASTER; # MySQL Replication SLAVE 서버 root[mysql]> mysql -u root -p root[mysql]> RESET MASTER; # MySQL Binary Log sequence number 또는 특정 일자로 지우기 [root@gl ~]# mysql -u root -p root[mysql]> PURGE BINARY LOGS TO 'mysql-bin.000015'; [root@gl ~]# mysql -u root -p root[mysql]> PURGE BINARY LOGS BEFORE '2009-05-01 00:00:00'; # mysqladmin flush-logs 명령어를 통해서 MySQL Binary Log 지우기 [root@gl ~]# mysqladmin -u root -p flush-logs # MySQL Binary Log 생성을 방지하는 방법 /etc/my.cnf 파일에서 아래 라인을 주석 처리 log-bin