Обратите внимание: перед запуском
mysqld с --log
необходимо проверить все
используемые таблицы с помощью
myisamchk (see
Глава 4, Администрирование баз данных).
Если демон mysqld умрет или
зависнет, следует запустить
mysqld с опцией
--log. Если аварийное
завершение mysqld снова
повторится, то можно исследовать
часть журнала, относящуюся к
запросу, убившему mysqld.
При использовании опции
--log без имени файла данный
журнал хранится в каталоге базе
данных как `hostname`.log. В
большинстве случаев именно
последний запрос в системном
журнале приводит к смерти
mysqld, но при возможности
лучше в этом убедиться:
перезапустите mysqld и
выполните найденный запрос из
командной строки mysql.
Если запрос выполняется, то
следует протестировать все
сложные запросы, которые не
завершились.
Можно также попробовать выполнить
команду EXPLAIN для всех
выражений SELECT, которые
занимают длительное время, чтобы
убедиться, что mysqld
правильно использует индексы. See
Раздел 5.2.1, «Синтаксис оператора EXPLAIN (получение информации о SELECT)».
Запросы, требующие слишком
длительного времени для
выполнения, можно выявить,
запустив mysqld с
параметром --log-slow-queries. See
Раздел 4.9.5, «Журнал медленных запросов».
Если в журнале ошибок (обычно он
имеет имя `hostname`.err)
присутствует запись "mysqld
restarted", то у вас есть шанс
найти запрос, вызывающий смерть
mysqld. В этом случае
необходимо проверить все таблицы с
помощью команды myisamchk (see
Глава 4, Администрирование баз данных) и
проанализировать запросы в
журналах MySQL, чтобы определить,
какой из них не работает. Если
такой запрос найден, прежде всего
необходимо попытаться сделать
апгрейд MySQL до новейшей версии.
Если же это не помогает и нет
ничего похожего в архиве списка
рассылки mysql, пришлите
отчет о данном сбое по адресу
<mysql@lists.mysql.com>. Ссылки на
архивы списка рассылки доступны по
адресу
http://lists.mysql.com/.
Если демон mysqld был
запущен с параметром
myisam-recover, то MySQL
автоматически проверяет и
пытается восстановить таблицы MyISAM
(если они отмечены как "таблица не
закрыта правильно" или "таблица
повреждена"). В этом случае MySQL
запишет в файл hostname.err
предупреждение: "Warning: Checking table
...", за которым следует
"Warning: Repairing table", если
данную таблицу следует исправить.
Если таких ошибок в журнале много,
а mysqld перед этим не
умирал со сбоем, то что-то работает
неправильно и необходимы
дальнейшие исследования. See
Раздел 4.1.1, «Параметры командной строки mysqld».
Конечно, неожиданная смерть
mysqld - событие
малоприятное, но в этом случае
следует не изучать сообщения
"Checking table...", а попытаться
найти причины остановки
mysqld.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
© 1995-2005 MySQL AB. All rights reserved.
