mysql-bin 파일 삭제

곽동규·2024년 4월 13일

mysql binlog 는 바이너리 로그로써 특정기간을 정해주지 않으면 계속해서 늘어난다.
용량 관리를 위해 my.cnf 파일에 기한을 설정해 놓는것이 좋다.

  • binlog 저장 기한 설정 확인
mysql [(none)] > show variables like 'expire%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| expire_logs_days | 0     |
+------------------+-------+
1 row in set (0.00 sec)
  • mysql 8 버전은 초 단위로 설정이 되어있다. (604800초 - 7일로 설정한 모습)
+----------------------------+--------+
| Variable_name              | Value  |
+----------------------------+--------+
| binlog_expire_logs_seconds | 604800 |
+----------------------------+--------+
1 row in set (0.00 sec)

binlog 현재 상태 확인 / 삭제

  • mysql-bin 현재 파일 확인
mysql [(none)] > show binary logs;
+------------------+------------+-----------+
| Log_name         | File_size  | Encrypted |
+------------------+------------+-----------+
| mysql-bin.000003 | 1512842513 | No        |
| mysql-bin.000004 | 1082057034 | No        |
| mysql-bin.000005 | 1081769487 | No        |
| mysql-bin.000006 | 1138314517 | No        |
| mysql-bin.000007 | 1114045457 | No        |
| mysql-bin.000008 | 1088848084 | No        |
| mysql-bin.000009 | 1073902184 | No        | 중략 
| mysql-bin.000061 | 7535327838 | No        |
| mysql-bin.000062 | 1073833087 | No        |
| mysql-bin.000063 | 1078439803 | No        |
| mysql-bin.000064 | 1080037860 | No        |
| mysql-bin.000065 | 1074963597 | No        |
| mysql-bin.000066 | 1077287115 | No        |
| mysql-bin.000067 |  424821316 | No        |
+------------------+------------+-----------+
65 rows in set (0.00 sec)
  • mysql-bin 파일 삭제
mysql [(none)] > purge master logs to 'mysql-bin.000057'; ---> 57 이전의 로그들까지 삭제

확인 (선택한 000057 이전 파일들 삭제)

mysql [(none)] > show binary logs;
+------------------+------------+-----------+
| Log_name         | File_size  | Encrypted |
+------------------+------------+-----------+
| mysql-bin.000057 | 1073989938 | No        |
| mysql-bin.000058 | 1078974247 | No        |
| mysql-bin.000059 | 1075146060 | No        |
| mysql-bin.000060 | 8148041451 | No        |
| mysql-bin.000061 | 7535327838 | No        |
| mysql-bin.000062 | 1073833087 | No        |
| mysql-bin.000063 | 1078439803 | No        |
| mysql-bin.000064 | 1080037860 | No        |
| mysql-bin.000065 | 1074963597 | No        |
| mysql-bin.000066 | 1077287115 | No        |
| mysql-bin.000067 |  526766337 | No        |
+------------------+------------+-----------+
11 rows in set (0.00 sec)
  • my.cnf 에 expire 기간 7일로 설정
[mysqld]
expire_logs_days = 7
>> mysql 8 버전은 초 단위라 아래처럼 설정 했는데 재기동 하면 에러가 발생한다.
[mysqld]
binlog_expire_logs_seconds = 604800

참고 : 콘솔에서 global로 수정하면 DB 재기동 시 디폴트 값으로 돌아감

mysql [(none)] > set global binlog_expire_logs_seconds=604800;

0개의 댓글