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 |
댓글