MySQL.RU .:. Одобрено лучшими российскими программистами

Справочное руководство по MySQL

2.6.1.1 Примечания к бинарным дистрибутивам Linux

2.6.1.1 Примечания к бинарным дистрибутивам Linux

Для работы MySQL необходим Linux версии не ниже 2.0.

Предупреждение: По данным, полученным нами от некоторых пользователей MySQL, на Linux с ядром 2.2.14 имеются серьезные проблемы с устойчивостью работы MySQL. Если вы используете это ядро, необходимо обновить его до версии 2.2.19 или выше, либо до ядра версии 2.4. Аргументы в пользу 2.4 становятся еще более весомыми при использовании многопроцессорной системы, поскольку переход на эту версию ядра приводит к заметному увеличению скорости.

Как правило, бинарный дистрибутив линкуется с опцией -static, а это значит, что обычно нет необходимости беспокоиться о том, какая версия системных библиотек у вас установлена. Не требуется также устанавливать LinuxThreads. Размер программы, слинкованной с опцией -static, обычно больше в сравнении с версией, собранной динамически, однако скорость работы у нее выше (3-5%). Существует, однако, одна проблема. Она заключается в том, что со статически слинкованными программами невозможно использовать определяемые пользователем функции (user-definable function, UDF). Если вы собираетесь писать или использовать UDF'ы (это информация, касающаяся только программистов на C или C++), вам следует собственноручно собрать MySQL с использованием динамического линкования.

При использовании систем, базирующихся на libc (в отличие от glibc2-систем), могут возникать некоторые проблемы с разрешением имен удаленных компьютеров и использованием getpwnam() с бинарной версией (это происходит из-за того, что, к сожалению, glibc зависит от некоторых внешних библиотек при разрешении имен и использовании getpwent(), даже при сборке с опцией -static). В таком случае при запуске mysql_install_db возможно появление следующего сообщения об ошибке:

Sorry, the host 'xxxx' could not be looked up

Или же - при запуске mysqld с опцией --user - сообщение об ошибке может быть таким:

getpwnam: No such file or directory

Эту проблему можно решить одним из следующих способов:

  • загрузить и установить дистрибутив MySQL с исходными текстами (RPM или дистрибутив tar.gz).
  • Запустить mysql_install_db --force, чтобы избежать проверки resolveip в mysql_install_db. Оборотной стороной такого подхода является невозможность работать с именами машин в таблицах прав доступа - вместо них следует должны использовать IP-адреса (за исключением localhost). Если у вас старая поставка MySQL, которая не поддерживает ключ --force, то нужно просто удалить в редакторе проверку resolveip из mysql_install.
  • Запускать mysqld с помощью команды su вместо использования опции --user.

RPM и бинарные файлы MySQL для Linux на архитектуре Intel оптимизированы для достижения наибольшей возможной скорости работы. Мы всегда стараемся использовать компиляторы, которые дают наиболее быстрый и устойчивый код.

Поддержка Perl в MySQL требует Perl версии не ниже 5.004_03.

На некоторых Linux версии 2.2 при попытке создать большое количество новых соединений с сервером mysqld через TCP/IP вы можете получить сообщение об ошибке Resource temporarily unavailable (Ресурс временно недоступен).

Проблема заключается в задержке между закрытием сокета TCP/IP и реальным его освобождением системой в Linux. Поскольку существует ограниченное количество областей для поддержки TCP/IP, вы получите вышеназванную ошибку, если попытаетесь создать слишком много новых соединений TCP/IP на протяжении короткого отрезка времени (нечто подобное происходит при запуске теста на производительность MySQL `test-connect' поверх TCP/IP).

Об этой проблеме мы несколько раз сообщали в различные списки рассылки по Linux, однако удачного решения получить не удалось.

Единственное известное 'решение' данной проблемы заключается в том, что ваши клиенты должны работать с постоянными соединениями или использовать сокеты (в случае, если клиентская и серверная части находятся на одной машине). Остается надеяться, что эта проблема будет решена в ядре Linux 2.4.