Wenn eine MySQL-Datenbank beschädigt wird, fragen Sie sich vielleicht, warum die Datenbank überhaupt beschädigt wurde. Dieser Beitrag skizziert mögliche Gründe für Datenbankbeschädigungen, bevor er die Frage beantwortet:Wie repariert man eine beschädigte MySQL-Datenbank?
Gründe für die Beschädigung der MySQL-Datenbank
Eine MySQL-Datenbank kann aus folgenden Gründen beschädigt werden:
- Plötzliches Herunterfahren des Servers
- Defekt in der Hardware, die zum Speichern und Abrufen von Daten verwendet wird, wie Festplatten-Subsystem, Festplatten-Controller, Treiber usw.
- Der „mysqld“-Prozess wird beendet, während eine laufende Aktualisierung durchgeführt wird
- Softwarefehler
Es kann schwierig sein, die Ursache einer beschädigten Datenbank zu ermitteln. Was auch immer die Ursache sein mag, Sie sollten sich Gedanken darüber machen, wie Sie die beschädigte MySQL-Datenbank reparieren können.
Wie repariert man eine beschädigte MySQL-Datenbank?
Das erste, was Sie sich ansehen müssen, ist die Fehlermeldung, die Sie erhalten. Im Folgenden finden Sie einige Fehlermeldungen, auf die Sie stoßen können, wenn die MySQL-Datenbank beschädigt wird:
Fehler 144: Tabelle ist abgestürzt und die letzte Reparatur ist fehlgeschlagen
Fehler 141: Doppelter eindeutiger Schlüssel oder Einschränkung beim Schreiben oder Aktualisieren
Fehler 136: Kein Platz mehr in der Indexdatei
Fehler 134: Datensatz wurde bereits gelöscht
Fehler 126: Indexdatei ist abgestürzt/falsches Dateiformat
Fehler: Die Datei „wtlicensemanager.dll“ konnte nicht gefunden werden
Wenn Sie die Reparatur kostenlos durchführen möchten, haben Sie zwei Möglichkeiten:
- Machen Sie es manuell.
- Machen Sie es mit Hilfe von Software, die den Testzeitraum nutzt.
Eine Datenbankwiederherstellungssoftware kann die beschädigte Datenbank besser und schneller reparieren.
Hier ist eine Softwareanwendung, mit der Sie die beschädigte MySQL-Datenbank reparieren können:
Dieses Tool zur Reparatur von MySQL-Datenbanken repariert Datenbanken, die mit InnoDB- und MyISAM-Datenbank-Engines von MySQL erstellt wurden. Sie können die Demoversion des SQL-Reparaturtools herunterladen, um eine Vorschau der wiederherstellbaren Datenbank anzuzeigen, bevor Sie sie speichern.
Hauptmerkmale:
- Kann die MySQL-Datenbank auf Windows- und Linux-Systemen wiederherstellen.
- Stellt InnoDB-Dateien (.ibdata, .ibd und .frm) und MyISAM-Dateien (myd, .myi und .frm) wieder her
- Stellt Datenbankobjekte wie Tabellen, Tabelleneigenschaften, Datentypen, Ansichten, Trigger usw. wieder her
- Erlaubt die selektive Wiederherstellung von Datenbankkomponenten
Wie repariert man eine beschädigte MySQL-Datenbank manuell?
Es gibt zwei Arten von Speicher-Engines in MySQL:InnoDB und MyISAM. Die InnoDB-Tabelle enthält FRM-, IBDATA- und IDB-Dateien, während die MyISAM-Tabelle FRM-, MYD- und MYI-Dateien enthält.
Bevor wir fortfahren
Hier sind ein paar Dinge, die Sie beachten sollten, bevor Sie eine manuelle Wiederherstellung versuchen:
- Starten Sie den Server nicht neu
Wenn Sie den Server neu starten, kann der Server die beschädigte Datenbank in den fehlerverdächtigen Modus versetzen. Dadurch wird die Datenbank deaktiviert. Es kann auch Fehler beim Herstellen einer Verbindung zur Datenbank verursachen. Sie sollten die Wiederherstellung versuchen, ohne den Server neu zu starten.
- Einzelbenutzermodus verwenden
Stellen Sie sicher, dass Sie der einzige Benutzer sind, der mit der Datenbank verbunden ist. Der Einzelbenutzermodus gibt Ihnen die vollständige Kontrolle und eliminiert die Einmischung anderer Benutzer.
- MySQL nicht aktualisieren
Sie können daran denken, die MySQL-Datenbank zu aktualisieren, um die beschädigten Dateien zu reparieren. Dies ist jedoch nicht der Fall. Ein Upgrade kann zu dauerhaftem Datenverlust führen.
- Erstellen Sie eine Sicherungskopie der beschädigten MySQL-Datenbank
Es ist wichtig, eine Sicherungskopie der beschädigten Datei zu haben, da Fehler auftreten können, die zu Datenverlust führen können. Es gibt keine Garantie dafür, dass Ihre manuellen Schritte die fehlerfreien Dateien nicht beeinträchtigen. Daher ist es sicher, eine Sicherungskopie zu erstellen, bevor Sie eine manuelle Wiederherstellung versuchen.
Verwenden Sie zum Sichern den folgenden Befehl:
mysqldump Datenbankname> Datenbankname.sql
Geben Sie einfach Ihren Datenbanknamen anstelle von database_name ein.
Wenn das obige nicht funktioniert, versuchen Sie Folgendes:
mysqldump –u[Benutzername] –p[Passwort] [Datenbankname]> [dump_file].sql
Es gibt eine andere Möglichkeit, die Datenbank zu sichern:
Dienst mysqld stoppen
cp -r /var/lib/mysql /var/lib/mysql_bkp
Jetzt, wo wir das Backup haben, können wir versuchen, die beschädigte MySQL-Datenbank zu reparieren.
Wie kann ich die MySQL-Datenbank manuell wiederherstellen?
MyISAM-Datenbank reparieren
Wenn Sie die MyISAM-Datenbankspeicher-Engine für Ihre Datenbanktabelle verwenden, können Sie die Tabelle mit den folgenden Befehlen reparieren:
Mysqlcheck
Wenn Ihr MySQL-Server läuft, führen Sie den folgenden mysqlcheck-Befehl aus, um Ihre Tabelle zu reparieren:
mysqlcheck -r [Datenbankname]
Stellen Sie sicher, dass Sie „database_name“ durch den Namen Ihrer Datenbank ersetzen.
Myisamchk
Wenn der Server nicht läuft, versuchen Sie, die Datenbanktabelle mit dem myisamchk-Befehl zu reparieren:
Hinweis: Bevor Sie diesen Befehl ausführen, vergewissern Sie sich, dass auf dem Server keine Tabellen geöffnet sind.
myisamchk Tabellenname
Reparieren Sie den Tabellennamen mit dem Tabellennamen in Ihrem Fall. Dieser Befehl repariert automatisch Ihre Tabelle.
Geben Sie Folgendes ein, um den Server neu zu starten:
Dienst mysqld starten
InnoDB-Wiederherstellung erzwingen
Sie müssen eine erzwungene InnoDB-Wiederherstellung durchführen, um Daten aus einer beschädigten InnoDB-Datenbanktabelle zu extrahieren.
Schritt 1: Zuerst müssen Sie die Datei my.cnf öffnen.
Suchen Sie in dieser Datei den Abschnitt [mysqld].
Fügen Sie diesem Abschnitt die folgende Zeile hinzu:
innodb_force_recovery=1
Speichern Sie nun die Konfigurationsdatei und starten Sie den MySQL-Server neu. Sie können den Wert von innodb_force_recovery von 1 bis 6 festlegen. Ein Wert über 4 wird jedoch nicht empfohlen, da dies die Daten beschädigen kann.
Schritt 2: Dump die Tabellendaten in eine neue Datei.
Verwenden Sie dazu den folgenden Befehl:
mysqldump –u user –p Datenbankname Tabellenname> single_dbtable_dump.sql
Schritt 3: Löschen Sie die beschädigte Tabelle aus der Datenbank.
mysql –u user –p –execute="DROP TABLE db_name.table_name"
Schritt 4: Stellen Sie die Tabelle aus der Speicherauszugsdatei wieder her.
mysql –u user –p
Schritt 5: Sobald die Dateien repariert sind, deaktivieren Sie den erzwungenen Wiederherstellungsmodus mit dem folgenden Befehl:
#innodb_force_recovery=…
Jetzt können Sie den MySQL-Dienst im normalen Modus neu starten.
Wir hoffen, dass die oben genannten Methoden Ihnen helfen werden, die beschädigte MySQL-Datenbank zu reparieren.