Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie behebt man häufige Probleme mit der MySQL-Datenbank?

Zusammenfassung: Dieser Artikel listet einige der häufigsten Fehler auf, auf die Sie stoßen können, wenn eine MySQL-Tabelle beschädigt wird. Es beschreibt auch die möglichen Gründe für die Beschädigung der MySQL-Datenbanktabelle. Der Artikel erklärt auch, was Sie tun können, um beschädigte Tabellen zu reparieren, und wie eine MySQL-Datenbank-Reparatursoftware nützlich sein kann, um Daten in der Tabelle und allen anderen Datenbankobjekten wiederherzustellen.

Als Benutzer einer MySQL-Datenbank können Sie auf einen dieser Fehler stoßen:

  • „Tabelle ist als abgestürzt markiert und sollte repariert werden“
  • „Tabelle ist abgestürzt und letzte Reparatur fehlgeschlagen“
  • „Tabelle tbl_name existiert nicht“
  • „Falsche Schlüsseldatei für Tabelle:‚…‘. Versuchen Sie es zu reparieren“ usw.

Dies sind Warnzeichen dafür, dass Ihre MySQL-Tabelle beschädigt ist.

Was verursacht eine Beschädigung in der MySQL-Datenbanktabelle?

Im Folgenden sind mögliche Gründe aufgeführt, die zu einer Beschädigung der MySQL-Datenbanktabelle führen:

  • Probleme in der zugrunde liegenden Plattform, die von MySQL verwendet wird, einschließlich Disk-Subsystem, Treiber, Controller usw.
  • Abruptes Herunterfahren des Systems oder Serverabsturz
  • Der MySQL-Prozess wird während des Schreibens in die Datenbank abgebrochen
  • Softwarefehler oder Hardwarefehler

Wenn Sie auf einen dieser MySQL-Korruptionsfehler stoßen, können die Daten in den Tabellen unzugänglich werden. Lassen Sie uns die Lösungen besprechen, um die beschädigten Tabellen zu reparieren.

Wie behebt man MySQL-Datenbankbeschädigungsfehler?

Wenn Sie über eine aktualisierte Sicherung Ihrer Datenbank verfügen, stellen Sie die Datenbank aus der Sicherung wieder her, um die unzugänglichen Tabellendaten wiederherzustellen. Wenn die Sicherung nicht verfügbar ist, führen Sie die Schritte in der folgenden Reihenfolge aus, um beschädigte MySQL-Tabellen zu reparieren und Daten wiederherzustellen:

Hinweis: Erstellen Sie eine Sicherungskopie Ihrer MySQL-Datenbank und -Tabellen, um weitere Schäden während des Reparatur- und Wiederherstellungsprozesses zu vermeiden.

Schritt 1:Tabelle auf Fehler prüfen

Zuerst müssen Sie die Datenbanktabelle auf Beschädigungsfehler überprüfen. Sie können die PRÜFTABELLE verwenden Befehl zur Diagnose beschädigter InnoDB- und MyISAM-Tabellen:

CHECK TABLE tbl_name-Option;

Ersetzen Sie hier „tbl_name“ durch den Namen der beschädigten Datenbanktabelle. Ersetzen Sie „Option“ durch eine der folgenden Optionen:SCHNELL, SCHNELL, MITTEL, ERWEITERT und GEÄNDERT.

Option Beschreibung
SCHNELL Führt eine schnellere Reparatur von InnoDB- und MyISAM-Tabellen durch. Überspringt das Durchsuchen der Zeilen, um nach falschen Verknüpfungen zu suchen
SCHNELL Überprüfen Sie nur MyISAM-Tabellen, die nicht ordnungsgemäß geschlossen wurden. Nicht auf InnoDB-Tabellen anwenden.
GEÄNDERT Prüfen Sie nur MyISAM-Tabellen, die seit der letzten Prüfung nicht geschlossen wurden. Nicht auf InnoDB-Tabellen anwenden.
MITTEL Überprüfen Sie, ob die gelöschten Links gültig sind, indem Sie die Zeilen scannen. Gilt nur für MyISAM-Tabellen.
ERWEITERT Führt eine vollständige Schlüsselsuche für alle Schlüssel für jede Zeile der MyISAM-Tabelle durch. Die Ausführung dauert lange.

Verwenden Sie den folgenden Befehl, um mehr als eine Tabelle auf Beschädigung zu prüfen:

CHECK TABLE tbl_name1, tbl_name2, tbl_name 3 option;

Hinweis: Der Befehl CHECK TABLE kann nur verwendet werden, wenn der MySQL-Prozess läuft. Wenn der Prozess/Server jedoch nicht läuft, können Sie den folgenden „myisamchk“-Befehl verwenden, um MyISAM-Tabellen auf Beschädigungen zu überprüfen:

myisamchk [Optionen] tbl_name …

Dieser Befehl prüft eine einzelne Tabelle.

Führen Sie den folgenden Befehl aus, um alle Tabellen in der MySQL-Datenbank auf Beschädigung zu prüfen:

myisamchk /path/to/datadir/*/*.MYI

Das Dienstprogramm myisamchk funktioniert nicht für InnoDB-Tabellen.

Schritt 2:Beschädigte Tabelle reparieren

Hinweis: Der Befehl myisamchk gilt nur für MyISAM-Tabellen und funktioniert nicht für InnoDB-Tabellen. Zum Reparieren und Wiederherstellen einer Innodb-Tabelle fahren Sie mit Schritt 3 fort.

Das Dienstprogramm myisamchk kann auch dabei helfen, eine beschädigte (beschädigte) MyISAM-Tabelle zu reparieren. Gehen Sie wie folgt vor, um das Dienstprogramm zum Reparieren der beschädigten Tabelle zu verwenden:

  1. Halten Sie den MySQL-Dienst an, indem Sie Folgendes eingeben:
mysqld-Dienst stoppen

cd /var/lib/mysql

  1. Wechseln Sie in das Verzeichnis, in dem sich die Datenbank befindet.
cd /var/lib/mysql/table_name

myisamchk

  1. Um eine beschädigte Tabelle zu reparieren, führen Sie den folgenden Befehl aus, indem Sie TABLE durch den Namen der zu reparierenden Tabelle ersetzen:
myisamchk – stellt wieder her
  1. Starten Sie Ihren MySQL-Dienst neu.
Dienst mysqld start

Schritt 3:InnoDB-Wiederherstellung erzwingen

Um Beschädigungen in InnoDB-Tabellen zu beheben, verwenden Sie ‘innodb_force_recovery’ Möglichkeit. Diese Option erzwingt den Start der InnoDB-Datenbank-Engine ohne Hintergrundoperationen, wodurch Sie Ihre Tabellen sichern können.

  1. Öffnen Sie Ihre MySQL-Konfigurationsdatei (my.cnf) und fügen Sie Folgendes zum Abschnitt [mysqld] hinzu:
[mysqld]

innodb_force_recovery=1

Service-Mysql-Neustart

Sie können innodb_force_recovery mit einem Wert von 1 starten und den Wert nach Bedarf erhöhen. Nachdem Sie die Innodb-Wiederherstellung initiiert haben, starten Sie Ihren MySQL-Server neu und sichern Sie dann Ihre Tabellen. In einigen Situationen müssen Sie den Wert jedoch möglicherweise auf 4 bis 6 setzen, wodurch die Daten beschädigt werden können.

Achtung! Wenn Sie die Tabellen mit einem Wert innodb_force_recovery=3 oder weniger sichern können, können Sie den Wiederherstellungsprozess sicher durchführen. Das Festlegen von innodb_force_recovery auf einen Wert größer als 4 birgt jedoch ein Datenverlustrisiko.

  1. Wenn Sie Ihre Datenbank starten können, führen Sie den folgenden mysqldump-Befehl aus, um alle Datenbanken in eine SQL-Datei zu exportieren (d. h. eine Sicherungsdatei, die alle Anweisungen zum Wiederherstellen der Datenbank enthält):
mysqldump –all-databases –add-drop-database –add-drop-table> mydump.sql
  1. Starten Sie den MySQL-Dienst und versuchen Sie dann, die Datenbank mit den betroffenen Tabellen mit dem Befehl DROP DATABASE zu löschen. Wenn Sie eine Datenbank nicht löschen können, versuchen Sie, sie manuell zu löschen, indem Sie die folgenden Schritte ausführen, nachdem Sie den MySQL-Server gestoppt haben.
cd /var/lib/mysql

rm -rf

  1. Nachdem Sie den obigen Befehl ausgeführt haben, kommentieren Sie die folgende Zeile in [mysqld] aus, um die InnoDB-Wiederherstellung zu deaktivieren:
#innodb_force_recovery=…
  1. Speichern Sie alle Änderungen, die Sie an der Datei my.cnf vorgenommen haben, und starten Sie dann Ihren Server.
Dienst mysqld start
  1. Stellen Sie die Datenbank und die Tabelle aus dem MySQL-Dump (Sicherungsdatei) wieder her, den Sie in Schritt 2 erstellt haben:
mysql -u user -p

Wenn Sie diese Schritte ausführen, werden die MySQL-Datenbank und ihre Tabellen wiederhergestellt. Wenn die Daten immer noch fehlen, müssen Sie eine professionelle MySQL-Datenbank-Reparatursoftware wie Stellar Repair for MySQL verwenden um Ihre Datenbank wiederherzustellen und ihre Daten wiederherzustellen. Die Software kann sowohl InnoDB- als auch MyISAM-Tabellen reparieren, wobei die Daten intakt bleiben. Es unterstützt die Reparatur von MySQL-Tabellen sowohl auf Windows- als auch auf Linux-Systemen.

Schlussfolgerung

MySQL-Datenbanktabellen können durch plötzliches Herunterfahren des Systems, Serverabsturz, Hardwarefehler, Fehler im MySQL-Code usw. beschädigt werden. Eine Beschädigung der MySQL-Tabelle führt zu den in diesem Artikel aufgeführten Fehlern. Sie können versuchen, beschädigte MyISAM-Tabellen mit dem Dienstprogramm „myisamchk“ zu reparieren oder die Wiederherstellung von InnoDB zu erzwingen. Es kann jedoch viel Zeit in Anspruch nehmen, MyISAM-Tabellen zu reparieren und eine InnoDB-Wiederherstellung manuell durchzuführen. Außerdem kann der manuelle Wiederherstellungsprozess zu Datenverlust führen. Eine bessere Alternative ist die Verwendung der Software Stellar Repair for MySQL. Die Software ermöglicht das Reparieren von sowohl MyISAM- als auch InnoDB-Datenbanktabellen, ohne Änderungen an den Originaldaten vorzunehmen.