관리 메뉴

투덜이 개발자

mysql-bin(binary log)파일 정리 및 삭제 주기 설정 본문

DataBase/MySQL

mysql-bin(binary log)파일 정리 및 삭제 주기 설정

엠투 2022. 2. 21. 13:03
반응형

mysql-bin(binary log)파일 정리 및 삭제 주기 설정

# mysql-bin(binary log)파일 정리 및 삭제 주기 설정 #

linux 에서 mysql 및 mariadb 설치 후 무한정 늘어나느 log-bin 파일에 대해

파일 정리 및 삭제 주기 설정하는 방법에 대하 설명하겠습니다.

mysql-bin 파일은 db 에서 사용된 쿼리들이 로깅되는 파일이며 Innodb 혹은 Replication등에서 사용되곤 합니다.

linux 에서 db 설치 후 db 경로를 따로 지정하지 않는경우 default 경로는

/var/lib/mysql 입니다.

/ 경로 하위이다 보니 갑자기 어느날 / 경로가 말도 안되게 늘어나 있는 경우가 있습니다.

따로 /db 로 파티셔닝을 한 경우도 마찬가지로 log-bin 파일의 저장 기한을 설정하지 않는 이상

log-bin 파일로 인해 용량이 무한정 늘어날 수 있습니다.

[root@localhost mysql]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        1.9G     0  1.9G   0% /dev
tmpfs           1.9G  4.0K  1.9G   1% /dev/shm
tmpfs           1.9G   13M  1.9G   1% /run
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda2        42G   11G   32G  26% /
/dev/sda1       497M  173M  324M  35% /boot
tmpfs           378M   40K  378M   1% /run/user/0
[root@localhost mysql]# ll mysql-bin.*
-rw-rw---- 1 mysql mysql     723  3월 16 14:07 mysql-bin.000001
-rw-rw---- 1 mysql mysql 1013906  3월 16 14:07 mysql-bin.000002
-rw-rw---- 1 mysql mysql  179012  3월 16 14:25 mysql-bin.000003
-rw-rw---- 1 mysql mysql  181801  3월 17 10:43 mysql-bin.000004
-rw-rw---- 1 mysql mysql   59803  3월 17 13:44 mysql-bin.000005
-rw-rw---- 1 mysql mysql     365  3월 17 16:31 mysql-bin.000006
-rw-rw---- 1 mysql mysql   59803  3월 23 18:42 mysql-bin.000007
-rw-rw---- 1 mysql mysql   59803  7월 15 16:15 mysql-bin.000008
-rw-rw---- 1 mysql mysql  316828  9월  1 09:51 mysql-bin.000009
-rw-rw---- 1 mysql mysql   12269  9월  1 10:12 mysql-bin.000010
-rw-rw---- 1 mysql mysql   65375  9월  1 10:16 mysql-bin.000011
-rw-rw---- 1 mysql mysql   63141  9월  1 10:27 mysql-bin.000012
-rw-rw---- 1 mysql mysql   59803  9월  3 15:02 mysql-bin.000013
-rw-rw---- 1 mysql mysql   59803  9월  7 13:42 mysql-bin.000014
-rw-rw---- 1 mysql mysql   59803  9월  7 13:53 mysql-bin.000015
-rw-rw---- 1 mysql mysql   63374  9월  7 13:58 mysql-bin.000016
-rw-rw---- 1 mysql mysql   59803  9월  7 14:26 mysql-bin.000017
-rw-rw---- 1 mysql mysql  119241  9월  7 14:37 mysql-bin.000018
-rw-rw---- 1 mysql mysql   80258  9월 14 13:52 mysql-bin.000019
-rw-rw---- 1 mysql mysql     361  9월 14 13:44 mysql-bin.index

mysql-bin 파일은 OS 에서 삭제하는것 보다 mysql 콘솔에서 삭제 하는것이 바람직 합니다.

mysql 에서 제공되는 파일이므로 mysql 콘솔에서 삭제하는것이 깔끔합니다.

db 로 접속 합니다.

[root@localhost ~]# mysql -uroot -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 184
Server version: 10.2.37-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> use mysql
Database changed
MariaDB [mysql]>

mysql 로  접속 후 하기 명령어로 확인 가능 합니다.

MariaDB [mysql]> show binary logs;

MariaDB [mysql]> show binary logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |       723 |
| mysql-bin.000002 |   1013906 |
| mysql-bin.000003 |    179012 |
| mysql-bin.000004 |    181801 |
| mysql-bin.000005 |     59803 |
| mysql-bin.000006 |       365 |
| mysql-bin.000007 |     59803 |
| mysql-bin.000008 |     59803 |
| mysql-bin.000009 |    316828 |
| mysql-bin.000010 |     12269 |
| mysql-bin.000011 |     65375 |
| mysql-bin.000012 |     63141 |
| mysql-bin.000013 |     59803 |
| mysql-bin.000014 |     59803 |
| mysql-bin.000015 |     59803 |
| mysql-bin.000016 |     63374 |
| mysql-bin.000017 |     59803 |
| mysql-bin.000018 |    119241 |
| mysql-bin.000019 |     80258 |
+------------------+-----------+
19 rows in set (0.00 sec)

전부 다 삭제하려면 제일 마지막 번호까지 입력해 주시면 됩니다.

*ex)purge master logs to 'mysql-bin.000019';

000014 번 이전의 로그만 삭제해 보겠습니다.

MariaDB [mysql]> purge master logs to 'mysql-bin.000014';

MariaDB [mysql]> purge master logs to 'mysql-bin.000014';
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> show binary logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000014 |     59803 |
| mysql-bin.000015 |     59803 |
| mysql-bin.000016 |     63374 |
| mysql-bin.000017 |     59803 |
| mysql-bin.000018 |    119241 |
| mysql-bin.000019 |     80258 |
+------------------+-----------+
6 rows in set (0.00 sec)

삭제 후 매번 삭제를 하기는 귀찮으니 자동 삭제 주기를 설정하겠습니다.

삭제 주기는 시스템 사고가 발생해도 몇일 내에 확인할 수 있거나 특별히 백업해 분석할 것이 아니라면 2주 정도면 충분 합니다.

 

# 보관주기 확인 #

기존 expire_logs_days 가 '0' 이라면 삭제되지 않고 계속 저장이 됩니다.

MariaDB [mysql]> SHOW VARIABLES LIKE '%expire_logs%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| expire_logs_days | 0     |
+------------------+-------+
1 row in set (0.00 sec)

# 보관주기 14일로 변경 후 다시 확인 #

MariaDB [mysql]> set global expire_logs_days=14;
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> SHOW VARIABLES LIKE '%expire_logs%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| expire_logs_days | 14    |
+------------------+-------+
1 row in set (0.00 sec)

14일이 지난 파일들은 삭제가 됩니다.

아예 생성하고 싶지 않다면 하기 경로로 들어가 log-bin 경로를 주석처리 해주시면 됩니다.

[root@localhost /]# vi /etc/my.cnf
# log-bin=mysql-bin

 

end.

반응형