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

vue-table implementiert das Hinzufügen und Löschen

In diesem Artikelbeispiel wird der spezifische Co...

Ein praktischer Bericht über einen durch den MySQL-Start verursachten Unfall

Inhaltsverzeichnis Hintergrund So ermitteln Sie, ...

Natives JS zur Implementierung der Formularvalidierungsfunktion

Inhaltsverzeichnis Bei der Entwicklung kann eine ...

Implementierungsfallcodeanalyse für dynamische und statische Trennung von Nginx

Trennung von statischer und dynamischer Dynamisch...

Detaillierte Einführung in die Mysql-Datumsabfrage

Abfrage des aktuellen Datums AKTUELLES DATUM AUSW...

JS praktisches objektorientiertes Schlangenspielbeispiel

Inhaltsverzeichnis denken 1. Bild mit dem gierige...

Lösung für den Fehler beim Importieren von MySQL Big Data in Navicat

Die von Navicat exportierten Daten können nicht i...

Detaillierte Erklärung generischer Fälle in TypeScript

Definition von Generika // Anforderung 1: Generik...

Dieser Artikel entführt Sie in die Welt der js-Datentypen und Datenstrukturen

Inhaltsverzeichnis 1. Was ist dynamische Typisier...

Zwei Methoden zum Strecken des Hintergrundbilds einer Webseite

Es gibt zwei Lösungen: Eine Möglichkeit ist CSS, b...

React implementiert eine hochadaptive virtuelle Liste

Inhaltsverzeichnis Vor der Transformation: Nach d...

Beispielmethode zum Anzeigen von IP in Linux

Die Kenntnis der IP-Adresse eines Geräts ist wich...