mysql binlog 는 바이너리 로그로써 특정기간을 정해주지 않으면 계속해서 늘어난다.
용량 관리를 위해 my.cnf 파일에 기한을 설정해 놓는것이 좋다.
mysql [(none)] > show variables like 'expire%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| expire_logs_days | 0 |
+------------------+-------+
1 row in set (0.00 sec)
+----------------------------+--------+
| Variable_name | Value |
+----------------------------+--------+
| binlog_expire_logs_seconds | 604800 |
+----------------------------+--------+
1 row in set (0.00 sec)
binlog 현재 상태 확인 / 삭제
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 [(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)
[mysqld]
expire_logs_days = 7
>> mysql 8 버전은 초 단위라 아래처럼 설정 했는데 재기동 하면 에러가 발생한다.
[mysqld]
binlog_expire_logs_seconds = 604800
참고 : 콘솔에서 global로 수정하면 DB 재기동 시 디폴트 값으로 돌아감
mysql [(none)] > set global binlog_expire_logs_seconds=604800;