5.8.1.6 Использование журналов сервера для поиска причин ошибок в mysqld
Обратите внимание, что перед запуском mysqld с включённым общим журналом запросов, необходимо проверить все ваши таблицы с помощью myisamchk. См. Глава 5, Администрирование MySQL-сервера.
Если mysqld завершается или зависает, необходимо запустить mysqld с включённым общим журналом запросов. См. Раздел 5.4.3, «Общий журнал запросов». Когда mysqld снова завершится, можно проверить конец файла журнала на наличие запроса, который привёл к завершению работы mysqld.
Если вы используете файл общего журнала запросов по умолчанию, журнал хранится в каталоге базы данных как В большинстве случаев это последний запрос в файле журнала, который привёл к завершению работы mysqld, но при возможности следует проверить это, перезапустив mysqld и выполнив найденный запрос из командной строки mysql. Если это сработает, необходимо также проверить все сложные запросы, которые не были завершены. host_name.log
Также можно попробовать команду EXPLAIN для всех SELECT инструкций, которые занимают много времени, чтобы убедиться, что mysqld правильно использует индексы. См. Раздел 13.8.2, «Инструкция EXPLAIN».
Запросы, которые выполняются долго, можно найти, запустив mysqld с включенным журналом медленных запросов. См. Раздел 5.4.5, «Журнал медленных запросов».
Если вы обнаружите текст mysqld restarted в журнале ошибок (обычно файл с именем ), вероятно, вы нашли запрос, который приводит к ошибке работы mysqld. В этом случае необходимо проверить все таблицы с помощью myisamchk (см. Главу 5, Администрирование MySQL-сервера) и проверить запросы в файлах журналов MySQL, чтобы увидеть, приводит ли какой-либо запрос к ошибке. Если вы найдёте такой запрос, попробуйте сначала обновить до новейшей версии MySQL. Если это не поможет, сообщите об ошибке, см. Раздел 1.5, «Как сообщить об ошибках или проблемах». host_name.err
Если вы запустили mysqld с переменной системы myisam_recover_options установленной, MySQL автоматически проверяет и пытается восстановить MyISAM таблицы, если они помечены как 'не закрыты должным образом' или 'сбой'. В этом случае MySQL записывает запись в файл hostname.err 'Warning: Checking table ...', за которой следует Warning: Repairing table, если таблица нуждается в восстановлении. Если вы получаете много таких ошибок, без внезапного завершения работы mysqld непосредственно перед этим, значит, что-то не так, и это нужно дополнительно расследовать. См. Раздел 5.1.6, «Параметры командной строки сервера».
При обнаружении повреждения таблицы MyISAM сервер записывает дополнительную информацию в журнал ошибок, такую как имя и номер строки исходного файла, а также список потоков, обращающихся к таблице. Пример: Got an
error from thread_id=1, mi_dynrec.c:368. Эта информация полезна для включения в сообщения об ошибках.
Нехорошо, если mysqld завершился неожиданно, но в этом случае не стоит исследовать сообщения Checking table..., а вместо этого следует попытаться выяснить, почему mysqld завершился.
© 2025 Oracle
Licensed under the GPLv2 License.