Expire_logs_days parametresini güncelledikten ve sql'i yeniden başlattıktan ne kadar sonra eski binloglar silinecek?


16

MySQL 5.1.x | InnoDB | pencereler

MySQL veri dizinim bin günlükleri ile dolmaya başlıyor.

Şu anda windows mysql sunucumda aşağıdaki ayarları yapılandırdım:

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

Expire_logs_days ayarını değiştirmek expire_logs_days=10ve mysql hizmetine sıçrama planlıyorum . Bu değişikliği yaptıktan ne kadar süre sonra eski depo kütüklerinin temizlenmesini bekleyebilirim.

Bu sadece gecelik programlanmış bir görevin parçası olarak mı yapılır? Yoksa bu anında mı olmalı?

Yanıtlar:


29

MySQL başlangıcında hemen ele alınacaktır.

MySQL'in yeniden başlatılması için beklemek zorunda değilsiniz.

İlk olarak, expire_logs_days/etc/my.cnf dosyasında 10 olarak ayarlayın

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

Ardından, mysql'de oturum açın ve bunu çalıştırın

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

Sorgunun tarihini ve saatini not edin

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>

Böylece, PURGE BINARY LOGS komutu, datetime damgası önceden gelen tüm binlog'ları siler 2012-12-11 00:00:00.

Son olarak, bu komutu çalıştırın

SET GLOBAL expire_logs_days = 10;

Bu kadar. Expire_logs_days kurulumu için yeniden başlatma gerekmez .

Çoğaltma parametrelerine gelince, evet yeniden başlatma gerekir.


Mükemmel yanıt. Teşekkür ederim. Detayı takdir ediyorum.
Mike B

Lütfen yenileyin, bir yazım hatasını düzelttim.
RolandoMySQLDBA

1
Expire_logs_days'ın artık MySQL 8.0'da (@RolandoMySQLDBA tarafından verilen bağlantıdaki ayrıntı başına) kullanımdan kaldırıldığını unutmayın. Bunun yerine binlog_expire_logs_seconds kullanın.
John Rix
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.