본문 바로가기
IT

MariaDB Binary Log 수동 삭제 및 자동 삭제 스케줄 등록

by Wiblee 2025. 1. 31.

 MariaDB Binary Log 수동 삭제

MariaDB 쿼리량이 많아서 파일시스템이 풀차버렸다. 어디가 늘었나 보았더니 시스템 장애가 나면 복원하기 위해 백업하는 DB 바이너리 로그 파일들이 많이 있었다. 'mysql-bin.00000X' 숫자가 순차적으로 붙으며, 쿼리량이 많으면 파일들이 계속 늘어난다.

# cd {DB설치경로}/dbdata/

이 바이너리 로그를 삭제하는 방법은 다음과 같다.

# mysql
> show binary logs;
> purge binary logs to 'mysql-bin.000089';
> show binary logs;

이렇게 하면 입력한 로그명 이전까지 삭제된다.

바이너리 로그는 최초 설치에 설정을 하지 않으면 삭제되지 않고 계속 늘어난다(default 30일). 따라서 삭제주기 스케줄을 해 놓는 것이 좋다. 전역변수 ;expire_logs_days'에 삭제주기(일수)를 입력하면 된다. 우리 시스템은 처음에는 매일 밤 일일 백업을 받고 있으므로 1일로 설정하였다.

# mysql
> show variables like '%expire_logs_days%';
> set global expire_logs_days=1;
> show variables like '%expire_logs_days%';

 

하지만 그 크기가 어마어마하여 사이즈를 더 작게 유지할 필요가 있었다. 위 변수는 일 단위로만 지정이 가능하기 때문에 다른 방법을 찾아봐야 했는데, 알고보니 MySQL 8부터는 binlog_expire_logs_seconds 변수에 초 단위로 지정할 수 있다. 0.5일, 즉 12시간만 보관하려면 43200(초)로 지정하면 된다.

# mysql
> show variables like 'binlog_expire_logs_seconds';
> set global binlog_expire_logs_seconds=43200;
> show variables like 'binlog_expire_logs_seconds';
 

mysql 콘솔에서 루트 접속 후 입력한 내용은 DB가 재기동되면 초기화된다. 즉 설정을 영구적으로 반영하려면 my.cnf 설정파일에 기록해야 한다.

# vi my.cnf

 [mysqld]
 ...
 binlog_expire_logs_seconds=43200
 ...
 

'IT' 카테고리의 다른 글

meminfo MemFree 늘리기  (0) 2025.01.31
RHEL8부터 ntpd를 대체한 chrony  (0) 2025.01.31
MariaDB 이벤트 스케쥴 생성  (0) 2025.01.31
import pandas as pd 시 ImportError가 나는 경우  (0) 2022.11.14
Rocky Linux 부팅 USB 만드는 방법  (0) 2022.10.05

댓글