:: DEVELOPER ZONE
Wenn Sie mysqld mit --skip-locking laufen lassen (was auf
einigen Systemen wie Linux die Vorgabe ist), können Sie myisamchk
nicht zuverlässig dafür benutzen, eine Tabelle zu prüfen, wenn
mysqld diese Tabelle benutzt. Wenn Sie sicher sein können, dass
niemand auf die Tabellen mit mysqld zugreift, während Sie
myisamchk laufen lassen, müssen Sie nur ein mysqladmin flush-tables durchführen, bevor Sie anfangen, die Tabellen zu prüfen. Wenn
Sie das nicht garantieren können, müssen Sie mysqld herunter fahren,
während Sie die Tabellen prüfen. Wenn Sie myisamchk laufen lassen,
währen mysqld die Tabellen aktualisiert, erhalten Sie möglicherweise
die Meldung, dass eine Tabelle beschädigt ist, selbst wenn sie es nicht
ist.
Wenn Sie --skip-locking nicht benutzen, können Sie jederzeit
myisamchk benutzen, um Tabellen zu prüfen. Während Sie das tun,
warten alle Clients, die versuchen, die Tabelle zu aktualisieren, bis
myisamchk fertig ist, bevor sie weiter machen.
Wenn Sie myisamchk benutzen, um Tabellen zu reparieren oder zu
optimieren, MÜSSEN Sie stets sicherstellen, dass der
mysqld-Server die Tabelle nicht benutzt (das trifft auch zu, wenn
Sie --skip-locking benutzen). Wenn Sie mysqld nicht herunter
fahren, sollten Sie zumindest mysqladmin flush-tables ausführen,
bevor Sie myisamchk benutzen.
Dieses Kapitel beschreibt, wie man MySQL-Datenbanken auf Datenbeschädigung prüft und damit umgeht. Wenn Ihre Tabellen häufig beschädigt sind, wollten Sie versuchen, den Grund hierfür herauszufinden! See Abschnitt A.4.1, „Was zu tun ist, wenn MySQL andauernd abstürzt“.
Der Abschnitt über MyISAM-Tabellen enthält Gründe, warum eine
Tabelle beschädigt sein könnte. See Abschnitt 8.1.3, „MyISAM-Tabellenprobleme“.
Wenn Sie eine Wiederherstellung nach einem Absturz durchführen, ist es
wichtig zu wissen, das jede Tabelle tabelle in einer Datenbank mit
drei Dateien im Datenbank-Verzeichnis korrespondiert:
| Datei | Zweck |
tabelle.frm |
Tabellendefinitionsdatei (form) |
tabelle.MYD |
Daten-Datei (data) |
tabelle.MYI |
Index-Datei (index) |
Jeder der drei Dateitypen kann auf verschiedene Weisen beschädigt werden. Probleme treten aber zumeist bei Daten-Dateien und Index-Dateien auf.
myisamchk funktioniert so, dass Zeile für Zeile eine Kopie der
.MYD-(data)-Datei gemacht wird. Es beendet die Reparaturphase damit,
dass die alte .MYD-Datei entfernt wird und die neue Datei mit dem
Orginal-Dateinamen benannt wird. Wenn Sie --quick benutzen, erzeugt
myisamchk keine temporäre .MYD-Datei, sondern nimmt statt
dessen an, dass die .MYD-Datei korrekt ist, und erzeugt nur eine
neue Index-Datei, ohne die .MYD-Datei zu berühren. Das ist sicher,
weil myisamchk automatisch feststellt, wenn die .MYD-Datei
beschädigt ist, und die Reparatur in diesem Fall abbricht. Sie können
myisamchk auch mit zwei --quick-Optionen aufrufen. In diesem
Fall bricht myisamchk bei einigen Fehlern (wie doppelten
Schlüsseleinträgen) nicht ab, sondern versucht statt dessen, diese
aufzulösen, indem die .MYD-Datei verändert wird. Normalerweise ist
die Benutzung von zwei --quick-Optionen nur sinnvoll, wenn Sie zu
wenig frei Plattenplatz haben, um eine normale Reparatur durchzuführen. In
diesem Fall sollten Sie zumindest eine Datensicherung machen, bevor Sie
myisamchk laufen lassen.
© 1995-2005 MySQL AB. All rights reserved.
