[MySQL] 바이너리 로그 실시간 삭제
마스터에 생성되는 바이너리 로그 삭제에 대한 것이다.
MySQL, 마리아DB 바이너리 로그 실시간 삭제
마스터 슬레이브 구조에서 슬레이브에서 데이터를 가져가기 위해서 필요한것이 마스터에서 생성되는 바이너리 로그인데 너무 많아 지면 용량이 부족하여 더 큰 문제가 발생 할 수 있기 때문에 이에 대한 관리가 필요하다.
날짜 설정
/etc/my.cnf에서 설정하면 재시작해야 적용이 되기 때문에 재시작 없이 적용을 시키고 싶은 경우 이렇게 해주면 된다.
mysql> set global expire_logs_days=12;
설정된 값 확인하기
mysql> show variables like "%expire_logs_days%";
바이너리 로그 목록
현재 저장되어 있는 로그의 목록을 보여주는데 시스템의 mysql-bin.index 파일의 내용과 동일하다.
mysql> show binary logs;
서버 멈춤 없이 바이너리 로그 삭제
파일명은 /etc/my.cnf에서 설정하는 형태에 따라 버전에 따라 약간 다를 수 있는점 참고 하면 되며 아래와 같을 경우 mysql-bin.000012 이전의 파일을 모두 삭제 한다.
즉, 지정된 파일명은 삭제 되지 않고 이전의 인덱스에 해당하는 파일만 삭제가 된다.
mysql> purge master logs to 'mysql-bin.000012';
시스템에서 수동으로 삭제 할때는 mysql-bin.index 파일열어서 삭제할 파일의 행을 삭제 하고 실제 파일을 삭제하면 된다. 만약 이것이 일치하지 않으면 시작되지 않고 오류를 보게 될 것이다.
영구설정
vim /etc/my.cnf 파일을 열고 아래 부분을 수정해 주면 된다.
[mysqld]
...
expire_logs_days = 12
...
이렇게 설정하고 확인해 보면 바로 삭제가 안된것을 알 수 있다. 언제 삭제가 되나 궁금할 수 있는데. 다음 인덱스에 해당하는 바이너리 로그 생성 될때 삭제 된다.