warum MySQL-Bin-Protokolle nicht ablaufen, obwohl das Ablaufdatum festgelegt wurde

warum MySQL-Bin-Protokolle nicht ablaufen, obwohl das Ablaufdatum festgelegt wurde

Ich verwende 5.7.37-log MySQL Community Server. Meine mysqld.cnf sieht unten aus:

server_id = 11
log_bin = bin.log
log-bin-index = bin-log.index
binlog_format = row
max_binlog_size = 100M
socket = mysql.sock
expire_logs_days = 1

wenn ich meine Protokolle überprüfe, werden sie immer länger, obwohl ich sie darauf hinweise, dass sie in einem Tag ablaufen. Verwendung von expire_logs_days.

Kann ich mit der obigen Konfiguration erwarten, dass die Protokolle automatisch gelöscht werden, oder muss ich das noch einmal manuell machen? In einigen Formularen steht: „ PURGE BINARY LOGS BEFORE NOW() - INTERVAL 1 DAY; Aber ich verstehe nicht, welchen Sinn es hat, die obige Anweisung manuell auszuführen, wenn wir die Konfiguration bereits festgelegt haben.“

Bitte helfen Sie mir, den Ablaufmechanismus der Bin-Protokolle zu verstehen. Da ich das Ablaufdatum nach einem Tag verwendet habe, wird die Größe von bin.00001 und bin.0002 usw. jeden Tag reduziert? Oder wie kann ich feststellen, dass die Protokolle wirklich ablaufen?

Anbei ein Screenshot meiner generierten Bin-Protokolle.

Bildbeschreibung hier eingeben

Antwort1

Es gibt keinen Timer, der nach einem Tag läuft und die Protokolle löscht. Das Löschen der Protokolle wird durch Protokolllöschereignisse ausgelöst. Das ist der Zeitpunkt, an dem ein neues Binärprotokoll generiert wird. Wenn es in unserer Datenbank zu lange dauert und die Protokolle nicht täglich gelöscht werden, können Sie die maximale Binärprotokollgröße auf einen niedrigeren Wert setzen. Eine weitere gute Option wäre, die Protokolle im Rahmen Ihrer Sicherungsstrategie immer zu löschen.

verwandte Informationen