[MySQL] Purge Log
- Databases/MySQL
- 2020. 11. 12.
■ 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일동안 저장하고 삭제한다.
'Databases > MySQL' 카테고리의 다른 글
[MySQL][InnoDB] InnoDB 제한사항 (0) | 2020.11.20 |
---|---|
[MySQL] 테이블 대용량파티션 삭제시 Table Lock 회피 방법 (0) | 2020.11.17 |
[MySQL] root 암호 분실시 재설정 방법 (0) | 2020.11.09 |
[MySQL] Binary Log 관련 명령 (0) | 2020.11.08 |
[MySQL] CHECKSUM TABLE (0) | 2020.11.06 |