Справочное руководство по MySQL версии 4.1.1-alpha


         

то пойдет не так, то




  • Попробуйте fork_test.pl и fork2_test.pl.



  • Если что- то пойдет не так, то собирать информацию о возможных ошибках будет значительно проще, если MySQL сконфигурирован для отладки. Переконфигурируйте MySQL, применяя configure с опцией --with-debug или --with-debug=full, и затем перекомпилируйте (see section E.1 Отладка сервера MySQL).



  • Конфигурирование MySQL в отладочном режиме приводит к включению безопасного распределителя памяти, который может находить некоторые ошибки. Помимо этого, отладочная версия выдает большое количество информации о том, что происходит.



  • Выясните, применены ли последние патчи для используемой операционной системы.



  • Используйте опцию --skip-external-locking к mysqld. На некоторых системах менеджер блокировок lockd не работает как следует; опция --skip-external-locking указывает mysqld не применять внешнюю блокировку (это означает, что нельзя выполнять два сервера mysqld на одних данных и что необходимо быть осторожным при использовании myisamchk, однако применение этой опции может принести большую пользу для целей тестирования).



  • Если возникнет ситуация, когда кажется, что mysqld запущен, но не отвечает, стоит попробовать выполнить mysqladmin -u root processlist. Иногда mysqld не является зависшим, даже если кажется, что это так. Проблема может быть в том, что все соединения используются, или, возможно, имеется некая внутренняя проблема с блокировками. mysqladmin processlist обычно способна установить соединение даже в таких случаях и выдать полезную информацию о текущем количестве соединений и их состоянии.



  • Выполните команду в отдельном окне mysqladmin -i 5 status или mysqladmin -i 5 -r для вывода статистики, пока будут выполняться другие запросы.



  • Попробуйте выполнить следующие действия:





    1. Запустите mysqld в gdb (или в другом отладчике). See section E.1.3 Отладка mysqld при помощи gdb.



    2. Запустите тестовые скрипты.



    3. Отобразите стек (backtrace) и локальные переменные на трех нижних уровнях. В gdb это можно сделать следующими командами после аварийного завершения mysqld внутри gdb:


      Содержание  Назад  Вперед