[MySQL] Purge Log

■ Purge 명령어 관련

binary logs 파일을 삭제하는 명령어입니다.

'bin log' 파일을 지정하면, 이전의 bin log 파일을 지우며, 지울 날짜를 지정하면 '지정한 날짜' 이전에 만들어진 bin log 파일을 지우게 됩니다.

또한 mysqlbinlog 명령 사용하여 내용을 있습니다.

 

RESET MASTER;

bin log 파일을 모두 지움
가장 최근 bin log 파일만 존재함

PURGE [MASTER] LOGS TO 'logname';
PURGE [MASTER] LOGS BEFORE 'date';

binlog-name까지 지움
date이전까지 지움

 

[형식]

PURGE [MASTER] LOGS TO 'binlog-name'

PURGE [MASTER] LOGS BEFORE 'date'

 

여기서 date 'YYYY-MM-DD HH:MI:SS' 형식임.

 

[예제]

mysql> \! ls -l /export/home/mysql/var
-rw-rw----   1 mysql    mysql         98 May 29 10:56 aaa-bin.000001
-rw-rw----   1 mysql    mysql         79 May 29 10:57 aaa-bin.000002
-rw-rw----   1 mysql    mysql         79 May 29 11:24 aaa-bin.000003
-rw-rw----   1 mysql    mysql         79 May 29 11:35 aaa-bin.000004
-rw-rw----   1 mysql    mysql         68 May 29 15:33 aaa-bin.index
-rw-rw----   1 mysql    other       4344 May 29 11:36 aaa.err
-rw-rw----   1 mysql    mysql          3 May 29 11:36 aaa.pid
-rw-rw----   1 mysql    mysql      25088 May 23 15:24 ib_arch_log_0000000000
-rw-rw----   1 mysql    mysql    5242880 May 29 11:36 ib_logfile0
-rw-rw----   1 mysql    mysql    5242880 May 23 15:24 ib_logfile1
-rw-rw----   1 mysql    mysql    10485760 May 29 10:56 ibdata1
drwx------   2 mysql    mysql       1024 May 23 15:20 mysql

mysql> purge logs before '2003-05-29 11:24:00';
Query OK, 0 rows affected (0.00 sec)
확인: 2003-05-29 11:24:00 이전의 파일을 지움

mysql> \! ls -l /export/home/mysql/var
-rw-rw----   1 mysql    mysql         79 May 29 11:24 aaa-bin.000003
-rw-rw----   1 mysql    mysql         79 May 29 11:35 aaa-bin.000004
-rw-rw----   1 mysql    mysql         34 May 29 15:39 aaa-bin.index
-rw-rw----   1 mysql    other       4344 May 29 11:36 aaa.err
-rw-rw----   1 mysql    mysql          3 May 29 11:36 aaa.pid
-rw-rw----   1 mysql    mysql      25088 May 23 15:24 ib_arch_log_0000000000
-rw-rw----   1 mysql    mysql    5242880 May 29 11:36 ib_logfile0
-rw-rw----   1 mysql    mysql    5242880 May 23 15:24 ib_logfile1
-rw-rw----   1 mysql    mysql    10485760 May 29 10:56 ibdata1
drwx------   2 mysql    mysql       1024 May 23 15:20 mysql

mysql> purge logs to 'aaa-bin.000004';
Query OK, 0 rows affected (0.01 sec)
확인: aaa-bin.000004 이전의 파일을 지움

mysql> \! ls -l /export/home/mysql/var
-rw-rw----   1 mysql    mysql         79 May 29 11:35 aaa-bin.000004
-rw-rw----   1 mysql    mysql         17 May 29 15:41 aaa-bin.index
-rw-rw----   1 mysql    other       4344 May 29 11:36 aaa.err
-rw-rw----   1 mysql    mysql          3 May 29 11:36 aaa.pid
-rw-rw----   1 mysql    mysql      25088 May 23 15:24 ib_arch_log_0000000000
-rw-rw----   1 mysql    mysql    5242880 May 29 11:36 ib_logfile0
-rw-rw----   1 mysql    mysql    5242880 May 23 15:24 ib_logfile1
-rw-rw----   1 mysql    mysql    10485760 May 29 10:56 ibdata1
drwx------   2 mysql    mysql       1024 May 23 15:20 mysql
mysql>

 

그외 예시

mysql> PURGE MASTER LOGS TO 'mysql-bin.010';  // mysql-bin.010파일 이후의 로그를 삭제 
mysql> PURGE MASTER LOGS BEFORE '2003-04-02 22:46:26';  // 2003-04-02 22:46:26 시간 이후의 로그를 삭제 
mysql> PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 31 DAY); // 지금부터 한달 이전의 로그는 모두 삭제 
자동으로 특정시간에 수행할 때는 Crontab으로 실행.
0 9 * * mon mysql -uroot -e "PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 31 DAY);" 

 

reset master 모든 binary log 파일을 삭제하고 새로 binary log 시작함

 

■ my.cnf 이용하여 Binary Log 파일 설정방법

binlog_cache_size      =  50M      # binlog cache 사이즈

max_binlog_size        =  500M    # bin로그 maximum 사이즈

expire_logs_days        = 3       # 로그 만료기간

 

■ MySQL 클라이언트에서 설정방법

기본적으로는 0으로 되어 있어 삭제가 되지 않으나

mysql> set global expire_logs_days=7;

설정하면 7일동안 저장하고 삭제한다.

Designed by JB FACTORY