Was ist die Datei mysql-bin.000001 in MySQL? Kann sie gelöscht werden?

Was ist die Datei mysql-bin.000001 in MySQL? Kann sie gelöscht werden?

Nachdem ich MySQL über Ports installiert hatte, stellte ich fest, dass /var nach einer Weile nicht mehr genügend Speicherplatz hatte. Nach der Überprüfung stellte ich fest, dass Dateien wie mysql-bin.000001 und mysql-bin.000002 den Speicherplatz belegten. Wofür sind diese Dateien also? Dies ist das Betriebsprotokoll der Datenbank. Wenn Sie beispielsweise eine Tabelle aktualisieren oder einige Daten löschen, wird der Befehl in der Protokolldatei gespeichert, auch wenn keine passenden Daten für die Anweisung vorhanden sind. Die Ausführungszeit jeder Anweisung wird ebenfalls aufgezeichnet.

Dies hat zwei Hauptzwecke:

1: Datenwiederherstellung Wenn Ihre Datenbank Probleme hat und Sie sie zuvor gesichert haben, können Sie anhand der Protokolldatei herausfinden, welcher Befehl die Datenbankprobleme verursacht hat, und Möglichkeiten zur Wiederherstellung der Verluste finden.
2: Daten zwischen Master- und Slave-Servern synchronisieren. Alle Vorgänge auf dem Master-Server werden im Protokoll aufgezeichnet, und der Slave-Server kann Vorgänge basierend auf dem Protokoll ausführen, um sicherzustellen, dass die beiden synchronisiert sind.

Es gibt zwei Behandlungsmethoden:
1: Wenn nur ein MySQL-Server vorhanden ist, können Sie diese Option einfach auskommentieren.
vi /etc/my.cnf, kommentieren Sie die Log-Bin-Zeile aus und starten Sie den MySQL-Dienst neu.
2: Wenn Ihre Umgebung ein Master-Slave-Server ist, müssen Sie die folgenden Vorgänge durchführen.
A: Verwenden Sie auf jedem Slave-Server SHOW SLAVE STATUS, um zu überprüfen, welches Protokoll er liest.
B: Verwenden Sie SHOW MASTER LOGS, um eine Liste der Protokolle auf dem Masterserver zu erhalten.
C: Bestimmen Sie das älteste Protokoll unter allen Slave-Servern. Dies ist das Zielprotokoll. Wenn alle Slave-Server aktualisiert sind, ist dies das letzte Protokoll in der Liste.
D: Alle Protokolle löschen, aber nicht das Zielprotokoll, da der Slave-Server noch mit diesem synchronisiert werden muss.

Die Methode zum Bereinigen des Protokolls ist:

LÖSCHEN SIE DIE MASTER-PROTOKOLLE NACH „mysql-bin.010“;
LÖSCHEN SIE DIE MEISTERPROTOKOLLE VOR „2008-12-19 21:00:00“;

Wenn Sie sicher sind, dass der Slave-Server synchronisiert wurde und derselbe wie der Master-Server ist, können Sie den MASTER direkt zurücksetzen, um diese Dateien zu löschen.

Ich habe festgestellt, dass mein 10G-Serverplatz nach ein paar Tagen Nutzung auf 5G reduziert wurde und die von mir hochgeladenen Dateien nur ein paar hundert MB groß waren. Was um alles in der Welt hat so viel Platz beansprucht?

Das Web-Stammverzeichnis befindet sich in /home. Die Gesamtgröße der Dateien beträgt weniger als 300 MB, aber sie belegen fast 5 GB Speicherplatz auf dem Server. Das ist beängstigend. Nachdem ich alles Schritt für Schritt überprüft hatte, stellte ich schließlich fest, dass dieser Ordner eine Menge Speicherplatzressourcen beanspruchte.

Es ist also das var-Verzeichnis unter dem mysql-Ordner, das den meisten Platz einnimmt. Was befindet sich darin? Werfen wir einen Blick darauf:

Ich habe so viele mysql-bin.0000X-Dateien gefunden. Was sind sie? Es sind die Betriebsprotokolldateien von MySQL. Meine Datenbank ist nur ein paar Dutzend MB groß, aber das Betriebsprotokoll ist fast 3 GB groß.

Wie lösche ich mysql-bin.0000X-Protokolldateien?

Rot zeigt eingegebene Befehle an.

[root@jiucool var]# /usr/local/mysql/bin/mysql -u root -p
Passwort eingeben: (Passwort eingeben)
Willkommen beim MySQL-Monitor. Befehle enden mit ; ​​oder /g.
Ihre MySQL-Verbindungs-ID lautet 264001
Serverversion: 5.1.35-log Quellverteilung

Geben Sie „help;“ oder „/h“ ein, um Hilfe zu erhalten. Geben Sie „/c“ ein, um die aktuelle Eingabeanweisung zu löschen.

mysql> Master zurücksetzen; (Protokolldateien löschen)
Abfrage OK, 0 Zeilen betroffen (8,51 Sek.)

MySQL>

OK, prüfen wir, wie viel Speicherplatz der MySQL-Ordner einnimmt.

[root@jiucool var]# du -h –max-depth=1 /usr/local/mysql/
37M /usr/lokal/mysql/var
70M /usr/lokal/mysql/mysql-test
15M /usr/lokal/mysql/lib
448 KB /usr/lokal/mysql/include
2,9 M /usr/lokal/mysql/Freigabe
7,6 M /usr/local/mysql/libexec
17M /usr/local/mysql/bin
11M /usr/local/mysql/docs
2,9 M /usr/local/mysql/sql-bench
163M /usr/lokal/mysql/

Schauen wir uns das mal an. Das gesamte MySQL-Verzeichnis nimmt nur 163 MB ein! OK, kein Problem. Da die Protokolldatei mysql-bin.0000X so viel Platz einnimmt und ihre Existenz nicht besonders bedeutsam ist, lassen wir sie nicht generieren.

[root@jiucool var]# finde / -name my.cnf

Habe my.cnf, die MySQL-Konfigurationsdatei, gefunden und log-bin=mysql-bin auskommentiert.

# Replikationsmasterserver (Standard)
# Binäre Protokollierung ist für die Replikation erforderlich
#log-bin=mysql-bin

Starten Sie MySQL neu.

OK, der Vorgang ist nun abgeschlossen. Bei einer Datenbankgröße von nur einigen Dutzend MB werden keine weiteren N GB an Protokolldateien generiert.

Diese Protokolldateien sind furchtbar. Ich bin erst seit etwa 20 Tagen auf diesen neuen VPS umgestiegen und die Protokolldateien sind in weniger als einem Monat fast 3 GB groß. Wenn ich die Protokolldateien in einem oder zwei Monaten nicht lösche, wird es furchtbar!

MySql-Datenverzeichnis mysql-bin.000001 Dateibereinigungsmethode

Im MySQL-Installationsverzeichnis werden im Datenverzeichnis alle Datenbankdateien gespeichert. In diesem Verzeichnis gibt es einige Dateien wie mysql-bin.000001, mysql-bin.000002 und mysql-bin.000003, die viel Platz beanspruchen. Diese Dateien sind Protokolldateien für Datenbankvorgänge und können gelöscht werden. Entfernungsmethode:
Gehen Sie in cmd zum Bin-Verzeichnis unter MySQL und geben Sie mysql -u root -p ein. Geben Sie anschließend das Kennwort ein und geben Sie nach erfolgreicher Eingabe „Reset Master“ ein.
mysql> Master zurücksetzen;
Abfrage OK, 0 Zeilen betroffen, 1 Warnung (0,20 Sek.)
Dadurch werden die Protokolldateien gelöscht. Wenn Sie diese Protokolldateien nicht erstellen möchten, können Sie Folgendes tun:
Öffnen Sie my.ini im MySQL-Verzeichnis, suchen Sie nach log-bin=mysql-bin und kommentieren Sie es aus.
#log-bin=mysql-bin
(Es ist am besten, die MySQL-Datenbank vorübergehend zu schließen, wenn Sie die Datenbankkonfigurationsdatei ändern.)

<<:  Detaillierte Erklärung zur Verwendung von Vue.prototype in Vue

>>:  So installieren Sie Grafana und fügen Influxdb-Überwachung unter Linux hinzu

Artikel empfehlen

Beispielcode zum Erstellen eines Dropdown-Menüs mit reinem CSS

Einführung: Als ich mir in letzter Zeit die Frage...

32 typische spalten-/rasterbasierte Websites

Wenn Sie nach Inspiration für spaltenbasiertes Web...

Rendern im Vue-Scaffolding verstehen

Im Vue-Gerüst können wir sehen, dass im neuen Vue...

So handhaben Sie gleichzeitige Aktualisierungen von MySQL-Daten

Wird UPDATE gesperrt? Wird die SQL-Anweisung gesp...

Ist ein Design, das den Designspezifikationen entspricht, ein gutes Design?

In den letzten Jahren meiner Karriere habe ich an...

Mit CSS3 implementierte Schaltfläche zum Hovern von Bildern

Ergebnis:Implementierungscode html <ul Klasse=...

ElementUI-Komponente el-dropdown (Falle)

Auswählen und ändern: Klicken Sie, um den aktuell...

Grafisches Tutorial zur Installation von MySQL 8.0.15 und Datenbankgrundlagen

Die Installation der MySQL-Software und die Daten...

Sehen Sie sich den Befehl zum Ändern der MySQL-Tabellenstruktur an

Kurzbeschreibung Der Editor hat häufig Probleme m...

So setzen Sie das MySQL-Root-Passwort zurück

Inhaltsverzeichnis 1. Ich habe das Root-Passwort ...