expire_logs_days 매개 변수를 업데이트하고 sql을 다시 시작한 후 오래된 binlog가 얼마나 빨리 삭제됩니까?


16

MySQL 5.1.x | InnoDB | 윈도우

mysql 데이터 디렉토리가 bin 로그로 가득 차기 시작했습니다.

현재 Windows mysql 서버에 다음 설정이 구성되어 있습니다.

[mysqld]
log-bin
server-id=1
binlog-do-db=foodb1
binlog-do-db=foodb2
expire_logs_days=25

expire_logs_days 설정을 변경 expire_logs_days=10하고 mysql 서비스를 반송 할 계획 입니다. 이 변경을 수행 한 후 얼마 지나지 않아 이전 bin 로그가 사라질 것으로 예상 할 수 있습니다.

이 작업은 야간 예약 작업의 일부로 만 수행됩니까? 아니면 이것이 즉각적이어야합니까?

답변:


29

mysql 시작시 즉시 처리됩니다.

mysql 재시작을 기다릴 필요가 없습니다.

먼저 expire_logs_days/etc/my.cnf에서 10으로 설정하십시오.

[mysqld]
log-bin
server-id=1
binlog-do-db=foodb1
binlog-do-db=foodb2
expire_logs_days=10

다음으로 mysql에 로그인하고 이것을 실행하십시오.

PURGE BINARY LOGS BEFORE (date(now()) + interval 0 second - interval 10 day);

쿼리 날짜와 시간을 기록하십시오.

mysql> select date(now()) + interval 0 second - interval 10 day;
+---------------------------------------------------+
| date(now()) + interval 0 second - interval 10 day |
+---------------------------------------------------+
| 2012-12-11 00:00:00                               |
+---------------------------------------------------+
1 row in set (0.00 sec)

mysql>

따라서 PURGE BINARY LOGS 명령은 날짜 시간 소인이 predate 인 모든 binlog를 삭제합니다 2012-12-11 00:00:00.

마지막 으로이 명령을 실행하십시오.

SET GLOBAL expire_logs_days = 10;

그게 다야. expire_logs_days 설치를 위해 다시 시작할 필요가 없습니다 .

복제 매개 변수는 yes 재시작이 필요합니다.


훌륭한 응답. 감사합니다. 세부 사항에 감사드립니다.
Mike B

새로 고침, 오타를 수정했습니다.
RolandoMySQLDBA

1
expire_logs_days는 이제 MySQL 8.0에서 더 이상 사용되지 않습니다 (@RolandoMySQLDBA에서 제공하는 링크의 세부 사항에 따라). 대신 binlog_expire_logs_seconds를 사용하십시오.
John Rix
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.