Если вы собираетесь использовать
таблицы, поддерживающие
транзакции (InnoDB, BDB), следует прежде
всего создать файл my.cnf
и установить опции запуска для тех
типов таблиц, с которыми
планируется работать. See
Глава 7, Типы таблиц MySQL.
В общем случае сервер
mysqld запускается одним из
следующих способов:
Вызовом mysql.server. Этот
скрипт используется
преимущественно для запуска и
останова системы. Более подробно
он описан в разделе See
Раздел 2.4.3, «Автоматический запуск и остановка MySQL».
Вызовом команды
safe_mysqld, которая
определяет соответствующие
опции для mysqld и затем
запускает mysqld с этими
опциями. See Раздел 4.7.2, «safe_mysqld, оболочка mysqld».
Относительно Windows NT/2000/XP просьба обращаться к разделу See Раздел 2.6.2.2, «Запуск MySQL на Windows NT, 2000 или XP».
Вызовом mysqld напрямую.
При своем запуске демон
mysqld изменяет свой
каталог на каталог данных
(datadir). В нем он ожидает
найти журнальные файлы, файлы pid (ID
процессов) и собственно базы
данных.
Местоположение каталога данных
жестко устанавливается при
компиляции дистрибутива. Однако
если mysqld ожидает найти
каталог данных где-либо в другом
месте, а не там, где он
действительно расположен в вашей
системе, то демон mysqld не
будет работать правильно. Если
есть проблемы с неправильными
путями, то, вызывая mysqld с
опцией --help, вы можете
найти информацию о том, что
разрешают опции mysqld и
какие установки путей приняты по
умолчанию. Можно переопределить
установки по умолчанию указанием
правильных имен путей как
аргументов mysqld в
командной строке (эти опции также
можно использовать с
safe_mysqld).
Обычно требуется указывать
mysqld только каталог, в
котором устанавливается MySQL. Это
можно сделать с помощью опции
--basedir. Можно также
использовать --help для
проверки эффекта от изменения
опций путей (учтите, что
--help должна быть последней
опцией в команде mysqld).
Например:
shell> EXECDIR/mysqld --basedir=/usr/local --help
После определения требуемых
установок путей запускайте сервер
без опции --help.
Какой бы метод вы ни использовали
для запуска сервера, если его
неудачный запуск завершается
корректно, то проверьте журнальный
файл, чтобы узнать, почему запуск
происходит неудачно. Журнальные
файлы находятся в каталоге данных
(обычно /usr/local/mysql/data для
бинарного дистрибутива,
/usr/local/var для
дистрибутива исходного кода и
\mysql\data\mysql.err под Windows). В
каталоге данных следует искать
файлы с именами в виде
host_name.err и
host_name.log, где
host_name - имя вашего
серверного хоста. Затем проверьте
последние несколько строк этих
файлов:
shell>tail host_name.errshell>tail host_name.log
В журнальном файле нужно искать что-нибудь похожее на следующее:
000729 14:50:10 bdb: Recovery function for LSN 1 27595 failed 000729 14:50:10 bdb: warning: ./test/t1.db: No such file or directory 000729 14:50:10 Can't init databases
Это означает, что вы не запустили
mysqld с --bdb-no-recover
и база данных Berkeley DB нашла что-то
ошибочное в своих журнальных
файлах при попытке восстановить
ваши базы данных. Чтобы иметь
возможность продолжить,
необходимо переместить старый
журнальный файл Berkeley DB из каталога
баз данных в некоторое другое
место, где позже можно будет
изучить его. Журнальные файлы
имеют имена log.0000000001 и
т.д.; номер возрастает при каждом
запуске.
Если вы запускаете mysqld
работает с поддержкой таблиц BDB и
mysqld при старте выводит
дамп оперативной памяти (coredump), то
причиной этого это могут быть
какие-либо проблемы с журналом
восстановления BDB. В этом случае
можно попробовать запуск mysqld с
--bdb-no-recover. Если это
помогает, то следует удалить все
файлы log.* из каталога
данных и попробовать запустить
mysqld опять.
Если выдается приведенная ниже
ошибка, то это означает, что
некоторая другая программа (или
другой сервер mysqld) уже
использует данный TCP/IP порт или
сокет, на которых mysqld
пытается слушать:
Can't start server: Bind on TCP/IP port: Address already in use или Can't start server : Bind on unix socket...
Чтобы убедиться, что другого
работающего сервера mysqld
нет, используйте ps. Если
другой работающий сервер не
найден, то можно попробовать
выполнить команду telnet your-host-name
tcp-ip-port-number и нажать пару раз
клавишу ``Enter''. Если вы не получаете
сообщения об ошибке вроде
следующего telnet: Unable to connect to
remote host: Connection refused, значит, что
порт TCP/IP порт, который
mysqld пытается
использовать, уже занят другой
программой. Раздел 2.4.1, «Проблемы при запуске mysql_install_db» и
раздел See Раздел 4.1.4, «Запуск нескольких серверов MySQL на одном компьютере».
Если mysqld в настоящее
время работает, то можно найти
используемые им установки путей
при помощи следующей команды:
shell>mysqladmin variablesили shell>mysqladmin -h 'your-host-name' variables
Если при запуске mysqld вы
получили ошибку Errcode 13,
что значит Permission denied, это
означает, что у вас не было прав
читать/создавать файлы в базе
данных MySQL или в журнальном
каталоге. В таком случае вам
следует либо запускать
mysqld как пользователь
root, либо изменить права
доступа к упомянутым файлам и
каталогам, чтобы иметь права
использовать их.
Если safe_mysqld запускает
сервер, но вы не можете
подключиться к нему, то следует
убедиться, что в /etc/hosts
есть запись, которая выглядит
примерно так:
127.0.0.1 localhost
Эта проблема возникает только в системах, не имеющих рабочей библиотеки потоков, и для которых MySQL следует конфигурировать для использования потоков MIT-pthreads.
Если вы не можете запустить
mysqld, то можно
попробовать создать
трассировочный файл, чтобы
обнаружить данную проблему. See
Раздел E.1.2, «Создание трассировочных файлов».
При использовании таблиц InnoDB следует указывать опции запуска, специфические для InnoDB. See Раздел 7.5.2, «Параметры запуска InnoDB».
При использовании таблиц BDB (Berkeley DB)
необходимо хорошо знать различные
специфические для BDB опции запуска.
See Раздел 7.6.3, «Параметры запуска BDB».
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.
