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

MySQL-Tabelle ist als abgestürzt markiert

MyISAM-Tabellen können sehr leicht zum Absturz gebracht werden. Es gibt Header-Informationen in jeder Tabelle, die verfolgen, wie viele offene Datei-Handles eine MyISAM-Tabelle hat.

Wenn mysqld abstürzt, hatte eine MyISAM-Tabelle, die offene Datei-Handles hatte, nie die Gelegenheit, die Anzahl der Datei-Handles bei jedem Schließen der Datei-Handles zu verringern. Wenn also ein neues Datei-Handle eine MyISAM-Tabelle (.MYD-Datei) öffnet und mysqld eine Diskrepanz zwischen der Anzahl von Datei-Handles entdeckt, von der eine MyISAM-Tabelle glaubt, dass sie geöffnet ist, und der Anzahl von Datei-Handles, die die MyISAM-Tabelle tatsächlich geöffnet hat, ist die Tabelle geöffnet für abgestürzt erklärt.

Es gibt vier (4) Methoden, um damit umzugehen:

METHODE 1:Richten Sie die automatische MyISAM-Reparatur ein

Siehe meinen Beitrag https://dba.stackexchange.com/a/15079/877 zum Einrichten nach einem MySQL-Neustart (15. März 2012)

METHODE #2 :Verwenden Sie InnoDB anstelle von MyISAM

InnoDB verfügt über eine in die Initialisierung der Speicher-Engine integrierte Wiederherstellung nach einem Absturz. MyISAM nicht

METHODE #3 :Verwenden Sie Aria statt MyISAM

Aria ist der Drop-in-Ersatz von MariaDB für MyISAM. Es verfügt über Mechanismen zur Wiederherstellung nach einem Absturz für einzelne Tabellen.

METHODE #4 :Töten Sie nicht -9 auf mysqld

Wenn mysqld absichtlich oder unfreiwillig abstürzt, werden Header-Informationen für alle geöffneten MyISAM-Tabellen sie in einen abgestürzten Zustand versetzen. Vermeiden Sie es, mysqld manuell zu beenden.