Detaillierte Erklärung zum MySQL-Dateispeicher

Detaillierte Erklärung zum MySQL-Dateispeicher

Was ist ein Dateisystem

Wir wissen, dass Speicher-Engines wie InnoDB und MyIASM Tabellen auf der Festplatte speichern (persistent). Wenn wir Daten lesen möchten, lesen diese Speicher-Engines die Daten aus dem Dateisystem und geben sie an uns zurück. Wenn wir Daten schreiben möchten, schreiben diese Speicher-Engines die Daten zurück in das Dateisystem.

Natürlich speichert MySQL neben der Speicherung eigentlicher Daten auch eine Reihe anderer Protokolle, die ebenfalls zum Dateisystem gehören.

Die Adresse der auf der Speicher-Engine gespeicherten Datei

Nachdem Sie mit dem Client eine Verbindung zum Server hergestellt haben, können Sie den Wert dieser Systemvariablen anzeigen:

Variablen wie „Datadir“ anzeigen;

bild.png

Natürlich kann dieses Verzeichnis über die Konfigurationsdatei geändert und von uns selbst angegeben werden.

Was befindet sich in der Datenträgerdatei?

Welche Daten generiert MySQL während seines Betriebs? Natürlich werden dazu auch Benutzerdaten wie Datenbanken, Tabellen, Ansichten und Trigger gehören, die wir erstellt haben. Zusätzlich zu diesen Benutzerdaten erstellt MySQL auch einige weitere Daten für einen besseren Programmbetrieb.

Tabelleninformationen unter dem Datenbank-Datumsverzeichnis

Was passiert eigentlich im Dateisystem, wenn wir eine Datenbank mit der Anweisung CREATE DATABASE erstellen? Eigentlich ist es ganz einfach. Jede Datenbank entspricht einem Unterverzeichnis des Datenverzeichnisses oder einem Ordner. Wenn wir eine neue Datenbank erstellen, hilft uns MySQL bei zwei Dingen:

  • Erstellen Sie im Datenverzeichnis ein Unterverzeichnis (oder einen Ordner) mit demselben Namen wie der Datenbankname.
  • Erstellen Sie eine Datei mit dem Namen db.opt im Unterverzeichnis mit dem gleichen Namen wie der Datenbankname. Diese Datei enthält verschiedene Eigenschaften der Datenbank, beispielsweise den Zeichensatz und die Vergleichsregeln der Datenbank. Nehmen wir an, wir überprüfen, welche Datenbanken sich derzeit auf meinem Computer befinden:

bild.png

Sie können sehen, dass es derzeit 5 Datenbanken gibt, von denen die mysqladv-Datenbank unsere benutzerdefinierte ist und die anderen 4 Datenbanken Systemdatenbanken sind, die mit MySQL geliefert werden. Werfen wir einen Blick auf den Inhalt des Datenverzeichnisses:

bild.png

Natürlich gibt es in diesem Datenverzeichnis viele Dateien und Unterverzeichnisse, aber wenn Sie genau hinschauen, sehen Sie, dass außer der Systemdatenbank „information_schema“ auch andere Datenbanken entsprechende Unterverzeichnisse in diesem Datenverzeichnis haben. Dieses Informationsschema ist ziemlich speziell und wir werden seine Funktion später besprechen.

So speichert InnoDB Daten

Wenn unser InnoDB eine Datenbank hinzufügt, wird ein Ordner im Stammverzeichnis des Protokolls hinzugefügt.

bild.png

Jeder Ordner speichert alle entsprechenden Tabellendaten. Die Daten in jeder Tabelle werden im Allgemeinen nach den folgenden zwei Regeln aufgeteilt:

Definition der Tabellenstruktur

Nehmen wir als Beispiel die Tabelle „index_condition_pushdown“ in der von uns erstellten Studienbibliothek:

bild.png

bild.png

Die Tabellenstruktur besteht aus diesen Daten und der entsprechende Speicherdateiname lautet:

bild.png

Die Tabellenstruktur umfasst den Namen der Tabelle, die Anzahl der Spalten in der Tabelle, den Datentyp jeder Spalte, die Einschränkungen und Indizes, den verwendeten Zeichensatz und die Vergleichsregeln usw. Alle diese Informationen werden in unserer Anweisung zur Tabellenerstellung widergespiegelt. Um diese Informationen zu speichern, erstellen sowohl InnoDB- als auch MyIASM-Speicher-Engines eine Datei, die speziell zur Beschreibung der Tabellenstruktur im entsprechenden Datenbankunterverzeichnis unter dem Datenverzeichnis verwendet wird. Der Dateiname lautet: Tabellenname.frm

Daten in der Tabelle

Erstellen Sie eine Datei, die den unabhängigen Tablespace darstellt, im Unterverzeichnis, das der Datenbank entspricht, zu der die Tabelle gehört. Der Dateiname ist derselbe wie der Tabellenname, außer dass die Erweiterung .ibd hinzugefügt wird. Daher sieht der vollständige Dateiname folgendermaßen aus: Tabellenname.ibd.

bild.png

So speichert MyISAM Tabellendaten

Daten und Indizes werden in MyISAM separat gespeichert. Daher werden im Dateisystem unterschiedliche Dateien zum Speichern von Datendateien und Indexdateien verwendet. (Im Vergleich zu InnoDB speichert die ibd-Datei Daten + Indizes, und MyISAM teilt sie erneut auf).

bild.png

Wie in der Abbildung gezeigt, ändern wir die Speicher-Engine.

bild.png

Das Dateiverzeichnis wird auf das oben angezeigte geändert. Es lässt sich einfach so verstehen, dass die InnoDB-IBD-Datei in die folgenden zwei Dateien aufgeteilt wird.

.MYD stellt die Datendatei der Tabelle dar.

.MYI stellt die Indexdatei der Tabelle dar.

Hier fassen wir einen wichtigen Unterschied zwischen InnoDB und MyISAM zusammen. Das heißt, der Index und die Daten von InnoDB befinden sich in einem Ordner, während MyISAM Datendateien und Indexdateien getrennt in zwei Dateien speichert.

Logfiles

Während des Betriebs des Servers werden verschiedene Protokolle generiert, z. B. reguläre Abfrageprotokolle, Fehlerprotokolle, Binlog-Protokolle, Redo-Protokolle, Undo-Protokolle usw. Die Protokolldateien zeichnen verschiedene Arten von Aktivitäten auf, die sich auf die MySQL-Datenbank auswirken. Zu den üblichen Protokolldateien gehören: Fehlerprotokoll, Protokoll langsamer Abfragen, Abfrageprotokoll und Binärprotokoll.

Fehlerprotokoll

Die Fehlerprotokolldatei zeichnet den Start-, Betriebs- und Herunterfahrvorgang von MySQL auf. Wenn Sie auf ein Problem stoßen, sollten Sie zuerst diese Datei überprüfen, um das Problem zu lokalisieren. Diese Datei zeichnet nicht nur alle Fehlermeldungen auf, sondern auch einige Warnmeldungen oder Korrekturmeldungen. Benutzer können den Speicherort der Fehlerprotokolldatei mit dem folgenden Befehl anzeigen:

Variablen wie „log_error“ anzeigen\G;

bild.png

Wenn MySQL nicht normal gestartet werden kann, sollte die erste Datei, nach der Sie suchen müssen, die Fehlerprotokolldatei sein, in der die Fehlerinformationen aufgezeichnet sind.

Langsames Abfrageprotokoll

Protokolle langsamer Abfragen können dabei helfen, möglicherweise problematische SQL-Anweisungen zu lokalisieren und so SQL-Anweisungen zu optimieren.

Abfrageprotokoll

Das Abfrageprotokoll zeichnet Informationen zu allen Anfragen an die MySQL-Datenbank auf, unabhängig davon, ob diese Anfragen korrekt ausgeführt wurden oder nicht.

Standarddateiname: hostname.log

bild.png

Ab MySQL 5.1 können Abfrageprotokolldatensätze in die Tabelle general_log unter dem MySQL-Schema eingefügt werden.

bild.png

Binärprotokoll (binlog)

bild.png

Das Binärprotokoll zeichnet alle Operationen auf, die die MySQL-Datenbank ändern. Wenn die Operation selbst keine Änderung der Datenbank bewirkt, kann die Operation auch in die Binärdatei geschrieben werden. Allerdings sind Operationen wie „Auswählen“ und „Anzeigen“ nicht enthalten (da diese Operationen die Daten selbst nicht ändern).

Mehrere Funktionen von Binlog

Erholung

Für die Wiederherstellung einiger Daten sind Binärprotokolle erforderlich.

Kopie

Das Prinzip ähnelt dem der Wiederherstellung. Durch Kopieren und Ausführen von Binärprotokollen wird eine entfernte MySQL-Datenbank (im Allgemeinen als Slave oder Standby bezeichnet) in Echtzeit mit einer MySQL-Datenbank (im Allgemeinen als Master oder Primär bezeichnet) synchronisiert.

Audit (etwas unbeliebt, dafür ist die DB zuständig)

Benutzer können die Informationen im Binärprotokoll verwenden, um zu prüfen und festzustellen, ob es Injektionsangriffe auf die Datenbank gibt.

Zusammenfassen

Dies ist das Ende dieses Artikels über MySQL-Dateispeicher. Weitere relevante Inhalte zum Thema MySQL-Dateispeicher finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • So zeigen Sie den Speicherort von MySQL-Datendateien an

<<:  So installieren Sie Docker und Portainer in Kali

>>:  Zusammenfassung verschiedener Übermittlungsmethoden für HTML-Formulare

Artikel empfehlen

Methoden und Vorschläge zur Uniapp-Projektoptimierung

Inhaltsverzeichnis 1. Kapseln Sie komplexe Seiten...

CentOS 7: Erläuterung zum Wechseln des Boot-Kernels und des Boot-Modus

Centos7-Switch-Boot-Kernel Hinweis: Bei Bedarf wi...

Analyse der Lösung für das Problem der gemeinsamen Nutzung von Nginx-Sitzungen

Dieser Artikel stellt hauptsächlich die Lösung fü...

17 404-Seiten, die Sie erleben möchten

Wie können wir sagen, dass wir 404 vermeiden soll...

Xhtml-Sonderzeichensammlung

Name des Autors: &#160; no-break space = gesc...

Mysql 8.0.18 Hash-Join-Test (empfohlen)

Hash-Join Für die Ausführung von Hash Join sind k...

UDP DUP-Timeout UPD-Portstatus-Erkennungscodebeispiel

Ich habe bereits zuvor ein Beispiel geschrieben, ...

Problemaufzeichnung bei der Verwendung des Vue+Echarts-Diagramms

Vorwort echarts ist mein am häufigsten verwendete...

Native JavaScript-Karussell-Implementierungsmethode

In diesem Artikel wird die Implementierungsmethod...

Docker Detaillierte Abbildungen

1. Einführung in Docker 1.1 Virtualisierung 1.1.1...

So zeigen Sie die IP-Adresse von Linux in einer virtuellen VMware-Maschine an

1. Doppelklicken Sie zunächst auf das VMware-Symb...

6 praktische Tipps für die TypeScript-Entwicklung

Inhaltsverzeichnis 1. Bestimmen Sie den Entitätst...

So installieren Sie das Modul „lua-nginx-module“ in Nginx

ngx_lua_module ist ein Nginx-HTTP-Modul, das den ...

Beispiel für eine HTTPS-Konfigurationsmethode für den Nginx-Server

Linux: Linux-Version 3.10.0-123.9.3.el7.x86_64 Ng...