Bitte löschen Sie diese nicht einfach im Betriebssystem.
Sie müssen mysqld das für Sie tun lassen. So schafft es mysqld:
Die Datei enthält mysql-bin.[index]
eine Liste aller von mysqld generierten und automatisch gedrehten Binärprotokolle. Die Mechanismen zum Löschen der Binlogs in Verbindung mit mysql-bin.[index]
sind:
PURGE BINARY LOGS TO 'binlogname';
PURGE BINARY LOGS BEFORE 'datetimestamp';
Dadurch werden alle Binärprotokolle vor dem soeben angegebenen Binärprotokoll oder Zeitstempel gelöscht.
Zum Beispiel, wenn Sie laufen
PURGE BINARY LOGS TO 'mysql-bin.000223';
Dadurch werden alle Binärprotokolle zuvor gelöscht mysql-bin.000223
.
Wenn du läufst
PURGE BINARY LOGS BEFORE DATE(NOW() - INTERVAL 3 DAY) + INTERVAL 0 SECOND;
Dadurch werden alle Binärprotokolle vor Mitternacht vor 3 Tagen gelöscht.
Wenn Sie möchten, dass binlog automatisch entfernt wird und 3 Tage erhalten bleibt, stellen Sie einfach Folgendes ein:
mysql> SET GLOBAL expire_logs_days = 3;
dann füge dies hinzu zu /etc/my.cnf
[mysqld]
expire_logs_days=3
und mysqld löscht sie protokolle für sie
SHOW SLAVE STATUS \ G
Das ist kritisch. Wenn Sie ausführen SHOW SLAVE STATUS\G
, sehen Sie zwei Binärprotokolle vom Master:
Master_Log_File
Relay_Master_Log_File
Wenn die Replikation keine oder nur geringe Verzögerungen aufweist, haben diese normalerweise denselben Wert. Wenn eine große Replikationsverzögerung vorliegt, unterscheiden sich diese Werte. Um es einfach zu machen, wähle, was auch immer Relay_Master_Log_File
ist, und gehe zurück zum Meister und renne
PURGE BINARY LOGS TO 'Whatever Relay_Master_Log_File Is';
Auf diese Weise wird die Replikation nicht unterbrochen.
[mysqld] expire_logs_days=3
(und Sie müssen den[mysqld]
AbschnittSET GLOBAL expire_logs_days = 3;
vom MySQL-Client akzeptiert sie nicht. Beispiel in den MySQL- Dokumentenmysql> SET GLOBAL expire_logs_days = 3;
undexpire-logs-days=3
in/etc/my.cnf
.. Sind sie gleich? Ist das überflüssig oder nicht? Oder ist es wichtig, ausgeführt undSET GLOBAL...
dann hinzugefügt zu werdenexpire-logs-days=..
? Vielen Dank.PURGE BINARY LOGS BEFORE DATE(NOW());
Warum gibt es dafür keine vernünftigen Standardeinstellungen? Ich habe nirgendwo explizit die Größe der Protokolldatei auf einen gigantischen Betrag geändert. Ich hatte 10,0 GB Protokolldateien, nachdem ich diesen Befehl ausgeführt hatte, schrumpfte meine mysql.bin-Ordnergröße auf 1,6 GB.Dies hängt wirklich von Ihrer Sicherungsstrategie ab. Einer der Hauptgründe für die Beibehaltung der Binärprotokolle ist die Wiederherstellung der Datenbank auf einen bestimmten Zeitpunkt. Wenn Ihre Datenbank abstürzt und eine Wiederherstellung erforderlich ist, stellen Sie die letzte vollständige Sicherung wieder her und geben die Binärprotokolle ab der Position der vollständigen Sicherung wieder.
Wenn Sie also jeden Tag eine vollständige Sicherung durchführen und über Binärprotokolle für 7 Tage verfügen, können Sie wahrscheinlich die Binärprotokolle für die letzten 4 bis 6 Tage löschen. Mit dieser
expire_logs_days
Einstellung können Sie steuern, wie viele Tage Binärprotokolle gespeichert werden .Sie können die nicht benötigten Binärprotokolle löschen, indem Sie zuerst das älteste Protokoll anzeigen, das Sie speichern möchten:
und dann in MySQL:
quelle
Versuche dies:
wie das Dokument sagte:
Dadurch werden alle zugehörigen binären Protokolldateien gelöscht, die möglicherweise nicht Ihren Wünschen entsprechen.
quelle