Spec-Zone.ru › MySQL 8.4

7.9.1.6 Использование серверных логов для поиска причин ошибок в mysqld

Обратите внимание, что перед запуском mysqld с включенным общим журналом запросов, необходимо проверить все ваши таблицы с помощью myisamchk. См. Главу 7, Администрирование MySQL-сервера.

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

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

Вы также можете попробовать команду EXPLAIN для всех SELECT заявлений, которые занимают много времени, чтобы убедиться, что mysqld правильно использует индексы. См. Раздел 15.8.2, «Запрос EXPLAIN».

Вы можете найти запросы, которые занимают много времени для выполнения, запустив mysqld с включенным журналом медленных запросов. См. Раздел 7.4.5, «Журнал медленных запросов».

Если вы найдете текст mysqld restarted в журнале ошибок (обычно файл с именем host_name.err), вы, вероятно, обнаружили запрос, который приводит к ошибке mysqld. В этом случае необходимо проверить все ваши таблицы с помощью myisamchk (см. Главу 7, Администрирование MySQL-сервера), и протестировать запросы в файлах журнала MySQL, чтобы посмотреть, какой из них приводит к ошибке. Если вы найдете такой запрос, сначала попробуйте обновить до последней версии MySQL. Если это не поможет, сообщите об ошибке, см. Раздел 1.6, «Как сообщить об ошибках или проблемах».

Если вы запустили mysqld с переменной системы myisam_recover_options установленной, MySQL автоматически проверяет и пытается восстановить MyISAM таблицы, если они помечены как 'не закрыты должным образом' или 'аварийно завершены'. В этом случае MySQL записывает запись в файл hostname.err 'Warning: Checking table ...', за которой следует Warning: Repairing table, если таблица требует восстановления. Если вы получаете много таких ошибок, без неожиданного завершения работы mysqld непосредственно перед этим, то это означает, что что-то не так и требует дальнейшего расследования. См. Раздел 7.1.7, «Параметры командной строки сервера».

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

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

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/using-log-files.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API