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

Zusammenfassung der Wissenspunkte zum Ereignismodul in Node.js

Durch das Studium und die Anwendung von Node wiss...

Über das Problem beim Schreiben von Plugins zum Mounten von DOM in vue3

Im Vergleich zu vue2 verfügt vue3 über ein zusätz...

Detaillierte Erläuterung der ECharts-Mausereignisverarbeitungsmethode

Ein Ereignis ist eine vom Benutzer oder dem Brows...

Detaillierte Analyse der Unterschiede zwischen break und last in Nginx

Lassen Sie uns zunächst über den Unterschied spre...

So erstellen Sie einen Pod in Kubernetes

Inhaltsverzeichnis Wie erstelle ich einen Pod? We...

CSS setzt die Höhe des Box-Containers (div) immer auf 100 %

Vorwort Manchmal muss die Höhe eines Box-Containe...

Acht Beispiele, wie Vue Komponentenkommunikation implementiert

Inhaltsverzeichnis 1. Props übergeordnete Kompone...

Lösen Sie das domänenübergreifende Problem von Vue + SpringBoot + Shiro

Inhaltsverzeichnis 1. Konfigurieren Sie das Vue-F...

Implementierung des Whack-a-Mole-Spiels in JavaScript

In diesem Artikel finden Sie den spezifischen Cod...

Analyse des Ereignisschleifenmechanismus von js

Vorwort Wie wir alle wissen, ist JavaScript im Ke...

Detaillierte Erklärung der Concat-bezogenen Funktionen in MySQL

1. concat()-Funktion Funktion: Mehrere Zeichenfol...

mysql drei Tabellen verbunden, um eine Ansicht zu erstellen

Drei Tabellen sind miteinander verbunden. Feld a ...