[+/-]
Das Hilfsprogramm myisamchk holt
Informationen zu Ihren Datenbanktabellen und überprüft,
repariert und optimiert sie. myisamchk
funktioniert bei MyISAM
-Tabellen (d. h.
Tabellen, die über .MYD
- und
.MYI
-Dateien zum Speichern von Daten und
Indizes verfügen).
Rufen Sie myisamchk wie folgt auf:
shell> myisamchk [options
] tbl_name
...
Mithilfe von Optionen geben Sie myisamchk an, was es tun soll. Diese Optionen sind in den folgenden Abschnitten beschrieben. Eine Liste der Optionen erhalten Sie ferner, indem Sie myisamchk --help aufrufen.
Ohne Angabe von Optionen überprüft myisamchk Ihre Tabelle; dies ist die Standardoperation. Um weitere Informationen abzurufen oder myisamchk zur Durchführung von Korrekturmaßnahmen anzuweisen, geben Sie die Optionen wie nachfolgend beschrieben an.
tbl_name
ist dabei die
Datenbanktabelle, die Sie überprüfen oder reparieren wollen.
Führen Sie myisamchk in einem anderen als
dem Datenbankverzeichnis aus, dann müssen Sie den Pfad zum
Datenbankverzeichnis angeben, weil
myisamchk sonst nicht weiß, wo es die
Datenbank suchen soll. Eigentlich ist es
myisamchk sogar egal, ob die Dateien, die
Sie verarbeiten wollen, sich im Datenbankverzeichnis befinden.
Sie können die Dateien, die einer Datenbanktabelle
entsprechen, an eine andere Position kopieren und
Wiederherstellungsoperationen auch dort vornehmen.
Bei Bedarf können Sie auf der Befehlszeile auch mehrere
Tabellen für myisamchk angeben. Ferner ist
es möglich, eine Tabelle durch Angabe ihrer Indexdatei
(d. h. der Datei mit der Dateierweiterung
.MYI
) auszuwählen. Auf diese Weise
können Sie alle Tabellen in einem Verzeichnis auswählen,
indem Sie das Muster *.MYI
verwenden.
Befinden Sie sich beispielsweise in einem
Datenbankverzeichnis, dann können Sie alle dort vorhandenen
MyISAM
-Tabellen wie folgt überprüfen:
shell> myisamchk *.MYI
Befinden Sie sich nicht im Datenbankverzeichnis, dann können Sie alle dort vorhandenen Tabellen trotzdem überprüfen, indem Sie den Verzeichnispfad angeben:
shell> myisamchk /path/to/database_dir/*.MYI
Sie können sogar alle Tabellen in allen Datenbanken überprüfen. Hierzu geben Sie den Pfad zum MySQL-Datenverzeichnis mit Jokerzeichen an:
shell> myisamchk /path/to/datadir
/*/*.MYI
Die empfohlene Vorgehensweise zur schnellen Überprüfung
aller MyISAM
-Tabellen ist die folgende:
shell> myisamchk --silent --fast /path/to/datadir
/*/*.MYI
Wenn Sie alle MyISAM
-Tabellen überprüfen
und alle ggf. beschädigten Tabellen reparieren wollen,
können Sie den folgenden Befehl verwenden:
shell>myisamchk --silent --force --fast --update-state \
--key_buffer_size=64M --sort_buffer_size=64M \
--read_buffer_size=1M --write_buffer_size=1M \
/path/to/datadir/
*/*.MYI
Dieser Befehl setzt mindestens 64 Mbyte freien Arbeitsspeicher
voraus. Weitere Informationen zur Speicherzuweisung bei
myisamchk finden Sie in
Abschnitt 8.2.5, „Speicherbenutzung von myisamchk
“.
Sie müssen sicherstellen, dass kein anderes Programm die Tabellen verwendet, während Sie myisamchk ausführen. Andernfalls kann bei der Ausführung von myisamchk folgende Fehlermeldung angezeigt werden:
warning: clients are using or haven't closed the table properly
Das bedeutet, dass Sie gerade versuchen, eine Tabelle zu überprüfen, die von einem anderen Programm (z. B. dem Server mysqld) verändert wurde, welches die Datei noch nicht geschlossen hat oder abgestürzt ist, bevor es die Datei korrekt schließen konnte.
Wenn mysqld läuft, müssen Sie durch
Verwendung von FLUSH TABLES
das
Synchronisieren aller Änderungen an Tabellen erzwingen, die
noch im Speicher gepuffert sind. Nachfolgend müssen Sie
sicherstellen, dass kein anderes Programm die Tabellen
verwendet, während Sie myisamchk
ausführen. Die einfachste Möglichkeit, dieses Problem zu
umgehen, ist die Tabellenüberprüfung mit CHECK
TABLE
anstelle von myisamchk.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.