Zurück zum Blog

Schnelle Lösungen zur Reparatur beschädigter Tabellen in MySQL: Ein Tutorial

Schnelle Lösungen zur Reparatur beschädigter Tabellen in MySQL: Ein Tutorial

MySQL ist eines der beliebtesten Open-Source-RDBMS (relationalen Datenbankmanagementsysteme). Es ist ein integraler Bestandteil des schnell wachsenden LAMP-Stacks und hat eine beeindruckende Fangemeinde unter Entwicklern und Systemadministratoren gewonnen. Im Vergleich zu nicht-relationalen Datenbanken, bietet SQL hervorragende Funktionen zur effektiven Anordnung, Speicherung und Verwaltung von Daten. Die herausragenden Funktionen zur Tabellenanordnung und die besonderen Fähigkeiten der SQL-Datenbank machen sie zu einer bevorzugten Wahl auf allen Ebenen des Unternehmens, sowohl in großen als auch in kleinen.

MySQL-Tabellen können in seltenen Fällen beschädigt werden, was darauf hindeutet, dass ein solcher Fehler aufgetreten ist und die darin gespeicherten Daten unlesbar sind. Wenn Sie versuchen, Daten aus einer beschädigten Tabelle zu lesen, stürzt der Server ab und gibt einen Fehler oder eine Liste von Fehlern aus.

Potenzielle Gründe für die Beschädigung von MySQL-Tabellen

Im Folgenden sind einige der typischsten Gründe für beschädigte Tabellen aufgeführt:

  • Der MySQL-Dienst stürzt nach dem Neustart ab.
  • Das Gerät schaltet sich aufgrund eines Stromausfalls unerwartet aus.
  • Fehlerhafter Arbeitsspeicher oder Hardwarefehler.
  • Softwarefehler im Betriebssystem oder im SQL-Code.
  • MySQL wird während des Schreibvorgangs heruntergefahren.
  • Das System schaltet sich AUS, während SQL aktualisiert wird.

Bevor Sie eine Tabelle reparieren, von der Sie vermuten, dass sie beschädigt ist, erstellen Sie ein Backup Ihres Datenverzeichnisses. Dies hilft, die Wahrscheinlichkeit eines Datenverlusts zu verringern. In dieser Kurzanleitung führen wir Sie durch die Schritte zur Fehlerbehebung bei der Reparatur beschädigter Tabellen in MySQL.

Voraussetzungen

Um diesem Tutorial folgen zu können, benötigen Sie Folgendes:

Schritt 1: MySQL-Dienst stoppen und Datensicherung

Stoppen Sie zunächst den MySQL-Dienst mit dem Befehl systemctl:

Nach dem Stoppen des SQL-Dienstes besteht der nächste Schritt darin, Backups aller vorhandenen Dateien in einem neuen Verzeichnis zu erstellen. Verwenden Sie das Standard-Datenverzeichnis von Ubuntu /var/lib/mysql/, um alle Systemdaten zu kopieren:

Schritt 2: Identifizieren Sie den Fehler

Als Nächstes beginnen wir mit unserer Untersuchung und identifizieren die beschädigte Tabelle. Wenn die Tabelle die MyISAM-Speicher-Engine verwendet, nutzen Sie die Anweisung CHECK TABLE und überprüfen Sie den Status der Tabelle:

Als Ausgabe sehen Sie eine Meldung, die die beschädigte Tabelle oder die beschädigten Tabellen bestätigt.

Schritt 3: Reparieren Sie die beschädigte Tabelle

Wenn ein Fehler in der MyISAM-Tabelle vorliegt und Sie diesen identifiziert haben, verwenden Sie die Anweisung REPAIR TABLE, um den Fehler zu beheben:

Wenn die Reparatur erfolgreich war, sollten Sie die folgende fehlerfreie Meldung als Ausgabe sehen:

Wenn der Fehler jedoch erneut auftritt, folgen Sie dem offiziellen Dokument für MySQL-Version 8.0, um Tabellen neu zu erstellen oder zu reparieren.

Im Gegensatz zur MyISAM-Speicher-Engine unterscheidet sich der InnoDB-Prozess zur Reparatur von Tabellen in der InnoDB-Speicher-Engine. InnoDB ist die Standard-Speicher-Engine in MySQL 8.0. Sie verfügt über automatische Mechanismen zur Überprüfung auf Beschädigungen und Reparaturvorgänge. Die MySQL InnoDB prüft auf beschädigte Seiten, indem sie für jede gelesene Seite Prüfsummen berechnet. Wenn eine Diskrepanz festgestellt wird, stoppt sie automatisch den MySQL-Server.

Fazit ist, dass InnoDB-Tabellen nur selten repariert werden müssen. InnoDB verfügt über einen Crash-Recovery-Mechanismus, der die meisten Probleme durch einen Neustart beheben kann.

Versuchen Sie, den MySQL-Dienst neu zu starten, um zu sehen, ob Sie Zugriff auf den Server erhalten:

Wenn es Ihnen selbst nach dem Neustart nicht gelingt, eine beschädigte InnoDB-Tabelle neu zu erstellen, versuchen Sie die „Dump and Reload“-Methode, die in der MySQL-Dokumentation vorgeschlagen wird. Diese Methode beinhaltet die Wiedererlangung des Zugriffs auf die beschädigte Tabelle unter Verwendung des mysqldump-Dienstprogramms. Es muss ein Ordner erstellt werden, um das logische Backup der Tabelle zu speichern und aufzubewahren. Sobald der Fehler behoben ist, wird die Tabelle wieder in die Datenbank geladen.

Schritt 4: Nutzen Sie die Option innodb_force_recovery

Wenn der Server abgestürzt oder unerreichbar bleibt, versuchen Sie, die Option force_recovery in InnoDB zu verwenden. Das Aktivieren (ON) der force_recovery-Option ist eine hervorragende Möglichkeit, MySQL-Datenbanken wiederherzustellen. Sie können diese Option aktivieren, indem Sie die Datei mysqld.cnf im Texteditor nano bearbeiten:

Fügen Sie die folgende Zeile unter dem Abschnitt [mysqld] ein:

innodb force recovery

Speichern und schließen Sie die Datei nach dem Neustart des MySQL-Dienstes.

Schritt 5: Erstellen Sie eine mysqldump-Datei

Wenn Sie auf die beschädigte Tabelle zugreifen können, verwenden Sie die Option mysqldump, um alle Dumps in der neuen Datei abzulegen. Benennen Sie die neue Datei nach Ihren Wünschen und achten Sie darauf, die Endung .sql am Ende hinzuzufügen. Hier nennen wir die Datei demo.sql:

Verwenden Sie danach die Abfrage DROP TABLE, um die Tabelle aus der Datenbank zu entfernen. Sie können die folgende Syntax verwenden, um zu vermeiden, dass Sie die MySQL-Eingabeaufforderung erneut öffnen müssen:

Stellen Sie dann die Tabelle mithilfe des soeben erstellten Dump-Dokuments demo.sql wieder her:

Sie haben Ihre beschädigte MySQL-Tabelle erfolgreich repariert und können nun nahtlos mit der Datenbank arbeiten.

Fazit

Tabellenbeschädigungen oder unerwartete Systemabstürze treten wahrscheinlich auf, wenn Sie mit einer großen Datenmenge arbeiten. Es ist erwähnenswert, dass die MySQL InnoDB-Speicher-Engine fehlertoleranter ist als die vorherige MyISAM-Engine. Tabellen, die die InnoDB-Speicher-Engine verwenden, können zwar immer noch beschädigt werden, obwohl die Gefahr von Tabellenbeschädigungen und Ausfällen dank ihrer automatischen Wiederherstellungsfunktionen erheblich reduziert ist.

Schließlich gibt es viele Themen und Tutorials zu Datenbanken, die Sie in unserem Blog:

Happy Computing!

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev ist ein kreativer Designer bei CloudSigma und konzentriert sich auf eine konsistente Unternehmensidentität durch traditionelle und innovative Marketingkanäle. Er versteht es meisterhaft, künstlerische Vision mit strategischem Marketing zu verbinden, um wirkungsvolle Markengeschichten zu schaffen.

Kommentare

Noch keine Kommentare. Schreiben Sie den ersten.