Spec-Zone .ru
спецификации, руководства, описания, API

23.4.1.6. Используя Журналы Сервера, чтобы Найти Причины Ошибок в mysqld

Отметьте, что прежде, чем запустить mysqld с общего включенного журнала запросов, следует проверить все свои таблицы с myisamchk. См. Главу 5, MySQL Server Administration.

Если mysqld умирает или зависает, следует запустить mysqld с общего включенного журнала запросов. См. Раздел 5.2.3, "Общий Журнал запросов". Когда mysqld умирает снова, можно исследовать конец файла журнала для запроса, который уничтожил mysqld.

Если Вы используете значение по умолчанию общий файл журнала запросов, журнал сохранен в каталоге базы данных как host_name.log В большинстве случаев это - последний запрос в файле журнала, который уничтожил mysqld, но если возможный следует проверить это, перезапуская mysqld и выполняя найденный запрос от mysql инструментов командной строки. Если это работает, следует также протестировать все сложные запросы, которые не завершались.

Можно также попробовать команду EXPLAIN на всех SELECT операторы, который занимает много времени, чтобы гарантировать, что mysqld использует, индексируют должным образом. См. Раздел 13.8.2,"EXPLAIN Синтаксис".

Можно найти запросы, которые занимают много времени, чтобы выполниться, запускаясь mysqld с медленным включенным журналом запросов. См. Раздел 5.2.5, "Медленный Журнал запросов".

Если Вы находите текст mysqld restarted в файле журнала ошибок (обычно называемый hostname.err) Вы, вероятно, нашли запрос, который заставляет mysqld перестать работать. Если это происходит, следует проверить все свои таблицы с myisamchk (см. Главу 5, MySQL Server Administration), и протестируйте запросы в файлах журнала MySQL, чтобы видеть, перестал ли каждый работать. Если Вы находите такой запрос, попытайтесь сначала обновить до новейшей версии MySQL. Если это не помогает, и ничего невозможно найти в mysql почтовый архив, следует сообщить об ошибке к списку рассылки MySQL. Списки рассылки описываются в http://lists.mysql.com/, у которого также есть ссылки к онлайновым архивам списка.

Если Вы запустили mysqld с --myisam-recover-options, MySQL автоматически проверяет и пытается восстановить MyISAM таблицы, если они отмечаются как 'не закрытый должным образом' или 'отказали'. Если это происходит, MySQL пишет запись в hostname.err файл 'Warning: Checking table ...' который сопровождается Warning: Repairing table если таблица должна быть восстановлена. Если Вы получаете много этих ошибок без mysqld, умиравшего неожиданно как раз перед, то что-то является неправильным и должно быть исследовано далее. См. Раздел 5.1.3, "Опции Команды Сервера".

В MySQL 5.6, когда сервер обнаруживает MyISAM табличное повреждение, это пишет дополнительную информацию в журнал ошибок, такой как имя и номер строки исходного файла, и список потоков, получающих доступ к таблице. Пример: Got an error from thread_id=1, mi_dynrec.c:368. Это - полезная информация, чтобы включать в отчеты об ошибках.

Это не хороший знак, если бы mysqld действительно неожиданно умер, но в этом случае, то недопустимо заняться расследованиями Checking table... сообщения, но вместо этого пытаются узнать, почему mysqld умер.