2.3.3 Типичные опции конфигурации
Скрипт configure обеспечивает широкие возможности управления конфигурацией
дистрибутива MySQL. Обычно такое управление осуществляется путем
использования опций в командной строке configure. На работу configure
можно также воздействовать при помощи соответствующих переменных окружения
(смотри раздел E Переменные окружения). Чтобы получить список поддерживаемых
configure опций, запустите следующую команду:
shell> ./configure --help
Ниже описаны некоторые из наиболее часто используемых опций configure:
- Для компиляции только клиентских библиотек MySQL и клиентских программ
(без серверной части) используйте опцию
--without-server:shell> ./configure --without-server
При отсутствии компилятора C++ не будет компилироватьсяmysql(именно для данной клиентской программы требуется C++). В этом случае можно удалить из configure код, который проверяет наличие компилятора C++, а затем запустить./configureс опцией--without-server. На этапе компиляции и после этого будет предпринята попытка скомпилироватьmysql, но любые предупреждения насчет `mysql.cc' можно игнорировать (еслиmakeостановится, попробуйте запуститьmake -k- чтобы компиляция остального кода продолжалась даже в случае возникновения ошибок). - Если необходимо получить встраиваемую библиотеку MySQL (`libmysqld.a'),
используйте опцию
--with-embedded-server. - Если вы не хотите, чтобы ваши системные журналы и каталоги баз данных
располагались в каталоге `/usr/local/var', то используйте команду
configureнаподобие одной из приведенных ниже:shell> ./configure --prefix=/usr/local/mysql shell> ./configure --prefix=/usr/local \ --localstatedir=/usr/local/mysql/dataПервая команда изменяет установочный префикс, в результате чего весь код будет установлен в каталоге `/usr/local/mysql' вместо принятого по умолчанию `/usr/local'. Вторая команда сохраняет принятый по умолчанию установочный префикс, но переопределяет принятое по умолчанию местоположение каталогов базы данных (обычно `/usr/local/var') и изменяет его на `/usr/local/mysql/data'. После завершения компиляции MySQL эти опции можно изменить с помощью файлов опций (смотри раздел 4.1.2 Файлы параметров `my.cnf') - Если вы работаете под Unix и хотите, чтобы сокет MySQL находился в
каком-либо другом, отличном от принятого по умолчанию, месте (обычно
по умолчанию задается каталог `/tmp' или `/var/run'), используйте команду
configure, подобную следующей:
shell> ./configure --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock
Следует учитывать, что данный файл должен представлять собой полный путь к каталогу! Позже местоположение mysql.sock можно также изменить, используя файлы опций MySQL (смотри раздел A.4.5 Как защитить или изменить сокет-файл MySQL `/tmp/mysql.sock'). - Если необходимо компилировать статически линкованные программы
(например, чтобы создать бинарный дистрибутив, или чтобы повысить
скорость, или чтобы обойти проблемы некоторых дистрибутивов RedHat
Linux), запустите
configureтак, как показано ниже:shell> ./configure --with-client-ldflags=-all-static \ --with-mysqld-ldflags=-all-static - При использовании
gccбез установленной библиотекиlibg++илиlibstdc++можно предписатьconfigureв качестве компилятора C++ использоватьgcc:shell> CC=gcc CXX=gcc ./configure
Еслиgccиспользуется как компилятор C++, то он не будет пробовать линковаться сlibg++илиlibstdc++. Это может оказаться полезным даже если такие библиотеки установлены, поскольку при использовании некоторых версий вышеназванных библиотек в прошлом у пользователей MySQL возникали непонятные проблемы. Ниже приводятся установки некоторых общих переменных окружения в зависимости от используемого компилятора:
В большинстве случаев можно получить достаточно оптимальный бинарный код MySQL путем использования опций предыдущей таблицы и добавления в командной строке следующих опций:Компилятор Рекомендуемые опции gcc 2.7.2.1 CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors" egcs 1.0.3a CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" gcc 2.95.2 CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro \-felide-constructors -fno-exceptions -fno-rtti" pgcc 2.90.29 or newer CFLAGS="-O3 -mpentiumpro -mstack-align-double" CXX=gcc \CXXFLAGS="-O3 -mpentiumpro -mstack-align-double -felide-constructors \-fno-exceptions -fno-rtti" --prefix=/usr/local/mysql --enable-assembler \ --with-mysqld-ldflags=-all-static
Другими словами, полная строка конфигурации для всех последних версий gcc должна быть подобна приведенной ниже:CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro \ -felide-constructors -fno-exceptions -fno-rtti" ./configure \ --prefix=/usr/local/mysql --enable-assembler \ --with-mysqld-ldflags=-all-static
Все бинарные коды, которые мы поставляем с веб-сайта MySQL на http://www.mysql.com/, компилируются с максимальной оптимизацией и должны быть идеальными для большинства пользователей (смотри раздел 2.2.9 Бинарные коды MySQL, скомпилированные в MySQL AB). Существуют некоторые настройки, позволяющие сделать бинарный код даже еще быстрее, но их могут выполнять только опытные пользователи (смотри раздел 5.5.3 Как компиляция и линкование влияет на скорость MySQL). Если создать код не удается и при этом выдаются ошибки с указанием на компилятор или если компоновщик не в состоянии создать совместную библиотеку `libmysqlclient.so.#' (`#' представляет собой номер версии), то эту проблему можно обойти путем добавления кconfigureопции--disable-shared. В этом случаеconfigureне будет создавать совместную библиотеку `libmysqlclient.so.#'. - Можно сконфигурировать MySQL таким образом, чтобы не использовать
величины
DEFAULTна столбцах не-NULL(т.е. на столбцах, которые не могут принимать значениеNULL). При указании этой опции командыINSERTбудут генерировать ошибку в случае, если явно не указаны величины для всех столбцов, которые не могут принимать значениеNULL. Чтобы запретить использование величин по умолчанию, запуститеconfigure, как показано ниже:shell> CXXFLAGS=-DDONT_USE_DEFAULT_FIELDS ./configure
- По умолчанию в MySQL используется кодировка ISO-8859-1 (Latin1). Для
изменения кодировки, принятой по умолчанию, следует применить опцию
--with-charset:shell> ./configure --with-charset=CHARSET
CHARSETможет принимать одно из следующих значений:big5,cp1251,cp1257,czech,danish,dec8,dos,euc_kr,gb2312,gbk,german1,hebrew,hp8,hungarian,koi8_ru,koi8_ukr,latin1,latin2,sjis,swe7,tis620,ujis,usa7илиwin1251ukr(смотри раздел 4.6.1 Набор символов, применяющийся для записи данных и сортировки). Если требуется преобразовывать символы между сервером и клиентом, следует рассмотреть командуSET CHARACTER SET(смотри раздел 5.5.6 Синтаксис командыSET). Предупреждение: если набор символов изменяется после создания таблиц, необходимо запуститьmyisamchk -r -q --set-characted-set=charsetна каждой таблице. В противном случае индексы могут сортироваться неправильно (такое может случиться, если вы установите MySQL, создадите ряд таблиц, затем переконфигурируете MySQL с целью использования другого набора символов и заново установите MySQL). С помощью опции--with-extra-charsets=LISTможно определить, какие дополнительные кодировки необходимо скомпилировать в данном сервере. ЗдесьLISTлибо представляет собой разделенный пробелами список кодировок, либо имеет значениеcomplexдля включения всех символов, которые не могут быть загружены динамически, либо имеет значениеallдля включения всех кодировок в бинарники. - Для конфигурации MySQL с кодом отладки используйте опцию
--with-debug:shell> ./configure --with-debug
Задание этой опции вызывает подключение надежного распределителя памяти, который может найти некоторые ошибки и обеспечить вывод информации о том, что происходит (смотри раздел D.1 Отладка сервера MySQL). - Если клиентские программы используют потоки, то необходимо также
скомпилировать поддерживающую потоки версию клиентской библиотеки
MySQL с опцией конфигурации
--enable-thread-safe-client. При указании этой опции будет создана библиотекаlibmysqlclient_r, с которой следует линковать потоковые приложения (смотри раздел 8.4.8 Как создать клиентскую программу с потоками). - Опции, относящиеся к конкретным системам, можно найти в разделах данного руководства, в которых описываются особенности различных операционных систем (смотри раздел 2.6 Заметки по операционным системам).
