Tutorials  /  Databases

So reparieren Sie beschädigte Tabellen in MySQL

Ccentron Redaktion · Dezember 2024 ·4 Min. Lesezeit ·Databases, Tutorial

Gelegentlich können MySQL-Tabellen beschädigt werden, was bedeutet, dass ein Fehler aufgetreten ist und die darin enthaltenen Daten nicht mehr lesbar sind. Versuche, auf eine beschädigte Tabelle zuzugreifen, führen normalerweise zum Absturz des Servers.

Häufige Ursachen für beschädigte Tabellen

  • Der MySQL-Server wird während eines Schreibvorgangs gestoppt.
  • Ein externes Programm ändert eine Tabelle, die gleichzeitig vom Server bearbeitet wird.
  • Der Rechner wird unerwartet heruntergefahren.
  • Die Computerhardware versagt.
  • Es gibt einen Softwarefehler im MySQL-Code.
DB

Passende Infrastruktur bei centron

Datenbanken im Betrieb wollen gepflegt werden: centron übernimmt auf Wunsch Updates, Backups und Monitoring – von der einzelnen Instanz bis zum Cluster. Managed Cluster ansehen →

Backup vor der Fehlersuche

Wenn Sie vermuten, dass eine Ihrer Tabellen beschädigt ist, sollten Sie vor der Fehlersuche oder der Reparatur ein Backup Ihres Datenverzeichnisses erstellen. Dies minimiert das Risiko eines Datenverlusts.

Stoppen des MySQL-Dienstes

Zuerst stoppen Sie den MySQL-Dienst:

Konsole
sudo systemctl stop mysql

Hinweis: Auf einigen Plattformen wie Rocky Linux kann der MySQL-Dienst mysqld heißen.

Erstellen eines Backups

Danach kopieren Sie alle Ihre Daten in ein neues Backup-Verzeichnis. Auf Ubuntu-Systemen befindet sich das Standarddatenverzeichnis unter /var/lib/mysql/:

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

Überprüfung auf Beschädigungen

Nachdem Sie das Backup erstellt haben, können Sie untersuchen, ob die Tabelle tatsächlich beschädigt ist. Wenn die Tabelle die MyISAM-Speicher-Engine verwendet, können Sie dies überprüfen, indem Sie MySQL neu starten und eine CHECK TABLE-Anweisung ausführen:

Konsole
sudo systemctl start mysql
CHECK TABLE table_name;

Reparatur von MyISAM-Tabellen

Eine Nachricht erscheint in der Ausgabe dieser Anweisung, die angibt, ob die Tabelle beschädigt ist. Wenn die MyISAM-Tabelle tatsächlich beschädigt ist, kann sie normalerweise durch eine REPAIR TABLE-Anweisung repariert werden:

Code
REPAIR TABLE table_name;

Ausgabe-Beispiel

Wenn die Reparatur erfolgreich war, sehen Sie eine Nachricht wie diese in der Ausgabe:

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

Bearbeitung von InnoDB-Tabellen

Wenn die beschädigte Tabelle die InnoDB-Speicher-Engine verwendet, ist der Reparaturprozess anders. InnoDB ist ab MySQL-Version 8.0 die Standard-Speicher-Engine und verfügt über automatisierte Prüf- und Reparaturvorgänge.

MySQL neu starten

Versuchen Sie, den MySQL-Dienst neu zu starten:

Konsole
sudo systemctl restart mysql

Verwendung der Option Force Recovery

Wenn der Server weiterhin nicht zugänglich ist, aktivieren Sie die Option force_recovery in der Datei mysqld.cnf:

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

Fügen Sie in der Sektion [mysqld] die folgende Zeile hinzu:

Code
[mysqld]
innodb_force_recovery=1

Speichern und schließen Sie die Datei, und starten Sie den MySQL-Dienst erneut:

Konsole
sudo systemctl restart mysql

Dumpen und Neu-Laden der Tabelle

Wenn Sie erfolgreich auf die beschädigte Tabelle zugreifen können, verwenden Sie das Tool mysqldump, um ein neues Backup der Tabelle zu erstellen:

Code
mysqldump database_name table_name > out.sql

Löschen Sie dann die Tabelle aus der Datenbank:

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

Laden Sie anschließend die Tabelle mit der erstellten Dump-Datei wieder in die Datenbank:

Code
mysql -u user -p < out.sql

Fazit

Die InnoDB-Speicher-Engine ist im Allgemeinen fehlertoleranter als die ältere MyISAM-Engine. Obwohl auch InnoDB-Tabellen beschädigt werden können, minimieren ihre Auto-Recovery-Funktionen das Risiko von Tabellenbeschädigungen und Abstürzen erheblich.

Jetzt 200 € Guthaben sichern

Testen Sie Ihr Setup auf ccloud³

Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.

centron Redaktion Technische Redaktion

Das Redaktionsteam von centron schreibt Anleitungen aus dem Betriebsalltag: getestet auf unserer eigenen Plattform, betrieben im Rechenzentrum in Hallstadt bei Bamberg.

Kategorie Databases
Teilen
Noch offene Fragen?

Unser Team hilft Ihnen bei Ihrem konkreten Setup weiter – von Menschen, die die Plattform selbst betreiben.

War dieses Tutorial hilfreich?

Ihre Antwort wird anonym gespeichert und hilft uns, die Tutorials zu verbessern.

Kommentare

Noch keine Kommentare – stellen Sie die erste Frage zu diesem Tutorial.

Zum Kommentieren anmelden

Kommentare stehen centron-Kunden offen. Melden Sie sich in Ihrem Konto an, um eine Frage zu diesem Tutorial zu stellen.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren