Wie man beschädigte Tabellen in MySQL repariert

0 Aktien
0
0
0
0

Einführung

Manchmal können MySQL-Tabellen beschädigt werden, was bedeutet, dass ein Fehler aufgetreten ist und die darin enthaltenen Daten nicht mehr gelesen werden können. Der Versuch, aus einer beschädigten Tabelle zu lesen, führt in der Regel zu einem Serverabsturz.

Häufige Gründe für Tabellenbeschädigung
  • Der MySQL-Dienst stoppt mitten im Schreibvorgang von Daten.
  • Die Tabelle wird von einer externen Anwendung geändert, während sie vom Server geändert wird.
  • Unerwarteter Fahrzeugausfall
  • Computerhardwareausfall
  • Softwarefehler im MySQL-Code

Wenn Sie vermuten, dass eine Ihrer Tabellen beschädigt ist, sollten Sie Ihr Datenverzeichnis sichern, bevor Sie mit der Reparatur oder Fehlerbehebung beginnen. Dadurch minimieren Sie das Risiko eines Datenverlusts.

Schritte zur Reparatur einer beschädigten Tabelle in MySQL

Zuerst muss der MySQL-Dienst gestoppt werden:

sudo systemctl stop mysql

Hinweis: Auf manchen Systemen, wie z. B. Rocky Linux, kann der MySQL-Dienst anders heißen. mysqld Um bekannt zu werden.

Kopieren Sie anschließend alle Ihre Daten in ein neues Sicherungsverzeichnis. Auf Ubuntu-Systemen ist das Standarddatenverzeichnis: /var/lib/mysql/ Ist:

cp -r /var/lib/mysql /var/lib/mysql_bkp

Nachdem Sie die Datensicherung durchgeführt haben, können Sie überprüfen, ob die Tabelle tatsächlich beschädigt ist. Wenn die Tabelle nicht vom Speichersystem gesichert wurde, MyISAM Wenn Sie MySQL verwenden, können Sie es mit dem Befehl neu starten. Tabelle prüfen Überprüfen Sie dies innerhalb der MySQL-Eingabeaufforderung:

sudo systemctl start mysql
CHECK TABLE table_name;

Wenn die Tabelle beschädigt ist, wird Ihnen eine entsprechende Meldung angezeigt. Eine beschädigte MyISAM-Tabelle lässt sich in der Regel mit dem folgenden Befehl reparieren: REPARATURTISCH Ich habe es repariert:

REPAIR TABLE table_name;

Wenn die Reparatur erfolgreich war, wird in der Ausgabe eine Meldung ähnlich der folgenden angezeigt:

Output
+--------------------------+--------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+--------------------------+--------+----------+----------+
| database_name.table_name | repair | status | OK |
+--------------------------+--------+----------+----------+

Falls die Tabelle immer noch beschädigt ist, bietet die MySQL-Dokumentation alternative Methoden zur Reparatur beschädigter Tabellen.

Reparieren beschädigter Tabellen mit der InnoDB-Speicher-Engine

Wenn die Tabelle vom Speichermodul beschädigt wird InnoDB Der Reparaturprozess variiert je nach verwendeter MySQL-Version. InnoDB dient seit Version 8.0 als Standard-Speicher-Engine für MySQL und verfügt über automatische Funktionen zur Erkennung und Reparatur von Datenbeschädigungen. InnoDB erkennt fehlerhafte Seiten anhand der Prüfsummen jeder gelesenen Seite und stoppt den MySQL-Server automatisch, sobald eine Abweichung in den Prüfsummen festgestellt wird.

Die Reparatur von InnoDB-Tabellen ist selten nötig, da InnoDB über einen Mechanismus zur Fehlerbehebung verfügt, der die meisten Probleme durch einen Neustart des Servers behebt. Sollten Sie jedoch einmal eine InnoDB-Tabelle neu erstellen müssen, finden Sie in der MySQL-Dokumentation entsprechende Anweisungen. Dump und Reload empfiehlt. Diese Methode beinhaltet das Wiederherstellen des Zugriffs auf die beschädigte Tabelle mithilfe des Tools. mysqldump Es dient dazu, eine logische Sicherung einer Tabelle zu erstellen, die die Tabellenstruktur und die darin enthaltenen Daten beibehält, und die Tabelle anschließend wieder in die Datenbank einzufügen.

Starten Sie den MySQL-Dienst neu.

Versuchen Sie zunächst, den MySQL-Dienst neu zu starten, um zu sehen, ob Sie dadurch wieder Zugriff auf den Server erhalten:

sudo systemctl restart mysql

Falls der Server weiterhin nicht erreichbar ist, können Sie die Option nutzen. erzwingen_Wiederherstellung Aktivieren Sie InnoDB in den Einstellungen. Erstellen Sie dazu eine Datei. mysqld.cnf Bearbeiten. Auf Ubuntu- und Debian-Systemen befindet sich diese Datei üblicherweise in /etc/mysql/ Auf Red Hat- und Rocky-Systemen befindet sich diese Datei üblicherweise in /etc/my.cnf.d Es befindet sich dort.

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Im Abschnitt [mysqld] Fügen Sie die folgende Zeile hinzu:

. . .
[mysqld]
. . .
innodb_force_recovery=1

Nachdem Sie die Änderungen gespeichert und die Datei geschlossen haben, starten Sie den MySQL-Dienst erneut. Falls Sie auf die beschädigte Tabelle zugreifen können, verwenden Sie das Tool. mysqldump Verwenden Sie diese Datei, um die Tabellendaten zu sichern. Sie können die Datei beliebig benennen, hier wird sie jedoch so genannt. out.sql Wir nennen es:

mysqldump database_name table_name > out.sql

Löschen Sie anschließend die Tabelle aus der Datenbank. Verwenden Sie dazu folgenden Befehl:

mysql -u user -p --execute="DROP TABLE database_name.table_name"

Erstellen Sie abschließend die Tabelle mithilfe der Datei. entsorgen Rufen Sie die zuletzt erstellte Datei ab:

mysql -u user -p < out.sql

Beachten Sie, dass die InnoDB-Speicher-Engine im Allgemeinen robuster ist als die ältere MyISAM-Engine. Zwar können auch InnoDB-Tabellen beschädigt werden, doch dank der Selbstheilungsfunktionen ist das Risiko von Tabellenbeschädigungen und Systemabstürzen deutlich geringer.

Ergebnis

Mithilfe dieser Anleitung haben Sie gelernt, wie Sie beschädigte Tabellen in MySQL reparieren und verschiedene Methoden zur Behebung von Problemen in den Speichermodulen MyISAM und InnoDB anwenden. Sichern Sie Ihre Daten immer, bevor Sie Änderungen vornehmen, um Datenverlust zu vermeiden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Das könnte Ihnen auch gefallen