698 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
0x80c1fd9
0x80c1686
K¨onnen Sie herausfinden, wo mysqld starb, indem Sie folgendes tun:
1. Kopieren Sie die obigen Zahlen in eine Datei, zum Beispiel ‘mysqld.stack’.
2. Machen Sie eine symbolische Datei f¨ur den mysqld-Server:
nm -n libexec/mysqld > /tmp/mysqld.sym
Beachten Sie, dass viele MySQL-Bin¨ardistributionen die obige Datei namens
mysqld.sym.gz enthalten. In diesem Fall m¨ussen Sie sie wie folgt entpacken:
gunzip < bin/mysqld.sym.gz > /tmp/mysqld.sym
3. F¨uhren Sie resolve_stack_dump -s /tmp/mysqld.sym -n mysqld.stack aus.
Das gibt aus, wo mysqld starb. Wenn Ihnen das nicht hilft, herauszufinden, warum
mysqld starb, sollten Sie einen Bug-Bericht machen und die Ausgabe des obigen Befehls
in diesen Bericht einschließen.
Beachten Sie aber, dass es uns in den meisten F¨allen nicht weiterhilft, nur einen Stack-
Trace zu haben, um die Ursache des Problems herauszufinden. Um den Bug feststellen
oder einen Workaround zur Verf¨ugung stellen zu k¨onnen, m¨ussen wir in den meisten
F¨allen die Anfrage kennen, die mysqld t¨otete, und am besten einen Testfall, so dass
wir das Problem wiederholen k¨onnen! Siehe Abschnitt 2.6.2.3 [Bug reports], Seite 30.
D.1.5 Log-Dateien benutzen, um Gr¨unde f¨ur Fehler in mysqld zu
finden
Beachten Sie, dass Sie vor dem Start von mysqld mit --log alle Ihre Tabellen mit myisamchk
pr¨ufen sollten. Siehe Kapitel 5 [MySQL Database Administration], Seite 170.
Wenn mysqld stirbt oder h¨angenbleibt, sollten Sie ihn mit --log starten. Wenn mysqld
wieder stirbt, k¨onnen Sie das Ende der Log-Datei nach der Anfrage durchsuchen, die mysqld
t¨otete.
Wenn Sie --log ohne einen Dateinamen verwenden, wird das Log im Datenbank-Verzeichnis
als ’hostname’.log gespeichert. In den meisten F¨allen ist es die letzte Anfrage in der Log-
Datei, die mysqld t¨otete, aber das sollten Sie falls m¨oglich sicherstellen, indem Sie mysqld
neu starten und dieselbe Anfrage mit dem mysql-Kommandozeilenwerkzeug wiederholen.
Wenn das funktioniert, sollten Sie ebenfalls alle komplizierten Anfragen testen, die nicht
beendet wurden.
Sie k¨onnen auch den Befehl EXPLAIN auf alle SELECT-Statements ausprobieren, die lange Zeit
ben¨otigen, um sicherzustellen, dass mysqld Indexe korrekt benutzt. Siehe Abschnitt 6.2.1
[EXPLAIN], Seite 329.
Sie finden Anfragen, die zur Ausf¨uhrung lange Zeit ben¨otigen, indem Sie mysqld mit --
log-slow-queries starten. Siehe Abschnitt 5.9.5 [Slow query log], Seite 304.
Wenn Sie den Text mysqld restarted in der Fehler-Log-Datei-Datei (normalerweise na-
mens ‘hostname.err’) finden, haben Sie wahrscheinlich eine Anfrage gefunden, die mysqld
zum Absturz brachte. Wenn das passiert, sollten Sie alle Ihre Tabellen mit myisamchk
pr¨ufen (siehe Kapitel 5 [MySQL Database Administration], Seite 170) und die Anfragen in
den MySQL-Log-Dateien untersuchen, um herauszufinden, ob eine nicht funktioniert. Wenn
Comentarios a estos manuales