mysql의binlog 보안 삭제

6473 단어
이론적으로 파일/etc/my를 설정해야 합니다.cnf에 binlog 만료 시간의 설정 항목을 추가,expirelogs_days = 10
그러나 이 항목을 추가하지 않으면 점점 더 많은binlog가 생기면서 디스크가 많이 먹혔다.binlog 파일을 직접 삭제할 수 있지만 mysql에서 제공하는 도구를 통해 삭제하는 것이 안전합니다.purge가 mysql-bin을 업데이트하기 때문입니다.index의 항목을 직접 삭제하면 mysql-bin.index 파일은 업데이트되지 않습니다.mysql-bin.index의 역할은 binlog 파일을 찾는 속도를 높이는 것입니다.
먼저 help 해 주세요.
mysql> help purgeName: 'PURGE MASTER LOGS'Description:Syntax:PURGE {MASTER | BINARY} LOGS TO 'log_name'PURGE {MASTER | BINARY} LOGS BEFORE 'date'
(purge:숙청;제거)
Deletes all the binary logs listed in the log index prior to thespecified log or date. The logs also are removed from the list recordedin the log index file, so that the given log becomes the first.
This statement has no effect if the --log-bin option has not beenenabled.
URL: http://dev.mysql.com/doc/refman/5.0/en/purge-master-logs.html
Examples:PURGE MASTER LOGS TO 'mysql-bin.010';PURGE MASTER LOGS BEFORE '2003-04-02 22:46:26';
 
두 가지 방법 모두 쓸 수 있다.첫 번째는 어떤 파일까지 삭제하는 것이고, 두 번째는 어떤 날짜까지 삭제하는 것이다.
예를 들어 우리는 그것으로 하여금 3일 가까이 로그를 보존하게 하면 이렇게 할 수 있다
PURGE MASTER LOGS BEFORE '2010-10-17 00:00:00';
 
실행 전후의 파일 수를 보십시오:
실행 전:
part2# ls mysql-bin.*|wc -l     243
purge를 실행하려면:
mysql> PURGE MASTER LOGS BEFORE '2010-10-17 00:00:00';Query OK, 0 rows affected (0.02 sec)
실행 후:
part2# ls mysql-bin.* | wc -l      88
17일 이전의 빙로그를 모두 삭제한 것을 알 수 있다.
 
주의해야 할 것은: 현재 그 binlog 파일에 동기화된 것을 slave 위에서 보는 것이 좋습니다. show slave status로 보십시오.그렇지 않으면 마스터에서 많이 삭제하면 slave가 로그 파일을 잃어버려서 데이터가 일치하지 않습니다.
 
기본적으로 mysql는 mysql-bin 파일을 계속 보존합니다. 그러면 디스크가 꽉 찰 수 있습니다. 이 파일을 삭제할 수 있습니까? 안전하게 삭제할 수 있습니까? 문제가 있습니다.
먼저 설명하자면 이 파일들은 모두 mysql의 로그 파일입니다. 만약에 복사를 하지 않으면 기본적으로 쓸모가 없습니다. 비록 쓸모가 없지만 rm 명령을 사용하여 삭제하는 것을 권장하지 않습니다. 그러면 안전하지 않을 수 있습니다. 정확한 방법은 mysql의 명령을 통해 삭제하는 것입니다.
mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2819416 Server version: 5.5.24-0ubuntu0.12.04.1-log (Ubuntu) Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> reset master; Query OK, 0 rows affected (3 min 37.65 sec)

사실 관건적인 명령은 reset master;입니다. 이 명령은 mysql-bin 파일을 비웁니다.
또한 mysql 서버가 주종복제가 필요하지 않으면 my를 수정하는 것을 권장합니다.cnf 파일, my만 삭제하면 이 파일들이 생성되지 않도록 설정합니다.cnf의 아래 줄만 있으면 됩니다.
log-bin=mysql-bin

복제가 필요한 경우 로그 파일 보존 일수를 제어하는 것이 좋습니다. 다음 구성을 통해 로그 파일 보존 일수를 설정할 수 있습니다.
expire_logs_days = 7

7일간의 일지를 보류하면 오래된 일지가 자동으로 정리된다는 뜻이다.
참조:
http://blog.csdn.net/atco/article/details/24259333

좋은 웹페이지 즐겨찾기