







|
В этом разделе описаны получение и
установка MySQL:
Список сайтов, с которых можно
получить MySQL, See Раздел 2.2.1, «Как получить MySQL».
Чтобы узнать о поддерживаемых
платформах, See Раздел 2.2.3, «Операционные системы, поддерживаемые
MySQL».
Необходимо иметь в виду, что не все
поддерживаемые системы одинаково
хорошо подходят для запуска MySQL:
одни из них гораздо устойчивее и
эффективнее, чем другие (за более
подробной информацией следует
обращаться к разделу
Раздел 2.2.3, «Операционные системы, поддерживаемые
MySQL»).
Некоторые версии MySQL доступны как в
виде бинарного дистрибутива, так и
в виде дистрибутива исходного
кода. Помимо этого, всем, кто желает
ознакомиться с нашими последними
разработками и помочь нам
тестировать новый код, мы
обеспечиваем открытый доступ к
нашему текущему дереву исходных
кодов. Чтобы определить, какую
версию и тип дистрибутива вам
следует использовать, See
Раздел 2.2.4, «Какую версию MySQL использовать». Если вы
сомневаетесь в том, какую версию
выбрать, лучше предпочесть
бинарный дистрибутив.
Инструкции по установке для
бинарного дистрибутива и для
дистрибутива исходного кода
находятся в разделах
Раздел 2.2.8, «Установка бинарного дистрибутива MySQL» и See
Раздел 2.3, «Установка исходного дистрибутива MySQL». В каждый набор
инструкций включен раздел с
описанием специфичных для
различных операционных систем
проблем, с которыми вы можете
столкнуться.
Чтобы ознакомиться с
послеустановочными процедурами, See
Раздел 2.4, «Послеустановочные настройка и
тестирование». Эти действия
применимы при установке MySQL с
использованием как бинарного
дистрибутива, так и дистрибутива
исходного кода.
2.1. Быстрая стандартная установка MySQL2.1.1. Установка MySQL на Linux
Для установки MySQL на Linux
рекомендуется применять пакеты RPM.
В настоящее время RPM для MySQL
создаются на операционной системе
SuSE Linux 7.3, но они должны работать
также и для других версий Linux,
которые поддерживают rpm
и используют glibc .
В случае возникновения проблем с
файлом RPM (например, если вы
получили ошибку ``Sorry, the host 'xxxx'
could not be looked up ''), обращайтесь к
разделу See Раздел 2.6.1.1, «Примечания к бинарным дистрибутивам
Linux».
Доступны для использования
следующие RPM-файлы:
MySQL-server-VERSION.i386.rpm .
Сервер MySQL. Если вам нужно только
подключаться к серверу MySQL,
запущенному на другом
компьютере, этот файл не
требуется. Обратите внимание,
что выхода 4.0.10 этот пакет
назывался
MySQL-VERSION.i386.RPM .
MySQL-client-VERSION.i386.rpm .
Стандартные клиентские
программы MySQL. Установка этого
пакета требуется всегда.
MySQL-bench-VERSION.i386.rpm .
Тесты и контрольные задачи. Для
файла требуется наличие модулей
Perl и msql-mysql-modules.
MySQL-devel-VERSION.i386.rpm .
Библиотеки и включаемые файлы,
необходимые для компилирования
других клиентов MySQL, таких как
модули Perl.
MySQL-shared-VERSION.i386.rpm
Этот пакет содержит
динамические библиотеки
(libmysqlclient.so* ), нужные для
некоторых языков
программирования или приложений
для того, чтобы работать с MySQL.
MySQL-embedded-VERSION.i386.rpm
Встраиваемая библиотека сервера
MySQL (MySQL 4.x и более новые).
MySQL-VERSION.src.rpm .
Этот файл содержит исходный код
для всех предыдущих пакетов.
Файл также можно использовать
для создания файлов RPM для других
архитектур (например Alpha или SPARC).
Для просмотра всех файлов в пакете
RPM выполните команду:
shell> rpm -qpl MySQL-VERSION.i386.rpm
Для выполнения стандартной
минимальной установки запустите
команду:
shell> rpm -i MySQL-server-VERSION.i386.rpm MySQL-client-VERSION.i386.rpm
Для установки только клиентского
пакета выполните команду:
shell> rpm -i MySQL-client-VERSION.i386.rpm
RPM помещает данные в
/var/lib/mysql и создает
соответствующие вхождения в
/etc/init.d/ для
автоматического запуска сервера
во время начальной загрузки (в
случае, если у вас имеется
предыдущая инсталляция, можно
создать копию ранее
установленного файла запуска MySQL,
чтобы изменения в нем не были
утеряны.)
Если вы хотите установить MySQL RPM на
старших версиях Linux, которые не
поддерживают init-скрипты в
/etc/init.d (непосредственно
или посредством символической
ссылки), вам следует создать
символическую ссылку на старое
расположение перед тем, как
устанавливать RPM:
shell> cd /etc ; ln -s rc.d/init.d .
Однако, все современные поставки
Linux должны поддерживать эту схему
каталогов, т.к. это требование
стандарта LSB (Linux Standard Base).
После установки RPM, mysqld
должен заработать и вы можете
сразу приступать к использованию
MySQL.
See Раздел 2.4, «Послеустановочные настройка и
тестирование».
Если при установке возникнут
проблемы, то за более подробной
информацией следует обращаться к
главе, в которой описывается
установка из бинарного
дистрибутива. See
Раздел 2.2.8, «Установка бинарного дистрибутива MySQL».
2.1.2. Установка MySQL на Windows
Имеются два следующих типа
дистрибутивов сервера MySQL для Windows:
Бинарный дистрибутив, в состав
которого входит программа
установки; она устанавливает
все, что нужно, так что можно
сразу же запускать сервер.
Дистрибутив исходного кода, в
котором содержится весь код и
файлы поддержки для создания
исполняемых файлов с
использованием компилятора VC++
6.0. See Раздел 2.3.7, «Дистрибутив исходного кода для Windows».
В общем случае следует отдавать
предпочтение бинарному
дистрибутиву.
Вам потребуется:
32-разрядная операционная
система Windows, такая как 9x, Me, NT, 2000
или XP. Под управлением семейства
NT (NT, Windows 2000 и XP) сервер MySQL можно
запускать как сервис. See
Раздел 2.6.2.2, «Запуск MySQL на Windows NT, 2000 или XP». Если
предполагается работать с
таблицами размером более 4 Гб,
необходимо установить MySQL на
файловую систему NTFS или более
новую. При создании таблиц не
забывайте использовать
MAX_ROWS и
AVG_ROW_LENGTH . See
Раздел 6.5.3, «Синтаксис оператора CREATE TABLE ».
Поддержка протокола TCP/IP.
Копия бинарного кода MySQL или
дистрибутив для Windows, который
может быть загружен с
http://www.mysql.com/downloads/.
Примечание: дистрибутив
поставляется в виде архивных
файлов, сжатых архиватором ZIP. Во
избежание повреждения файлов в
процессе загрузки мы
рекомендуем использовать
адекватный клиент FTP с
возможностью возобновления
загрузки.
Архиватор ZIP для
распаковки файла дистрибутива.
Достаточно места на жестком
диске для распаковки, установки
и создания баз данных в
соответствии с вашими
требованиями.
Если вы планируете подключаться
к серверу MySQL через ODBC ,
то понадобится драйвер
MyODBC . See Раздел 8.3, «Поддержка ODBC в MySQL».
2.1.2.1. Установка бинарного кода
Если вы работаете на сервере
NT/2000/XP, войдите в систему как
пользователь с привилегиями
администратора.
Если вы производите
модернизацию более ранней
установки MySQL, то необходимо
остановить сервер. Если сервер
работает как сервис, то
применяйте следующую команду:
C:\> NET STOP MySQL
В остальных случаях
используйте:
C:\mysql\bin> mysqladmin -u root shutdown
Если вы хотите изменить
исполняемый файл сервера (т.е.
-max или -nt), необходимо также
удалить сервис:
C:\mysql\bin> mysqld-max-nt --remove
Разархивируйте файл
дистрибутива во временном
каталоге.
Запустите файл
setup.exe , чтобы начать
процесс установки. Если вы
хотите установить программу в
иной каталог, чем заданный по
умолчанию c:\mysql , то
используйте кнопку
Browse для указания
выбранного вами каталога.
Завершите процесс установки.
2.1.2.2. Подготовка конфигурации MySQL для Windows
Начиная с версии MySQL 3.23.38,
дистрибутив для Windows включает в
себя как обычный бинарный код, так
и бинарный код сервера
MySQL-Max . Ниже приводится
список различных серверов MySQL,
которые можно использовать:
Начиная с версии 3.23.50, именованные
каналы доступны только при
запуске mysqld с --enable-named-pipe .
Все бинарные коды оптимизированы
под процессор Pentium Pro, но должны
работать на любом процессоре Intel
>= i386.
При следующих обстоятельствах
для того чтобы задать вашу
конфигурацию MySQL будет необходимо
использовать файл опций:
Если каталоги установки или
данных отличаются от заданных
по умолчанию местоположений
(c:\mysql и
c:\mysql\data ).
Если вы хотите использовать
один из следующих серверов:
mysqld.exe
mysqld-max.exe
mysqld-max-nt.exe
Если вам требуется выполнить
настройку установочных
параметров сервера.
Обычно для редактирования файла
опций my.ini можно
использовать инструмент
WinMySQLAdmin . В этом случае
остальную часть данного раздела
вы можете пропустить.
Существует два файла опций с
одинаковыми функциями:
my.cnf и my.ini .
Однако во избежание
недоразумений лучше всего
использовать только один из них.
Оба файла представляют собой
простой текст. Если вы
собираетесь использовать файл
my.cnf , то его следует
создать в корневом каталоге диска
C, если my.ini - то в
системном каталоге Windows (это
обычно что-либо вроде
C:\WINDOWS или
C:\WINNT ; его точное
местоположение можно определить
по значению переменной окружения
windir ). MySQL сначала ищет
файл my.ini , а затем
my.cnf .
Если на вашем компьютере
используется начальный
загрузчик, в котором диск C не
является загрузочным диском, то
следует работать только с файлом
my.ini . Инструментальная
программа WinMySQLAdmin , если
она у вас применяется, также
использует только файл
my.ini (файл помощи с
инструкциями по использованию
этого инструмента находится в
каталоге \mysql\bin ).
Используя notepad.exe ,
создайте файл опций и
отредактируйте раздел
[mysqld] , указав значения
параметров basedir и
datadir :
[mysqld]
# set basedir to installation path, e.g., c:/mysql
basedir=the_install_path
# set datadir to location of data directory,
# e.g., c:/mysql/data or d:/mydata/data
datadir=the_data_path
Следует учитывать, что в Windows
имена путей должны указываться в
файле опций с использованием
предпочтительно прямых слешей, а
не обратных. Если вы применяете
обратные слеши, то их необходимо
дублировать.
Чтобы использовать каталог
данных, отличный от заданного по
умолчанию c:\mysql\data ,
необходимо скопировать все
содержимое каталога
c:\mysql\data в новое
местоположение.
Если вы хотите работать с
транзакционными таблицами
InnoDB , то необходимо
вручную создать два новых
каталога для хранения данных
таблиц InnoDB и журнальных
файлов - т.е. c:\ibdata и
c:\iblogs . Помимо этого
потребуется добавить несколько
дополнительных строк в файле
опций. См. раздел See
Раздел 7.5.2, «Параметры запуска InnoDB».
Если же работу с таблицами
InnoDB вы не планируете,
следует в файле опций добавьте
опцию skip-innodb .
Теперь вы готовы тестировать
запуск сервера.
2.1.2.3. Первый запуск сервера
Тестирование лучше всего
производить из окна оболочки DOS,
поскольку сообщения о состоянии,
которые выводит сервер,
появляются в окне DOS. Если с вашей
конфигурацией что-нибудь не так,
то при помощи этих сообщений
будет легче идентифицировать и
устранить любые проблемы.
Убедитесь, что находитесь в
каталоге, где расположен сервер,
затем введите следующую команду:
C:\mysql\bin> mysqld-max --standalone
При запуске сервера вы должны
увидеть следующие сообщения:
InnoDB: The first specified datafile c:\ibdata\ibdata1 did not exist:
InnoDB: a new database to be created!
InnoDB: Setting file c:\ibdata\ibdata1 size to 209715200
InnoDB: Database physically writes the file full: wait...
InnoDB: Log file c:\iblogs\ib_logfile0 did not exist: new to be created
InnoDB: Setting log file c:\iblogs\ib_logfile0 size to 31457280
InnoDB: Log file c:\iblogs\ib_logfile1 did not exist: new to be created
InnoDB: Setting log file c:\iblogs\ib_logfile1 size to 31457280
InnoDB: Log file c:\iblogs\ib_logfile2 did not exist: new to be created
InnoDB: Setting log file c:\iblogs\ib_logfile2 size to 31457280
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: creating foreign key constraint system tables
InnoDB: foreign key constraint system tables created
011024 10:58:25 InnoDB: Started
Чтобы получить дальнейшую
информацию о работе MySQL под Windows,
обращайтесь к разделу See
Раздел 2.6.2, «Примечания к Windows».
2.1.3. Установка MySQL на MacOS X
Начиная с MySQL 4.0.11, вы можете
поставить MySQL на Mac OS X 10.2 ("Jaguar")
используя родной формат пакетов
PKG вместо бинарного
tar-архива. Обратите внимание, что
более старые версии Mac OS X (скажем,
10.1.x) не поддерживаются этим
пакетом.
Пакет находится внутри файла
образа диска (.dmg ),
который вам сначала следует
смонтировать двойным щелчком
мышки на его иконке в Finder. Образ
должен быть смонтирован и вы
увидите его содержимое.
Внимание: Перед
тем как продолжить инсталляцию,
убедитесь, что другие сервера MySQL
не работают на этом компьютере!
Пожалуйста, остановите все
запущенные копии MySQL перед тем, как
продолжать. Для этого используйте
или приложение MySQL Manager (на Mac OS X Server)
или с помощью mysqladmin shutdown
в командной строке.
Для того чтобы поставить MySQL PKG,
дважды щелкните мышкой на иконке
пакета. Это действие запустит
инсталлятор пакетов Mac OS, который и
проведет вас через процесс
установки MySQL.
Пакет поставит себя в
/usr/local/mysql-<версия> и
также поставит символическую
ссылку /usr/local/mysql ,
указывающую на новое
месторасположение. Если каталог с
именем /usr/local/mysql уже
существует, он будет вначале
переименован в
/usr/local/mysql.bak . Кроме того,
будут установлены таблицы
привилегий MySQL путем выполнения
mysql_install_db после
инсталляции.
Схема инсталляции похожа на ту,
которая используется в бинарной
поставке: все исполняемые файлы MySQL
будут расположены по пути
/usr/local/mysql/bin , сокет будет
расположен в /etc/mysql.sock .
See Раздел 2.2.5, «Схемы установки».
Необходимо чтобы существовал
пользователь с именем
mysql (который должен
существовать по умолчанию в каждой
поставке Mac OS X 10.2 и выше).
Если вы используете Mac OS X Server, у вас
уже есть работающая копия MySQL:
Этот раздел руководства покрывает
вопросы инсталляции только
официального пакета PKG для Mac OS X.
Сначала прочитайте руководство Apple
по установке MySQL, пожалуйста
(запустите приложение "Help View",
выберите "Mac OS X Server", сделайте поиск
слова "MySQL" и прочитайте раздел под
названием "Installing MySQL").
Учтите, что преинсталлированные
пакеты MySQL на Mac OS X Server запускаются
с помощью команды safe_mysqld
вместо mysqld_safe !
Если вы ранее использовали пакеты
MySQL Марка Лиянажа (Marc Liyanage) с сайта
http://www.entropy.ch,
вы можете просто следовать
инструкциям по обновлению пакетов
используя схему расположения, как
указано на его страничках.
Если вы обновляете MySQL с версии,
собранной Марком или с
предустановленной версии из
поставки Mac OS X Server, на официальную
сборку от MySQL - вам следует также
преобразовать существующие
таблицы привилегий MySQL. See
Раздел 2.5.2, «Модернизация с версии 3.23 до версии 4.0».
После инсталляции вы можете
запустить MySQL выполняя следующие
команды в терминальном окне.
Обратите внимание, что вам нужны
привилегии администратора для
выполнения этой задачи.
shell> cd /usr/local/mysql
shell> sudo ./bin/mysqld_safe
(Введите ваш пароль)
(Нажмите CTRL+Z)
shell> bg
(Нажмите CTRL+D для выхода из оболочки)
Теперь вы сможете подключиться к
серверу MySQL, скажем, запустив
/usr/local/mysql/bin/mysql .
Для того, чтобы MySQL автоматически
запускался при загрузке, вы можете
взять MySQL StartupItem Марка по этому
адресу:
http://www2.entropy.ch/download/mysql-startupitem.pkg.tar.gz
Мы планируем в ближайшее время
добавить StartupItem в официальный
пакет MySQL в ближайшее время.
Заметьте, что инсталляция нового
пакета MySQL не удаляет каталог более
старой инсталляции. К сожалению,
инсталлятор в Mac OS X еще не
предоставляет нужной
функциональности для того, чтобы
корректно обновить существующие в
системе пакеты.
После того, как вы скопировали
файлы данных MySQL с предыдущего
месторасположения, и успешно
запустили новую версию, вы можете
удалить старую инсталляцию. Кроме
того, вы можете удалить старые
каталоги Package Receipt, расположенные
здесь:
/Library/Receipts/mysql-<version>.pkg .
2.2. Общие вопросы инсталляции2.2.1. Как получить MySQL
Информацию о текущей версии и
инструкции по ее загрузке можно
получить на домашней странице MySQL
(http://www.mysql.com/).
Наш главный зеркальный сайт -
http://mirrors.sunsite.dk/mysql/
Если вы заинтересованы в
организации зеркального сайта MySQL,
то можете анонимно зеркалировать
нас программой rsync с адреса
rsync://sunsite.dk/ftp/mirrors/mysql/ .
Просьба отправить нам письмо по
адресу webmaster@mysql.com , чтобы
уведомить нас о том, что ваш
зеркальный сайт следует добавить в
представленный ниже список.
Если возникнут проблемы с
загрузкой с нашего главного сайта,
пробуйте использовать один из
следующих зеркальных сайтов.
О недействительных или устаревших
зеркальных сайтах просьба
сообщать по адресу
webmaster@mysql.com .
For a complete upto-date list of MySQL web/download mirrors, see
http://www.mysql.com/downloads/mirrors.html. There you will also
find information about becoming a MySQL mirror site and how to
report a bad or out-of-date mirror.
2.2.2. Проверка целостности пакетов с помощью
MD5 Checksums или GnuPG
После того, как вы загрузили нужный
вам пакет MySQL, и перед тем как вы
будете его устанавливать, вам
следует убедиться в том, что он в
сохранности и не был кем-либо
изменен.
MySQL AB предоставляет два способа
проверить пакет: контрольная сумма
MD5 и криптографическая
подпись с использованиемп
GnuPG , GNU Privacy Guard .
Проверка контрольной
суммы MD5
После того как вы загрузили пакет,
вы должны проверить, соответствует
ли контрольная сумма MD5
загруженного пакета той, что
указана на страничке загрузки
пакетов. У каждого пакета своя
контрольная сумма, которую вы
можете проверить такой командой:
shell> md5sum <пакет>
Однако не все операционные системы
поддерживают команду
md5sum - на некоторых она
просто называется md5 , а в
других она вовсе не поставляется.
На Linux эта команда является частью
GNU Text Utilities , которые
доступны для множества разных
платформ.
Вы можете загрузить исходный код
по адресу
http://www.gnu.org/software/textutils/.
Если у вас уже установлен
OpenSSL , вы также можете
использовать команду openssl md5
<пакет> . Реализация
md5 для DOS/Windows доступна по
адресу
http://www.fourmilab.ch/md5/.
Пример:
shell> md5sum mysql-standard-4.0.10-gamma-pc-linux-i686.tar.gz
155836a7ed8c93aee6728a827a6aa153
mysql-standard-4.0.10-gamma-pc-linux-i686.tar.gz
Вы должны удостовериться, что
результирующая контрольная сумма
соответствует той, что указана на
страничке загрузки возле
соответствующего пакета.
Множество зеркальных сайтов также
предоставляют файл с именем
MD5SUMS , который также
содержит MD5 контрольные
суммы всех файлов из каталога
Downloads . Однако заметьте,
что этот файл достаточно легко
изменить и это не самый надежный
метод проверки целостности пакета.
Если вы в сомнениях, вы должны
посмотреть на другие зеркала и
сравнить увиденное.
Проверка подписи с
использованием GnuPG
Гораздо более надежный метод
проверки целостности пакета это
использование криптографически
сигнатур. MySQL AB использует ПО
GNU Privacy Guard (GnuPG ),
открытая альтернатива весьма
известному пакету Pretty Good
Privacy (PGP ) Фила
Циммермана (Phil Zimmermann). См.
http://www.gnupg.org/
и
http://www.openpgp.org/
для более подробной информации про
OpenPGP/GnuPG и как его получить и
поставить на вашей системе.
Большинство поставок Linux уже идут с
GnuPG прямо в поставке.
Начиная с MySQL 4.0.10 (Февраль 2003), MySQL AB
начала подписывать загружаемые
пакеты с помощью GnuPG .
Криптографические сигнатуры
являются гораздо более надежным
методом проверки целостности и
аутентичности файла.
Для проверки подписи конкретного
пакета, вам в первую очередь
следует получить копию публичного
ключа GPG <build@mysql.com> . Вы можете
либо взять этот ключ прямо отсюда,
либо взять его на
http://www.keyserver.net/.
Key ID:
pub 1024D/5072E1F5 2003-02-03
MySQL Package signing key (www.mysql.com) <build@mysql.com>
Fingerprint: A4A9 4068 76FC BD3C 4567 70C8 8C71 8D3B 5072 E1F5
Public Key (ASCII-armored):
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org
mQGiBD4+owwRBAC14GIfUfCyEDSIePvEW3SAFUdJBtoQHH/nJKZyQT7h9bPlUWC3
RODjQReyCITRrdwyrKUGku2FmeVGwn2u2WmDMNABLnpprWPkBdCk96+OmSLN9brZ
fw2vOUgCmYv2hW0hyDHuvYlQA/BThQoADgj8AW6/0Lo7V1W9/8VuHP0gQwCgvzV3
BqOxRznNCRCRxAuAuVztHRcEAJooQK1+iSiunZMYD1WufeXfshc57S/+yeJkegNW
hxwR9pRWVArNYJdDRT+rf2RUe3vpquKNQU/hnEIUHJRQqYHo8gTxvxXNQc7fJYLV
K2HtkrPbP72vwsEKMYhhr0eKCbtLGfls9krjJ6sBgACyP/Vb7hiPwxh6rDZ7ITnE
kYpXBACmWpP8NJTkamEnPCia2ZoOHODANwpUkP43I7jsDmgtobZX9qnrAXw+uNDI
QJEXM6FSbi0LLtZciNlYsafwAPEOMDKpMqAK6IyisNtPvaLd8lH0bPAnWqcyefep
rv0sxxqUEMcM3o7wwgfN83POkDasDbs3pjwPhxvhz6//62zQJ7Q7TXlTUUwgUGFj
a2FnZSBzaWduaW5nIGtleSAod3d3Lm15c3FsLmNvbSkgPGJ1aWxkQG15c3FsLmNv
bT6IXQQTEQIAHQUCPj6jDAUJCWYBgAULBwoDBAMVAwIDFgIBAheAAAoJEIxxjTtQ
cuH1cY4AnilUwTXn8MatQOiG0a/bPxrvK/gCAJ4oinSNZRYTnblChwFaazt7PF3q
zIhMBBMRAgAMBQI+PqPRBYMJZgC7AAoJEElQ4SqycpHyJOEAn1mxHijft00bKXvu
cSo/pECUmppiAJ41M9MRVj5VcdH/KN/KjRtW6tHFPYhMBBMRAgAMBQI+QoIDBYMJ
YiKJAAoJELb1zU3GuiQ/lpEAoIhpp6BozKI8p6eaabzF5MlJH58pAKCu/ROofK8J
Eg2aLos+5zEYrB/LsrkCDQQ+PqMdEAgA7+GJfxbMdY4wslPnjH9rF4N2qfWsEN/l
xaZoJYc3a6M02WCnHl6ahT2/tBK2w1QI4YFteR47gCvtgb6O1JHffOo2HfLmRDRi
Rjd1DTCHqeyX7CHhcghj/dNRlW2Z0l5QFEcmV9U0Vhp3aFfWC4Ujfs3LU+hkAWzE
7zaD5cH9J7yv/6xuZVw411x0h4UqsTcWMu0iM1BzELqX1DY7LwoPEb/O9Rkbf4fm
Le11EzIaCa4PqARXQZc4dhSinMt6K3X4BrRsKTfozBu74F47D8Ilbf5vSYHbuE5p
/1oIDznkg/p8kW+3FxuWrycciqFTcNz215yyX39LXFnlLzKUb/F5GwADBQf+Lwqq
a8CGrRfsOAJxim63CHfty5mUc5rUSnTslGYEIOCR1BeQauyPZbPDsDD9MZ1ZaSaf
anFvwFG6Llx9xkU7tzq+vKLoWkm4u5xf3vn55VjnSd1aQ9eQnUcXiL4cnBGoTbOW
I39EcyzgslzBdC++MPjcQTcA7p6JUVsP6oAB3FQWg54tuUo0Ec8bsM8b3Ev42Lmu
QT5NdKHGwHsXTPtl0klk4bQk4OajHsiy1BMahpT27jWjJlMiJc+IWJ0mghkKHt92
6s/ymfdf5HkdQ1cyvsz5tryVI3Fx78XeSYfQvuuwqp2H139pXGEkg0n6KdUOetdZ
Whe70YGNPw1yjWJT1IhMBBgRAgAMBQI+PqMdBQkJZgGAAAoJEIxxjTtQcuH17p4A
n3r1QpVC9yhnW2cSAjq+kr72GX0eAJ4295kl6NxYEuFApmr1+0uUq/SlsQ==
=YJkx
-----END PGP PUBLIC KEY BLOCK-----
Вы можете импортировать этот ключ
в ваш публичный репозитарий ключей
(public keyring) используя gpg
--import . См. документацию на
GPG для более подробной
информации о том, как работать с
публичными ключами.
После того, как вы загрузили и
импортирлвали публичный ключ
сборки, вы можете загрузить
выбранный вами пакет MySQL и
соответствующую подпись,
доступную на той же страничке
загрузки.
Файл сигнатуры имеет расширение
.asc . Например, сигнатура
для
mysql-standard-4.0.10-gamma-pc-linux-i686.tar.gz
будет
mysql-standard-4.0.10-gamma-pc-linux-i686.tar.gz.asc .
Удостоверьтесь, чтобы оба файла
находятся в том же самом каталоге и
затем запустите такую команду для
проверки сигнатуры файла:
shell> gpg --verify <package>.asc
Example:
shell> gpg --verify mysql-standard-4.0.10-gamma-pc-linux-i686.tar.gz.asc
gpg: Warning: using insecure memory!
gpg: Signature made Mon 03 Feb 2003 08:50:39 PM MET using DSA key ID 5072E1F5
gpg: Good signature from
"MySQL Package signing key (www.mysql.com) <build@mysql.com>"
Сообщение "Good signature" сообщает вам о
том, что все в порядке.
Для пакетов RPM ,
отдельного файла подписи не
предоставляется - пакеты
RPM уже сами по себе имеют
встроенную поддержку подписей
GPG и контрольных сумм
MD5 . Вы можете проверить
их такой командой:
shell> rpm --checksig <package>.rpm
Пример:
shell> rpm --checksig MySQL-server-4.0.10-0.i386.rpm
MySQL-server-4.0.10-0.i386.rpm: md5 gpg OK
Внимание: Если вы
используете RPM 4.1 и он сообщает
следующее: (GPG) NOT OK (MISSING KEYS:
GPG#5072e1f5) (даже несмотря на то,
что вы импортировали ключ в ваш
публичный репозиторий ключей GPG,
keyring) - вам следует импортировать
ключ в репозиторий ключей RPM. RPM 4.1
больше не использует ваш
репозиторий ключей GPG (и GPG вообще),
но поддерживает свой репозиторий,
поскольку RPM - это общесистемная
утилита, а репозиторий ключей GPG -
это специфичный для пользователя
файл). Чтобы импортировать
публичный ключ MySQL в RPM, используйте
вот такую команду:
shell> rpm --import <pubkey>
Пример:
shell> rpm --import mysql_pubkey.asc
Если вдруг вы заметите что
контрольные суммы MD5 или подпись GPG
не совпадают, попробуйте в первую
очередь загрузить соответствующий
пакет еще один раз, может быть, даже
с другого сервера. Если вы не
сможете успешно удостовериться в
целостности пакета, пожалуйста,
сообщите нам о подобных
инцидентах, включая полное имя
пакета и адрес сайта, с которого вы
пытались загрузить пакет, на адрес
<webmaster@mysql.com> или
<build@mysql.com> .
2.2.3. Операционные системы, поддерживаемые
MySQL
Мы применяем GNU Autoconf, что дает
возможность переносить MySQL на все
современные системы с работающими
потоками Posix и компилятором C++
(чтобы скомпилировать только код
клиента, требуется только
компилятор C++ без использования
потоков). Для себя мы используем и
разрабатываем программное
обеспечение в основном на Sun Solaris
(версий 2.5 - 2.7) и SuSE Linux версии 7.x.
Следует учитывать, что для многих
операционных систем поддержка
собственных потоков работает
только в самых последних версиях.
Согласно полученным нами
сообщениям, MySQL успешно
компилируется на следующих
комбинациях операционных систем и
потоковых пакетов:
AIX 4.x, 5.x с собственными потоками.
См.раздел See Раздел 2.6.6.4, «Примечания к IBM-AIX».
Amiga.
BSDI 2.x с пакетом MIT-pthreads. See
Раздел 2.6.4.5, «Примечания к BSD/OS версий 2.x».
BSDI 3.0, 3.1 и 4.x с собственными
потоками. See Раздел 2.6.4.5, «Примечания к BSD/OS версий 2.x».
DEC Unix 4.x с собственными потоками.
See Раздел 2.6.6.6, «Примечания к Alpha-DEC-UNIX (Tru64)».
FreeBSD 2.x с пакетом MIT-pthreads. See
Раздел 2.6.4.1, «Примечания к FreeBSD».
FreeBSD 3.x и 4.x с собственными
потоками. See Раздел 2.6.4.1, «Примечания к FreeBSD».
HP-UX 10.20 с пакетом MIT-pthreads или
пакетом DCE-threads. See
Раздел 2.6.6.2, «Примечания к HP-UX версии 10.20».
HP-UX 11.x с собственными потоками. See
Раздел 2.6.6.3, «Примечания к HP-UX версий 11.x».
Linux 2.0+ с потоками LinuxThreads 0.7.1+ или
glibc 2.0.7+. См. раздел See
Раздел 2.6.1, «Примечания к Linux (Все версии Linux)».
Mac OS X. See Раздел 2.6.5, «Примечания к Mac OS X».
NetBSD 1.3/1.4 Intel и NetBSD 1.3 Alpha (требует GNU
make). See Раздел 2.6.4.2, «Примечания к NetBSD».
OpenBSD > 2.5 с собственными
потоками. OpenBSD < 2.5 с пакетом
MIT-pthreads. See Раздел 2.6.4.3, «Примечания к OpenBSD 2.5».
OS/2 Warp 3, FixPack 29 и OS/2 Warp 4, FixPack 4. See
Раздел 2.6.7, «Примечания к OS/2».
SGI Irix 6.x с собственными потоками.
See Раздел 2.6.6.8, «Примечания к SGI Irix».
Solaris 2.5 и выше с собственными
потоками на SPARC и x86. See
Раздел 2.6.3, «Примечания к Solaris».
SunOS 4.x с пакетом MIT-pthreads. See
Раздел 2.6.3, «Примечания к Solaris».
Caldera (SCO) OpenServer с последним портом
пакета FSU Pthreads. See Раздел 2.6.6.9, «Примечания к Caldera (SCO)».
Caldera (SCO) UnixWare 7.0.1. See
Раздел 2.6.6.10, «Примечания к Caldera (SCO) Unixware Version 7.0».
Tru64 Unix
Windows 9x, Me, NT, 2000 и XP. See
Раздел 2.6.2, «Примечания к Windows».
Следует отметить, что не на всех
платформах MySQL функционирует
одинаково хорошо. Насколько
подходит определенная платформа
для высоконагружаемого
многоцелевого сервера MySQL,
определяется следующими
факторами:
Общая стабильность потоковой
библиотеки. Платформа может
иметь отличную репутацию в
других отношениях, но если в
коде, который вызывается MySQL,
потоковая библиотека
нестабильна, то, даже если все
остальное прекрасно,
стабильность MySQL будет
определяться стабильностью
потоковой библиотеки.
Способность ядра и/или
библиотеки потоков пользоваться
преимуществом симметричной
многопроцессорной обработки
(SMP ) на
многопроцессорных системах.
Другими словами, при создании
процессом потока для этого
потока должна быть возможность
работать на ином центральном
процессоре (CPU), чем исходный
процесс.
Способность библиотеки ядра
и/или потоков запускать много
потоков, которые
приобретают/освобождают
синхронизирующий флаг в
небольшой критической области,
часто без излишних переключений
контекста. Иными словами, если
реализация pthread_mutex_lock()
является очень ``уступающей''
время центрального процессора,
это значительно вредит MySQL. Если
не принять во внимание данное
обстоятельство, то
использование добавочных
центральных процессоров сделает
MySQL существенно медленнее.
Общая
стабильность/производительность
файловой системы.
Способность файловой системы
работать с большими файлами
вообще и работать с ними
эффективно в случае больших
таблиц.
Наш, т.е. разработчиков, уровень
компетенции в том, что касается
данной платформы. Для платформ,
которые мы знаем хорошо, мы
вводим в MySQL специфические для
платформы
оптимизации/исправления,
доступные во время компиляции.
Кроме того, мы можем также дать
совет по оптимальной для MySQL
конфигурации вашей системы.
Выполненный нами у себя объем
тестирования подобных
конфигураций.
Количество пользователей,
успешно применяющих MySQL на
данной платформе в подобных
конфигурациях. Если это
количество велико, то шансы
получить некоторые
специфические для данной
платформы сюрпризы, намного
меньше.
В соответствии с предыдущими
критериями наилучшими платформами
с этой точки зрения для
функционирования MySQL являются: x86
под управлением SuSE Linux 7.1, с ядром 2.4
и ReiserFS (или любой подобный
дистрибутив Linux) и SPARC под
управлением Solaris 2.7 или 2.8. FreeBSD
оказывается третьей, но мы в самом
деле надеемся, что эта платформа
войдет в число лучших, как только
станет совершеннее потоковая
библиотека. Мы также надеемся, что,
с некоторого момента, мы сможем
включить в высшую категорию все
остальные платформы, на которых MySQL
компилируется и функционирует
нормально, но не с тем же уровнем
стабильности и
производительности. Это потребует
некоторых усилий с нашей стороны в
сотрудничестве с разработчиками
компонентов операционных систем и
библиотек, от которых зависит MySQL.
Если вы заинтересованы в улучшении
тех или иных компонентов, у вас
есть возможность оказать влияние
на их разработку и вы нуждаетесь в
подробных инструкциях по поводу
того, что нужно MySQL, чтобы работать
лучше, пошлите письмо по адресу
<internals@lists.mysql.com> .
Просьба к вам: на основании
приведенных выше сравнительных
характеристик не делать выводов о
том, что какая-либо операционная
система лучше или хуже другой в
общем. Мы говорим о выборе
определенной операционной системы
для конкретной цели - для работы
MySQL, и сравниваем платформы только
в таком смысле. С этой точки зрения
результат такого сравнения был бы
другим, если бы мы включили в него
больше пунктов. И в некоторых
случаях причина того, что одна
операционная система лучше, чем
другая, может заключаться всего
лишь в том, что в тестирование и
оптимизацию этой конкретной
платформы было вложено гораздо
больше усилий. Мы просто
констатируем наши наблюдения,
чтобы помочь вам принять решение -
на какой платформе использовать
MySQL в вашей системе.
2.2.4. Какую версию MySQL использовать
Во-первых, нужно принять решение о
том, что именно вам требуется -
самый свежий экспериментальный
выпуск или последняя устойчивая
версия:
Если вы собираетесь
использовать MySQL впервые или
пытаетесь выполнить перенос MySQL
на некоторую систему, для
которой нет бинарного
дистрибутива, то обычно мы
рекомендуем начинать со
стабильной версии (в настоящее
время это версия 3.23). Следует
иметь в виду, что все релизы MySQL
проверяются с помощью тестов
производительности MySQL и набора
всесторонних тестов перед
каждым выпуском (даже для
экспериментальных выпусков).
Если же вы работаете со старой
системой и желаете ее
модернизировать, но хотите
избежать возможных нестыковок
при модернизации, то необходимо
проводить замену на самую новую
версию в той же ветви, которую вы
используете (где только
последний номер версии более
новый, чем у вашей). В таких
версиях мы стараемся исправлять
только критические ошибки и
делать только небольшие,
относительно безопасные
изменения.
Во-вторых, нужно принять решение,
хотите ли вы использовать
дистрибутив исходного кода или
бинарный дистрибутив. В
большинстве случаев лучше
остановить свой выбор на бинарном
дистрибутиве, если такой
существует для вашей платформы,
так как обычно его проще
установить, чем дистрибутив
исходного кода.
Установка из исходного кода может
оказаться более предпочтительной
в следующих случаях:
Если необходимо инсталлировать
MySQL в некотором явно заданном
местоположении (стандартные
бинарные поставки являются
``готовыми к запуску'' в любом
месте, но, возможно, вам
потребуется еще большая
гибкость).
Чтобы удовлетворить различные
требования пользователей, мы
поставляем две разных бинарных
версии: одна скомпилирована с
обработчиками нетранзакционных
таблиц (небольшой, быстрый
бинарный код), а вторая
сконфигурирована с наиболее
важными возможностями
расширения, такими, как
поддерживающие транзакции
таблицы. Обе версии
компилируются из одного и того
же исходного кода. Все
собственные клиенты
MySQL могут подключаться
к обеим версиям.
Бинарный дистрибутив
расширенной версии MySQL
маркируется суффиксом
-max и конфигурируется с
теми же опциями, что и
mysqld-max . See
Раздел 4.7.5, «mysqld-max , расширенный сервер
mysqld ».
Если вы хотите использовать
пакет RPM MySQL-Max , то
сначала следует установить
стандартный пакет MySQL
RPM.
Если вам нужно сконфигурировать
mysqld с некоторыми
дополнительными свойствами,
которые отсутствуют в
стандартных бинарных
дистрибутивах. Ниже приводится
список наиболее
распространенных
дополнительных опций, которые,
возможно, вы захотите
использовать:
По умолчанию бинарный
дистрибутив обычно
компилируется с поддержкой всех
кодировок и должен работать на
различных процессорах из одного
и того же семейства процессоров.
Если требуется получить более
быстрый сервер MySQL, то можно
перекомпилировать его с
поддержкой только одной
необходимой вам кодировки,
использовать лучший компилятор
(наподобие pgcc ) или
воспользоваться опциями
компилятора, которые лучше
оптимизированы для вашего
процессора.
Если вы нашли ошибку и сообщили о
ней команде разработчиков MySQL, то
вам должны выслать патч, который
следует применить к
дистрибутиву исходного кода для
исправления ошибки.
Если вы хотите читать (и/или
модифицировать) исходный код MySQL
(на C и C++), необходимо иметь
дистрибутив исходного кода.
Исходный код - это всегда лучшая
документация. Дистрибутивы
исходного кода также содержат
больше тестов и примеров, чем
бинарные дистрибутивы.
В системе наименований в MySQL
используются номера выпусков,
состоящие из трех чисел и суффикса.
Например, выпуск
mysql-3.21.17-beta
интерпретируется следующим
образом:
Первое число (3 ) служит
для описания формата файлов. Все
выпуски версии 3 имеют
один и тот же формат файлов.
Второе число (21 )
представляет собой уровень
выпуска. Обычно существует выбор
из двух возможностей. Одна
представляет выпуск стабильной
ветви (в настоящее время
23 ) и вторая -
экспериментальную ветвь (в
настоящее время 4.0 ).
Обычно обе ветви стабильны, но
экспериментальная версия может
обладать некоторыми причудами,
возможно отсутствие
документации на новые свойства,
либо она может не
компилироваться на некоторых
системах.
Третье число (17 )
является номером версии в
пределах уровня выпуска. Это
число увеличивается для каждого
нового дистрибутива. Обычно
имеет смысл предпочесть самую
последнюю версию для выбранного
уровня выпуска.
Суффикс (beta ) указывает
на уровень стабильности данного
выпуска. Возможны следующие
суффиксы:
alpha указывает, что
выпуск содержит большие
разделы нового кода, не
протестированного на 100%.
Обнаруженные ошибки (обычно их
нет) должны быть
задокументированы в разделе
``Новости'' (News). См. раздел See
Приложение D, История изменений и обновлений MySQL. В большинстве
выпусков alpha
присутствуют также новые
команды и расширения. При
работе над
alpha -выпуском может
происходить активная
разработка, включающая
значительные изменения кода,
но перед выпуском все
тестируется. В любом выпуске
MySQL не должно быть известных
ошибок.
beta означает, что
весь новый код протестирован.
Не добавляются никакие новые
свойства, которые могли бы
вызвать повреждения старого
кода. Не должно быть никаких
известных ошибок. Версия
изменяется с alpha на
beta тогда, когда
никаких сообщений о
критических ошибках в
alpha -версии не
поступает по меньшей мере в
течение месяца и мы не
планируем добавлять какие-
либо новые свойства, которые
могли бы понизить надежность
прежних команд.
gamma представляет
собой версию beta ,
которая почти закончена и,
похоже, работает хорошо.
Добавляются только
незначительные исправления.
Это именно то, что во многих
других компаниях называется
релизом.
Если нет никакого суффикса,
это означает, что данная
версия запускалась на многих
различных компьютерных
системах без сообщений об
ошибках, кроме ошибок,
относящихся к специфике
платформ; для нее допускается
только исправление
критических ошибок. Именно
поэтому такой выпуск мы
называем стабильным.
Все версии MySQL пропускаются через
наши стандартные тесты и
контрольные задачи, чтобы получить
уверенность в том, что они надежны
в применении. Так как стандартные
тесты периодически дополняются,
чтобы включить проверку
обнаруженных новых ошибок и
ситуаций, которые могут их вызвать,
то набор тестов со временем
становится лучше и лучше.
Отметим, что все выпуски
протестированы по меньшей мере со
следующими тестами:
Существует еще один тест. Он
заключается в том, что мы
используем самую новую версию MySQL в
нашей внутренней производственной
среде по крайней мере на одной
машине. Для работы с этой версией у
нас есть более чем 100 гигабайт
данных.
В этом разделе описывается
расположение каталогов,
создаваемых по умолчанию при
установке бинарного дистрибутива
и дистрибутива исходного кода.
Бинарный дистрибутив
устанавливается путем его
распаковки в выбранном вами месте
установки (обычно
/usr/local/mysql ) и создает
следующие каталоги:
Дистрибутив исходного кода
устанавливается после того, как вы
сконфигурируете и скомпилируете
его. По умолчанию на этапе
установки файлы инсталлируются в
каталог /usr/local в
следующие подкаталоги:
Внутри каталога установки схема
расположения инсталляции
исходного кода отличается от схемы
установки бинарного дистрибутива
в следующих отношениях:
Сервер mysqld
устанавливается в каталог
libexec , а не в
bin .
Каталогом данных является
var , а не data .
mysql_install_db
устанавливается в каталоге
/usr/local/bin , а не в
/usr/local/mysql/scripts .
Каталогами заголовочных файлов
и библиотек являются
include/mysql и
lib/mysql , а не
include и lib .
Можно создать собственную
бинарную установку из
скомпилированного дистрибутива
исходного кода. Для этого следует
выполнить скрипт
scripts/make_binary_distribution .
2.2.6. Как и когда выпускаются обновления
Развитие MySQL в MySQL AB происходит
очень быстрыми темпами и мы
стремимся к тому, чтобы результаты
нашей работы стали доступны и
другим пользователям MySQL. Мы
стараемся сделать новый выпуск
сразу же, как только в продукте
появляются очень полезные
свойства, которые, по нашему
мнению, необходимы другим
пользователям.
Помимо этого мы откликаемся на
просьбы наших пользователей, если
для этого требуется добавить в
продукт легко реализуемые
свойства. Мы принимаем во внимание
пожелания наших пользователей,
имеющих лицензии, а особенно -
пожелания обширного круга
пользователей, охваченных
поддержкой при помощи электронной
почты, и стараемся помочь им решить
их проблемы.
Загружать новый выпуск не
обязательно. Информацию о том,
действительно ли новый выпуск
представляет собой именно то, что
вам требуется, вы почерпнете из
раздела ``Новости'' (News). See
Приложение D, История изменений и обновлений MySQL.
Наша политика в вопросах
обновления MySQL заключается в
следующем:
Для каждого небольшого
обновления последняя цифра в
строке версии увеличивается. При
внесении существенно новых
свойств или небольших
несовместимостей с предыдущими
версиями увеличивается второе
число в строке версии. Если
изменяется формат файлов, то
увеличивается первая цифра.
Протестированные на
устойчивость версии должны
обычно появляться 1-2 раза в год,
но если обнаруживаются
небольшие ошибки, то выпускаются
версии только с исправлениями
ошибок.
Рабочие исправления к старым
версиям должны появляться
примерно каждые 1-8 недель.
Бинарные дистрибутивы для
некоторых платформ мы будем
делать для значительных
выпусков. Бинарные дистрибутивы
для других систем иногда
создаются и другими людьми, но,
как правило, не так часто.
Обычно мы делаем патчи
доступными сразу же после
локализации и исправления
небольших ошибок. Они посылаются
на <bugs@lists.mysql.com> и
включаются в очередной выпуск.
Некритические, но досадные
ошибки мы будем добавлять в
репозиторий исходного кода MySQL и
они будут исправляться в
следующем выпуске.
Если по какой-либо случайности в
выпуске окажется критическая
ошибка, то мы сделаем новый
выпуск как можно скорее. Мы
хотели бы, чтобы нашему примеру и
следовали и другие компании.
Текущим стабильным выпуском
сейчас является версия 3.23; уже
начата активную разработка версии
4.0. Ошибки в стабильной версии
по-прежнему будут исправляться. Мы
не верим в полное ``замораживание'',
поскольку при этом упускаются
исправления ошибок и вещи, которые
``должны быть сделаны''. ``Отчасти
заморожено'' подразумевает, что мы
можем добавить некоторые вещи,
которые ``почти несомненно не
окажут влияния ни на что из того,
что уже работает''.
В MySQL применяется несколько
отличающаяся от большинства
других продуктов система
именования. В общем случае
достаточно надежно использовать
любую версию, просуществовавшую в
течение пары недель без замены ее
новой версией. See Раздел 2.2.4, «Какую версию MySQL использовать».
2.2.7. Бинарные коды MySQL, скомпилированные в
MySQL AB
Компания MySQL AB в качестве услуги
предоставляет набор бинарных
(скомпилированных) дистрибутивов
MySQL - они скомпилированы на нашем
оборудовании или на
вычислительных системах, к которым
нам любезно предоставили доступ
заказчики.
Эти дистрибутивы сгенерированы
скриптом Build-tools/Do-compile ,
который компилирует дерево
исходных кодов, и создает архив
.tar.gz используя
scripts/make_binary_distribution
Эти бинарники сконфигурированы и
собраны с помощью следующих
компиляторов и опций.
Linux 2.4.xx i386 с gcc 2.95.3
CFLAGS="-O2 -mcpu=pentiumpro" CXX=gcc CXXFLAGS="-O2
-mcpu=pentiumpro -felide-constructors" ./configure
--prefix=/usr/local/mysql --with-extra-charsets=complex
--enable-thread-safe-client --enable-local-infile
--enable-assembler --disable-shared
--with-client-ldflags=-all-static
--with-mysqld-ldflags=-all-static
Linux 2.4.xx ia64 с ecc (Intel C++
Itanium Compiler 7.0)
CC=ecc CFLAGS=-tpp1 CXX=ecc CXXFLAGS=-tpp1
./configure --prefix=/usr/local/mysql
--with-extra-charsets=complex --enable-thread-safe-client
--enable-local-infile
Linux 2.4.xx alpha с ccc (Compaq C
V6.2-505 / Compaq C++ V6.3-006)
CC=ccc CFLAGS="-fast -arch generic" CXX=cxx
CXXFLAGS="-fast -arch generic -noexceptions -nortti"
./configure --prefix=/usr/local/mysql
--with-extra-charsets=complex --enable-thread-safe-client
--enable-local-infile --with-mysqld-ldflags=-non_shared
--with-client-ldflags=-non_shared --disable-shared
Linux 2.2.xx sparc с egcs 1.1.2
CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc
CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors
-fno-exceptions -fno-rtti" ./configure
--prefix=/usr/local/mysql --with-extra-charsets=complex
--enable-thread-safe-client --enable-local-infile
--enable-assembler --disable-shared
Linux 2.4.xx s390 с gcc 2.95.3
CFLAGS="-O2" CXX=gcc CXXFLAGS="-O2
-felide-constructors" ./configure --prefix=/usr/local/mysql
--with-extra-charsets=complex --enable-thread-safe-client
--enable-local-infile --disable-shared
--with-client-ldflags=-all-static
--with-mysqld-ldflags=-all-static
Sun Solaris 2.8 sparc с gcc 3.2
CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc
CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors
-fno-exceptions -fno-rtti" ./configure
--prefix=/usr/local/mysql --with-extra-charsets=complex
--enable-thread-safe-client --enable-local-infile
--enable-assembler --with-named-z-libs=no
--with-named-curses-libs=-lcurses --disable-shared
Sun Solaris 2.9 sparc с gcc 2.95.3
CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc
CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors
-fno-exceptions -fno-rtti" ./configure
--prefix=/usr/local/mysql --with-extra-charsets=complex
--enable-thread-safe-client --enable-local-infile
--enable-assembler --with-named-curses-libs=-lcurses
--disable-shared
Sun Solaris 2.9 sparc с cc-5.0 (Sun
Forte 5.0)
CC=cc-5.0 CXX=CC ASFLAGS="-xarch=v9" CFLAGS="-Xa
-xstrconst -mt -D_FORTEC_ -xarch=v9" CXXFLAGS="-noex -mt
-D_FORTEC_ -xarch=v9" ./configure --prefix=/usr/local/mysql
--with-extra-charsets=complex --enable-thread-safe-client
--enable-local-infile --enable-assembler
--with-named-z-libs=no --enable-thread-safe-client
--disable-shared
IBM AIX 4.3.2 ppc с gcc 3.2.1
CFLAGS="-O2 -mcpu=powerpc -Wa,-many " CXX=gcc
CXXFLAGS="-O2 -mcpu=powerpc -Wa,-many -felide-constructors
-fno-exceptions -fno-rtti" ./configure
--prefix=/usr/local/mysql --with-extra-charsets=complex
--enable-thread-safe-client --enable-local-infile
--with-named-z-libs=no --disable-shared
IBM AIX 5.1.0 ppc с gcc 3.2.1
CFLAGS="-O2 -mcpu=powerpc -Wa,-many" CXX=gcc
CXXFLAGS="-O2 -mcpu=powerpc -Wa,-many -felide-constructors
-fno-exceptions -fno-rtti" ./configure
--prefix=/usr/local/mysql --with-extra-charsets=complex
--with-server-suffix="-pro" --enable-thread-safe-client
--enable-local-infile --with-named-z-libs=no
--disable-shared --with-innodb
HP-UX 10.20 pa-risc1.1 с gcc 3.1
CFLAGS="-DHPUX -I/opt/dce/include -O3 -fPIC"
CXX=gcc CXXFLAGS="-DHPUX -I/opt/dce /include
-felide-constructors -fno-exceptions -fno-rtti -O3 -fPIC"
./configure --prefix=/usr/local/mysql
--with-extra-charsets=complex --enable-thread-safe-client
--enable-local-infile --with-pthread
--with-named-thread-libs=-ldce --with-lib-ccflags=-fPIC
--disable-shared
HP-UX 11.11 pa-risc2.0 с aCC (HP ANSI
C++ B3910B A.03.33)
CC=cc CXX=aCC CFLAGS=+DD64 CXXFLAGS=+DD64
./configure --prefix=/usr/local/mysql
--with-extra-charsets=complex --enable-thread-safe-client
--enable-local-infile --disable-shared
Apple MacOS X 10.2 powerpc с gcc 3.1
CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc
CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors
-fno-exceptions -fno-rtti" ./configure
--prefix=/usr/local/mysql --with-extra-charsets=complex
--enable-thread-safe-client --enable-local-infile
--disable-shared
FreeBSD 4.7 i386 с gcc 2.95.4
CFLAGS=-DHAVE_BROKEN_REALPATH ./configure
--prefix=/usr/local/mysql --with-extra-charsets=complex
--enable-thread-safe-client --enable-local-infile
--enable-assembler --with-named-z-libs=not-used
--disable-shared
Следующие бинарные поставки
собраны на системах,
предоставленных MySQL AB
пользователями. Заметьте, что эти
бинарные поставки предоставляются
исключительно для удобства.
Поскольку у MySQL AB нет полного
контроля над этими системами, мы
только можем дать ограниченную
поддержку этих бинарных поставок.
SCO Unix 3.2v5.0.6 i386 с gcc 2.95.3
CFLAGS="-O3 -mpentium" LDFLAGS=-static CXX=gcc
CXXFLAGS="-O3 -mpentium -felide-constructors" ./configure
--prefix=/usr/local/mysql --with-extra-charsets=complex
--enable-thread-safe-client --enable-local-infile
--with-named-z-libs=no --enable-thread-safe-client
--disable-shared
Caldera Open Unix 8.0.0 i386 с CC 3.2
CC=cc CFLAGS="-O" CXX=CC ./configure
--prefix=/usr/local/mysql --with-extra-charsets=complex
--enable-thread-safe-client --enable-local-infile
--with-named-z-libs=no --enable-thread-safe-client
--disable-shared
Compaq Tru64 OSF/1 V5.1 732 alpha с
cc/cxx (Compaq C V6.3-029i / DIGITAL C++
V6.1-027)
CC="cc -pthread" CFLAGS="-O4 -ansi_alias -ansi_args
-fast -inline speed -speculate all" CXX="cxx -pthread"
CXXFLAGS="-O4 -ansi_alias -fast -inline speed -speculate all
-noexceptions -nortti" ./configure --prefix=/usr/local/mysql
--with-extra-charsets=complex --enable-thread-safe-client
--enable-local-infile --with-prefix=/usr/local/mysql
--with-named-thread-libs="-lpthread -lmach -lexc -lc"
--disable-shared --with-mysqld-ldflags=-all-static
SGI Irix 6.5 IP32 с gcc 3.0.1
CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer"
CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors
-fno-exceptions -fno-rtti" ./configure
--prefix=/usr/local/mysql --with-extra-charsets=complex
--enable-thread-safe-client --enable-local-infile
--disable-shared
Такие опции компиляции
использовались для бинарных
поставок MySQL AB в прошлом. Такие
бинарные поставки более не
обновляются, но опции компиляции
мы сохранили здесь как
реферативную информацию.
Linux 2.2.x с x686 с gcc 2.95.2
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 --disable-shared
--with-extra-charsets=complex
SunOS 4.1.4 2 sun4c с gcc 2.7.2.1
CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors"
./configure --prefix=/usr/local/mysql --disable-shared
--with-extra-charsets=complex --enable-assembler
SunOS 5.5.1 (and above) sun4u с egcs
1.0.3a or 2.90.27 or gcc 2.95.2 and newer
CC=gcc CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3
-felide-constructors -fno-exceptions -fno-rtti" ./configure
--prefix=/usr/local/mysql --with-low-memory
--with-extra-charsets=complex --enable-assembler
SunOS 5.6 i86pc с gcc 2.8.1
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure
--prefix=/usr/local/mysql --with-low-memory
--with-extra-charsets=complex
BSDI BSD/OS 3.1 i386 с gcc 2.7.2.1
CC=gcc CXX=gcc CXXFLAGS=-O ./configure
--prefix=/usr/local/mysql
--with-extra-charsets=complex
BSDI BSD/OS 2.1 i386 с gcc 2.7.2
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure
--prefix=/usr/local/mysql
--with-extra-charsets=complex
AIX 2 4 с gcc 2.7.2.2
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure
--prefix=/usr/local/mysql
--with-extra-charsets=complex
Каждый, кто обладает более
оптимальными опциями для любой из
вышеперечисленных конфигураций, в
любое время может выслать их в
список рассылки разработчиков по
адресу <internals@lists.mysql.com> .
Дистрибутивы RPM для версии MySQL до 3.22
создавались силами пользователей.
Однако начиная с версии 3.22, пакеты
RPM собираются у нас в MySQL AB.
Если вы хотите скомпилировать
отладочную версию MySQL, то следует
добавить --with-debug или
--with-debug=full к предыдущим
строкам конфигурации и удалить
любые опции -fomit-frame-pointer .
По вопросам, относящимся к
дистрибутиву для Windows, просьба
обращаться к разделу See
Раздел 2.1.2, «Установка MySQL на Windows».
2.2.8. Установка бинарного дистрибутива MySQL
См. также раздел See
Раздел 2.1.2.1, «Установка бинарного кода», раздел
Раздел 2.1.1, «Установка MySQL на Linux» и раздел See
Раздел 8.4.7, «Сборка клиентских программ».
Для установки бинарного
дистрибутива MySQL необходимы
следующие инструментальные
средства:
GNU gunzip для
разархивирования дистрибутива.
Подходящий tar для
распаковки дистрибутива. GNU
tar известен как
работающий, а tar
разработки Sun - как имеющий
проблемы.
Для Linux существует альтернативный
метод установки с использованием
дистрибутива RPM (RedHat Package Manager,
менеджер пакетов RedHat). См. раздел See
Раздел 2.1.1, «Установка MySQL на Linux».
Если вам придется столкнуться с
проблемами, то, пожалуйста, при
отправке вопросов на
<mysql@lists.mysql.com> всегда
пользуйтесь mysqlbug . Даже
если ваша проблема не относится к
числу ошибок, mysqlbug
соберет системную информацию,
которая поможет решать такие
проблемы и другим. Без
mysqlbug вы уменьшаете
вероятность получить решение
своей проблемы! mysqlbug
можно найти в каталоге
scripts после распаковки
дистрибутива. See Раздел 1.8.1.3, «Как отправлять отчеты об ошибках или
проблемах».
Для установки бинарного
дистрибутива MySQL необходимо
выполнить следующие основные
команды:
shell> groupadd mysql
shell> useradd -g mysql mysql
shell> cd /usr/local
shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> scripts/mysql_install_db
shell> chown -R root .
shell> chown -R mysql data
shell> chgrp -R mysql .
shell> bin/safe_mysqld --user=mysql &
или
shell> bin/mysqld_safe --user=mysql &
если вы работаете с MySQL 4.x
Новых пользователей можно
добавить, используя скрипт
bin/mysql_setpermission , если
установить модули Perl DBI и
Msql-Mysql-modules .
Далее следует более детальное
описание.
Для установки бинарного
дистрибутива выполните
приведенные ниже действия, а затем
перейдите к разделу
Раздел 2.4, «Послеустановочные настройка и
тестирование» для
послеустановочной настройки и
проверки:
Выберите каталог, в котором вы
хотите распаковать дистрибутив,
и откройте его. В последующих
примерах мы распаковываем
дистрибутив под
/usr/local и создаем
каталог /usr/local/mysql , в
котором устанавливается MySQL. (Для
выполнения дальнейших
инструкций, следовательно,
предполагается, что вы обладаете
правами создания файлов в
/usr/local . Если этот
каталог защищен, то вы должны
производить установку как
пользователь root .)
Получите файл дистрибутива с
одного из сайтов, перечисленных
в разделе See Раздел 2.2.1, «Как получить MySQL».
Бинарные дистрибутивы MySQL
поставляются как сжатые архивы
tar с именами вроде
mysql-VERSION-OS.tar.gz , где
VERSION представляет
собой число (например 5.0.6-beta), а
OS указывает тип
операционной системы, для
которой предназначен данный
дистрибутив (например
pc-linux-gnu-i586 ).
Если бинарный дистрибутив
маркирован суффиксом
-max , то это означает,
что данный бинарный код
поддерживает транзакционные
таблицы и другие свойства. See
Раздел 4.7.5, «mysqld-max , расширенный сервер
mysqld ». Отметим, что все
бинарные дистрибутивы созданы
из одного и того же дистрибутива
исходного кода MySQL.
Добавьте пользователя и группу
для запуска mysqld как:
shell> groupadd mysql
shell> useradd -g mysql mysql
Приведенные команды добавляют
группу mysql и
пользователя mysql .
Данный синтаксис для
useradd и groupadd
для различных версиях Unix может
иметь некоторые различия. Эти
команды могут также называться
adduser и addgroup .
При желании можно дать
пользователю и группе вместо
mysql другие имена.
Задайте предназначенный для
установки каталог:
shell> cd /usr/local
Распакуйте дистрибутив и
создайте каталог установки:
shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
shell> ln -s full-path-to-mysql-VERSION-OS mysql
Первая команда создает каталог с
именем mysql-VERSION-OS , а
вторая - устанавливает
символическую ссылку на данный
каталог. Это позволяет более
просто ссылаться на каталог
установки - как на
/usr/local/mysql .
Измените в каталоге установки:
shell> cd mysql
В каталоге mysql вы
найдете несколько файлов и
подкаталогов. Наиболее важными
для целей установки являются
подкаталоги bin и
scripts .
bin
Этот каталог содержит
клиентские программы и сервер.
Необходимо добавить полный
путь к этому каталогу в
переменную окружения
PATH , чтобы оболочка
операционной системы
правильно находила программы
MySQL. See Приложение F, Переменные окружения.
scripts
Этот каталог содержит скрипт
mysql_install_db ,
используемый для
инициализации базы данных
mysql , содержащей
таблицы привилегий, в которых
хранятся права доступа к
серверу.
Если вы предпочитаете
использовать mysqlaccess и
установить дистрибутив MySQL в
каком-либо нестандартном месте,
то необходимо изменить место,
где mysqlaccess ожидает
найти клиента mysql .
Отредактируйте скрипт
bin/mysqlaccess примерно на
18-й строке. Найдите строку,
выглядящую примерно так:
$MYSQL = '/usr/local/bin/mysql'; # путь к исполняемому клиенту mysql
Измените путь для указания того
места в системе, где
действительно находится
mysql . Если этого не
сделать, то возникнет ошибка
Broken pipe при запуске
mysqlaccess .
Создайте таблицы привилегий MySQL
(необходимы только в том случае,
если ранее MySQL не
устанавливался):
shell> scripts/mysql_install_db
Отметим, что в версиях MySQL старше,
чем 3.22.10, сервер MySQL запускался
при запуске mysql_install_db .
Сейчас это не так!
Измените принадлежность
бинарного кода пользователю
root и принадлежность
каталога данных пользователю,
под которым будет запускаться
mysqld , следующим
образом:
shell> chown -R root /usr/local/mysql/.
shell> chown -R mysql /usr/local/mysql/data
shell> chgrp -R mysql /usr/local/mysql/.
Первая команда изменяет
владельца данного файла на
пользователя root ,
вторая - владельца каталога
данных на пользователя
mysql , а третья - группу
на группу mysql .
Если вы хотите установить
поддержку интерфейса Perl
DBI /DBD , See
Раздел 2.7, «Замечания по установке Perl».
Если вы хотели бы, чтобы работа
MySQL начиналась автоматически при
начальной загрузке компьютера,
то можно скопировать
support-files/mysql.server в то
место, где находятся файлы
запуска вашей системы. Более
подробную информацию можно
найти в самом скрипте
support-files/mysql.server и в
разделе See Раздел 2.4.3, «Автоматический запуск и остановка MySQL».
После того, как все это будет
установлено, необходимо
инициализировать и протестировать
данный дистрибутив.
Запустить сервер MySQL можно с
помощью следующей команды:
shell> bin/safe_mysqld --user=mysql &
А сейчас следует перейти к разделу
Раздел 4.7.2, «safe_mysqld , оболочка
mysqld » и просмотреть
раздел See Раздел 2.4, «Послеустановочные настройка и
тестирование».
2.3. Установка исходного дистрибутива MySQL
Перед тем как приступить к
установке исходного кода, вначале
убедитесь, что наш бинарный
дистрибутив подходит для вашей
платформы и что он будет работать на
вашей системе. Мы прилагаем много
усилий для того, чтобы снабдить наши
бинарные дистрибутивы наилучшими
свойствами из возможных.
Для сборки и установки MySQL из
исходного кода необходимы
следующие инструменты:
GNU gunzip для
разархивирования дистрибутива.
Подходящий tar для
распаковки дистрибутива.
Известно, что GNU tar
является работоспособным, а
tar разработки Sun имеет
проблемы.
Работающий компилятор ANSI C++. К
числу компиляторов, о которых
известно, что они работают,
относятся версии gcc >=
2.95.2, egcs >= 1.0.2 или egcs
2.91.66, SGI C++ и SunPro C++. При
использовании gcc нет
необходимости в libg++ .
Версия gcc 2.7.x имеет ошибку, из-за
которой невозможна компиляция
некоторых полностью допустимых
файлов C++, таких как
sql/sql_base.cc . Если у вас
есть только gcc 2.7.x, то
для того, чтобы можно было
провести компиляцию MySQL,
необходимо модернизировать
gcc . Компилятор
gcc 2.8.1, как известно,
также имеет проблемы на некоторых
платформах, так что его лучше не
использовать, если для данной
платформы существует новый
компилятор. При компиляции версии
MySQL 3.23.x рекомендуется gcc
>= 2.95.2.
Хорошая программа make .
Всегда рекомендуется (а иногда и
необходимо) использовать GNU make. В
случае возникновения проблем мы
рекомендуем попробовать работать
с версией GNU make 3.75 или более новой.
Очень важно, чтобы вы использовали
последнюю версию gcc ,
достаточно новую, чтобы ``понимать''
опцию -fno-exceptions . В
противном случае не исключена
компиляция бинарного кода, который
может неожиданно привести к отказу.
Мы также рекомендуем использовать
-felide-constructors и
-fno-rtti вместе с
-fno-exceptions . Если вы
сомневаетесь, то выполните
следующие действия:
CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions \
-fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler \
--with-mysqld-ldflags=-all-static
На большинстве операционных систем
это даст быстрый и стабильный
бинарный код.
Если вам придется столкнуться с
проблемами, то при отправке
вопросов на <mysql@lists.mysql.com> ,
пожалуйста, всегда используйте
mysqlbug . Даже если ваша
проблема не вызвана какой-либо
ошибкой, mysqlbug соберет
системную информацию, которая в
поможет решении этой проблемы
другим пользователям. Без
mysqlbug уменьшается
вероятность того, что вы получите
решение своей проблемы!
mysqlbug можно найти в
каталоге scripts после
распаковки дистрибутива. See
Раздел 1.8.1.3, «Как отправлять отчеты об ошибках или
проблемах».
2.3.1. Обзор быстрой установки
Для установки MySQL из исходного кода
необходимо выполнить следующие
основные команды:
shell> groupadd mysql
shell> useradd -g mysql mysql
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql
shell> make
shell> make install
shell> scripts/mysql_install_db
shell> chown -R root /usr/local/mysql
shell> chown -R mysql /usr/local/mysql/var
shell> chgrp -R mysql /usr/local/mysql
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> /usr/local/mysql/bin/safe_mysqld --user=mysql &
или
shell> /usr/local/mysql/bin/mysqld_safe --user=mysql &
если запускается версия MySQL 4.x.
Чтобы обеспечить поддержку таблиц
InnoDB, следует отредактировать файл
/etc/my.cnf , удалив символ
# перед теми параметрами,
которые начинаются с
innodb_.... See
Раздел 4.1.2, «Файлы параметров my.cnf ». See
Раздел 7.5.2, «Параметры запуска InnoDB».
Если вы используете исходный код
RPM, выполните следующую команду:
shell> rpm --rebuild --clean MySQL-VERSION.src.rpm
Эта команда создаст бинарный код
RPM, который вы можете установить.
Новых пользователей можно
добавить, используя скрипт
bin/mysql_setpermission , если
установить модули Perl DBI и
Msql-Mysql-modules .
Ниже следует более подробное
описание установки.
Для установки исходного кода нужно
выполнить приведенные ниже
действия, а затем перейти к разделу
Раздел 2.4, «Послеустановочные настройка и
тестирование» для
инициализации и послеустановочной
проверки:
Выберите каталог, в котором вы
хотите распаковать дистрибутив,
и откройте его.
Получите файл дистрибутива с
одного из сайтов, перечисленных
в разделе See Раздел 2.2.1, «Как получить MySQL».
Если вы заинтересованы в том,
чтобы использовать с MySQL таблицы
Berkeley DB, то необходимо получить
версию исходного кода таблиц
Berkeley DB с патчами. Кроме того,
прежде чем предпринимать
какие-либо действия,
ознакомьтесь, пожалуйста, с
разделом, посвященным таблицам
Berkeley DB (see Раздел 7.6, «Таблицы BDB или BerkeleyDB»).
Дистрибутивы исходного кода MySQL
поставляются в виде сжатых
архивов tar с именами наподобие
mysql-VERSION.tar.gz , где
VERSION представляет
собой число.
Добавьте пользователя и группу
для запуска mysqld
следующим образом:
shell> groupadd mysql
shell> useradd -g mysql mysql
Эти команды добавляют группу
mysql и пользователя
mysql . Данный синтаксис
для useradd и
groupadd в различных
версиях Unix может иметь некоторые
отличия. Приведенные выше
команды могут также иметь другие
названия - adduser и
addgroup соответственно.
Пользователю и группе можно
назначить какие-нибудь иные,
отличные от mysql имена.
Распакуйте дистрибутив в
текущем каталоге:
shell> gunzip < /path/to/mysql-VERSION.tar.gz | tar xvf -
Эта команда создает каталог с
именем mysql-VERSION .
Перейдите из каталога
распакованного дистрибутива в
каталог высшего уровня:
shell> cd mysql-VERSION
Учтите, что теперь необходимо
конфигурировать и компоновать
MySQL из этого каталога высшего
уровня. Построить MySQL в другом
каталоге нельзя.
Сформируйте релиз и
скомпилируйте весь код:
shell> ./configure --prefix=/usr/local/mysql
shell> make
При запуске configure вам, возможно,
понадобится указать некоторые
опции. Чтобы получить список
опций, запустите ./configure
--help . Некоторые наиболее
полезные опции рассмотрены в
разделе See Раздел 2.3.3, «Типичные опции configure ».
Если configure не работает
и вы собираетесь посылать письмо
с просьбой о помощи на
<mysql@lists.mysql.com> , то просьба
включить в него те строки из
config.log , которые, по
вашему мнению, могут помочь
решить данную проблему. Кроме
того, если выполнение
configure преждевременно
прекращается, в письмо следует
включить несколько последних
строк вывода из configure .
Для отсылки отчета об ошибке
используйте скрипт
mysqlbug (see
Раздел 1.8.1.3, «Как отправлять отчеты об ошибках или
проблемах»). Если
компиляция не выполняется, то
обращайтесь к разделу See
Раздел 2.3.5, «Проблемы с компиляцией?», в котором
содержатся рекомендации по
решению ряда часто
встречающихся проблем.
Установите весь код:
shell> make install
Возможно, необходимо запустить
эту команду как root .
Создайте таблицы привилегий MySQL
(это необходимо только в случае,
если нет ранее установленной
версии MySQL ):
shell> scripts/mysql_install_db
Учтите, что в версиях MySQL до 3.22.10
работа сервера MySQL начиналась
при запуске mysql_install_db .
Сейчас это не так!
Измените принадлежность
бинарного кода root и
принадлежность каталога данных,
назначив их пользователю, под
именем которого будет
запускаться mysqld . Это
делается следующим образом:
shell> chown -R root /usr/local/mysql
shell> chown -R mysql /usr/local/mysql/var
shell> chgrp -R mysql /usr/local/mysql
Первая команда изменяет атрибут
owner данного файла на
пользователя root ,
вторая - атрибут owner каталога
данных на пользователя
mysql , а третья - атрибут
group на группу mysql .
Если вы хотите установить
поддержку интерфейса Perl
DBI /DBD ,
обращайтесь к разделу See
Раздел 2.7, «Замечания по установке Perl».
Если вы хотели бы, чтобы работа
MySQL начиналась автоматически при
начальной загрузке компьютера,
то можно скопировать
support-files/mysql.server в то
место, где находятся файлы
запуска вашей системы. Более
подробную информацию можно
найти в самом скрипте
support-files/mysql.server и в
разделе See Раздел 2.4.3, «Автоматический запуск и остановка MySQL».
После завершения установки данный
дистрибутив необходимо
проинициализировать и
протестировать:
shell> /usr/local/mysql/bin/safe_mysqld --user=mysql &
Если эта команда прекращает работу
немедленно после останова демона
mysqld , то некоторую
информацию можно найти в файле
mysql-data-directory/'hostname'.err .
Причина, возможно, заключается в
том, что уже запущен другой сервер
mysqld (see
Раздел 4.1.4, «Запуск нескольких серверов MySQL на одном
компьютере»).
Теперь приступайте к разделу See
Раздел 2.4, «Послеустановочные настройка и
тестирование».
Патчи иногда присутствуют в списке
рассылки или помещаются в папке
патчей на веб-сайте MySQL
(http://www.mysql.com/downloads/patches.html).
Для применения патча из списка
рассылки сохраните сообщение,
содержащее патч, в файле, поместите
его в каталог высшего уровня, в
котором находится дерево исходных
кодов MySQL, и запустите следующие
команды:
shell> patch -p1 < patch-file-name
shell> rm config.cache
shell> make clean
Патчи с FTP-сайта распространяются
как файлы с простым текстом или как
файлы, сжатые с помощью
gzip . Патч в виде простого
текста следует применять, как
показано выше для патчей из списка
рассылки. Чтобы применить сжатый
патч, поместите его в каталог
высшего уровня, в котором
находится дерево исходных кодов
MySQL, и запустите следующие команды:
shell> gunzip < patch-file-name.gz | patch -p1
shell> rm config.cache
shell> make clean
После применения патча следуйте
инструкциям для обычной установки
исходного кода, начиная с этапа
./configure . После запуска
этапа make install
перезапустите свой сервер MySQL.
Возможно, перед запуском make
install потребуется остановить
любые запущенные в это время
серверы (используйте для этого
mysqladmin shutdown ). В некоторых
системы не разрешается
устанавливать новую версию
какой-либо программы, если она
замещает запущенную в данное время
версию.
2.3.3. Типичные опции configure
Скрипт configure
обеспечивает широкие возможности
управления конфигурацией
дистрибутива MySQL. Обычно такое
управление осуществляется путем
использования опций в командной
строке configure . На работу
configure можно также
воздействовать при помощи
соответствующих переменных
окружения (see
Приложение F, Переменные окружения). Чтобы
получить список поддерживаемых
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
эти опции можно изменить с
помощью файлов опций (see
Раздел 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 (see
Раздел 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 путем
использования опций предыдущей
таблицы и добавления в командной
строке следующих опций:
--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/, компилируются с
максимальной оптимизацией и
должны быть идеальными для
большинства пользователей (see
Раздел 2.2.7, «Бинарные коды MySQL, скомпилированные в
MySQL AB»). Существуют
некоторые настройки,
позволяющие сделать бинарный
код даже еще быстрее, но их могут
выполнять только опытные
пользователи (see
Раздел 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
(see Раздел 4.6.1, «Набор символов, применяющийся для
записи данных и сортировки»). Если
требуется преобразовывать
символы между сервером и
клиентом, следует рассмотреть
команду SET CHARACTER SET (see
Раздел 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
Задание этой опции вызывает
подключение надежного
распределителя памяти, который
может найти некоторые ошибки и
обеспечить вывод информации о
том, что происходит (see
Раздел E.1, «Отладка сервера MySQL»).
Если клиентские программы
используют потоки, то необходимо
также скомпилировать
поддерживающую потоки версию
клиентской библиотеки MySQL с
опцией конфигурации
--enable-thread-safe-client . При
указании этой опции будет
создана библиотека
libmysqlclient_r , с которой
следует линковать потоковые
приложения (see
Раздел 8.4.8, «Как создать клиентскую программу с
потоками»).
Опции, относящиеся к конкретным
системам, можно найти в разделах
данного руководства, в которых
описываются особенности
различных операционных систем
(see Раздел 2.6, «Заметки по операционным системам»).
2.3.4. Установка из экспериментального
набора исходных кодов
Предупреждение:
этот раздел необходимо читать
только в том случае, если вы хотите
помочь нам в тестировании нового
кода. Пользователи, которые просто
хотят установить MySQL и запустить
его на своей системе, должны
использовать стандартную версию
дистрибутива (либо исходный код,
либо бинарный дистрибутив).
Чтобы получить самый последний из
разработанных наборов исходных
кодов, используйте следующие
инструкции:
Загрузите программу
BitKeeper с
http://www.bitmover.com/cgi-bin/download.cgi.
Для доступа к нашему хранилищу
вам понадобится версия
Bitkeeper 3.0 или более
новая.
Выполните инструкции по
установке этой программы.
После установки BitKeeper
сначала перейдите в каталог, из
которого собираетесь работать,
затем используйте одну из
приведенных ниже команд, для
получения желаемой копии ветви
MySQL.
Чтобы клонировать ветку 3.23:
shell> bk clone bk://mysql.bkbits.net/mysql-3.23 mysql-3.23
Чтобы клонировать ветку 4.0:
shell> bk clone bk://mysql.bkbits.net/mysql-4.0 mysql-4.0
Чтобы клонировать ветку 4.1:
shell> bk clone bk://mysql.bkbits.net/mysql-4.1 mysql-4.1
В предыдущих примерах набор
исходных кодов будет установлен
в подкаталогах
mysql-3-23/ ,
mysql-4.0/ или
mysql-4.1/ вашего
текущего каталога.
Если вы находитесь за
брендмауером, и можете только
делать HTTP-запросы, вы можете
также использовать BitKeeper по HTTP.
Если вы используете
прокси-сервер, просто установите
переменную окружения
http_proxy :
shell> export http_proxy="http://your.proxy.server:8080/"
И теперь просто замените
bk:// на http://
когда будете делать
клонирование. Например:
shell> bk clone http://mysql.bkbits.net/mysql-4.1 mysql-4.1
Первоначальная загрузка набора
исходных кодов может
потребовать времени в
зависимости от скорости вашего
соединения; будьте терпеливы.
Чтобы запустить следующий набор
команд, вам понадобятся
программы GNU make ,
autoconf 2.53 (или новее),
automake 1.5 , libtool
1.4 и m4 . Программа
automake 1.7 (или новее) еще
не работает.
Если вы хотите настроить MySQL 4.1,
вам также потребуется bison
1.75 . Более старые версии
bison могут давать такую
ошибку: sql_yacc.yy:#####: fatal error:
maximum table size (32767) exceeded . На
самом деле максимальный размер
таблиц не превышается, как
утверждает это сообщение, но
просто-напросто такое сообщение
есть следствие ошибки в более
ранних версиях bison .
Типичные команды к выполнению в
оболочке:
cd mysql-4.0
bk -r get -Sq
aclocal; autoheader; autoconf; automake
(cd innobase ; aclocal; autoheader; autoconf; automake) # для InnoDB
(cd bdb/dist ; sh s_all ) # для Berkeley DB
./configure # Ваши любимые опции здесь
make
Если вы получаете некие странные
сообщения на этом этапе -
удостоверьтесь, что у вас
действительно стоит
libtool !
Собрание наших стандартных
конфигурационных скриптов
находится в подкаталоге
BUILD/ . Если вы
предпочитаете наиболее легкий
путь, можно использовать скрипт
BUILD/compile-pentium-debug . При
компилировании с использованием
другой архитектуры
модифицируйте этот скрипт путем
удаления флагов, относящихся к
Pentium.
После выполнения компиляции
запустите make install .
Следует проявлять осторожность
при работе на машине,
находящейся в эксплуатации;
данная команда может выполнить
установку поверх вашей
существующей установленной
версии. Если у вас уже
установлена иная версия MySQL, мы
рекомендуем запускать
./configure со значениями
для опций prefix ,
with-tcp-port и
unix-socket-path , отличными от
тех, что были использованы для
сервера, находящегося в
эксплуатации.
Усиленно нагружая свою новую
инсталляцию, попытайтесь
добиться отказа новых
возможностей. Начинайте с
запуска make test (see
Раздел 9.1.2, «Пакет тестирования MySQL»).
Если вам удастся дойти до этапа
make и дистрибутив не
будет компилироваться, просьба
сообщить нам об этом по адресу
<bugs@lists.mysql.com> . Просьба
информировать нас и в том случае,
если вы установили последнюю
версию требуемых
инструментальных средств GNU и
они терпят крах при попытке
обработать наш конфигурационный
файл. Однако если при выполнении
aclocal вы получите
ошибку command not found или
возникнет аналогичная проблема,
об этом сообщать не надо. В таком
случае следует убедиться, что у
вас установлены все необходимые
инструментальные программы и
что ваша переменная PATH
указана правильно, чтобы
оболочка могла найти их.
Для того чтобы получить набор
исходных кодов после начальной
операции bk clone ,
необходимо периодически
запускать bk pull для
получения обновлений.
Вы можете изучить историю
изменений дерева исходных кодов,
чтобы увидеть все отличия в них -
для этого следует использовать
bk sccstool . При
обнаружении каких-либо отличий,
которые покажутся вам странными,
или кода, по которому возникают
вопросы, не раздумывайте -
посылайте письмо на
<internals@lists.mysql.com> . Кроме
того, если вы считаете, что у вас
есть лучшие идеи по разработке,
отправьте по тому же адресу
сообщение со своим патчем. bk
diffs создает патч после
внесения изменений в исходный
код. Если у вас нет времени
написать код, реализующий вашу
идею, просто пришлите ее
описание.
BitKeeper имеет хорошую
вспомогательную программу,
которая доступна посредством
bk helptool .
Внимание: любой commit (bk
ci или bk citool )
инициирует постинг сообщения с
изменениями в наш внутренний
список рассылки (internals). В общем
случае, вам не нужно
использовать commit (поскольку
публично-доступное дерево не
допустит bk push ), но
скорее, метод bk diffs ,
описанный ранее.
Вы также можете просматривать
изменения, комментарии и исходный
код в онлайн, например, по адресу
http://mysql.bkbits.net:8080/mysql-4.1
для MySQL 4.1.
Руководство находится в отдельном
дереве, которое можно клонировать
так:
shell> bk clone bk://mysql.bkbits.net/mysqldoc mysqldoc
2.3.5. Проблемы с компиляцией?
На Solaris или Linux с использованием
компилятора gcc все
программы MySQL у нас компилируются
чисто и без каких-либо
предупреждений. В других системах
могут возникать предупреждения
из-за различий включаемых
системных файлов (по поводу
предупреждений, которые могут
возникать при использовании
потоков MIT-pthreads ,
обращайтесь к разделу see
Раздел 2.3.6, «Замечания по потокам MIT-pthreads»). Относительно
других проблем сверьтесь с
приведенным ниже списком.
Решение многих проблем
предполагает выполнение
переконфигурирования. В случаях,
когда переконфигурирование
действительно необходимо, следует
учитывать следующее:
Если configure запускается
после того, как эта команда уже
запускалась, то можно
использовать информацию,
которая была собрана во время
предыдущего вызова команды
(такая информация хранится в
config.cache ). При запуске
configure ищет данный файл
и, если он существует, читает его
содержимое, исходя из
предположения, что данная
информация все еще правильна.
При выполнении переконфигурации
это предположение является
некорректным.
Каждый раз при запуске
configure необходимо опять
запускать make для
перекомпилирования. Однако,
возможно, вначале вам
потребуется удалить старые
объектные файлы из предыдущих
компоновок, поскольку они были
скомпилированы с использованием
других опций конфигурации.
Чтобы не допустить
использования старой
конфигурационной информации или
объектных файлов, перед
перезапуском configure
запустите следующие команды:
shell> rm config.cache
shell> make clean
В качестве альтернативного
варианта можно использовать
команду make distclean .
В следующем списке представлены
некоторые проблемы
компилирования MySQL, которые, как
оказалось, возникают наиболее
часто:
Если при компиляции
sql_yacc.cc вы получаете
ошибки, подобные представленным
ниже, то, возможно, произошел
выход за пределы памяти или
пространства подкачки
(свопинга):
Internal compiler error: program cc1plus got fatal signal 11
или
Out of virtual memory
или
Virtual memory exhausted
Проблема заключается в том, что
для компиляции sql_yacc.cc
со встраиваемыми функциями
компилятору gcc
требуется значительное
количество памяти. Попробуйте
произвести запуск
configure с опцией
--with-low-memory :
shell> ./configure --with-low-memory
Данная опция вызывает
добавление -fno-inline к
компилируемой строке для
gcc и -O0 - при
использовании какого-либо
другого компилятора. Даже если у
вас столько памяти и
пространства для свопинга, что,
по вашему мнению, невозможно
выйти за их пределы, все же стоит
попытаться использовать опцию
with-low-memory . Эта проблема,
по нашим наблюдениям, возникала
даже на системах с аппаратными
реализациями, обладающими
широкими возможностями; обычно
она устраняется с помощью опции
--with-low-memory .
По умолчанию configure
выбирает c++ как имя компилятора и
GNU c++ линкуется с -lg++ .
При использовании gcc
этот режим работы может вызывать
такие проблемы в процессе
конфигурации, как:
configure: error: installation or configuration problem:
C++ compiler cannot create executables.
Во время компиляции могут также
возникать проблемы, относящиеся
к g++ , libg++ или
libstdc++ . Одна из причин
их возникновения заключается в
том, что, возможно, у вас нет
g++ или есть
g++ , но нет библиотеки
libg++ или
libstdc++ . Следует изучить
файл config.log - по нему
вы должны точно определить
причину, по которой не работал
компилятор c++ ! Чтобы обойти эти
проблемы, можно в качестве
компилятора C++ использовать gcc.
Попробуйте установить
переменную окружения
CXX в gcc -O3 .
Например:
shell> CXX="gcc -O3" ./configure
Эта команда работает, поскольку
gcc компилирует исходные коды C++
так же хорошо, как и g++ ,
но по умолчанию не линкует
libg++ или
libstdc++ . Есть, конечно, и
другая возможность устранения
этих проблем, которая
заключается в установке
g++ , libg++ и
libstdc++ . Однако мы не
рекомендовали бы использовать
libg++ или
libstdc++ с MySQL, поскольку
это только увеличит размер
бинарного кода mysqld без
предоставления каких-либо
преимуществ. Некоторые версии
этих библиотек в прошлом также
вызывали непонятные проблемы у
пользователей MySQL.
Если процесс компиляции
завершается аварийно и
выводятся такие ошибки, как
приведены ниже, то вам следует
сделать апгрейд своей версии
make до GNU make :
making all in mit-pthreads
make: Fatal error in reader: Makefile, line 18:
Badly formed macro assignment
или
make: file `Makefile' line 18: Must be a separator (:
или
pthread.h: No such file or directory
Операционные системы Solaris и FreeBSD,
как известно, имеют ненадежные
программы make .
Известно также, что версия GNU
make 3.75 работает.
Если вы хотите определить флаги
для использования их
компиляторами C или C++, следует
добавить флаги к переменным
окружения CFLAGS и
CXXFLAGS . Точно так же
можно также указать имена
компиляторов, используя
CC и CXX .
Например:
shell> CC=gcc
shell> CFLAGS=-O3
shell> CXX=gcc
shell> CXXFLAGS=-O3
shell> export CC CFLAGS CXX CXXFLAGS
В разделе Раздел 2.2.7, «Бинарные коды MySQL, скомпилированные в
MySQL AB»
приведен список полезных для
различных систем определений
флагов.
При получении сообщения об
ошибке, подобного приведенному
ниже, необходимо
модернизировать ваш компилятор
gcc :
client/libmysql.c:273: parse error before `__attribute__'
Компилятор gcc 2.8.1
известен как работающий, но мы
рекомендуем вместо него
использовать gcc 2.95.2
или egcs 1.0.3a.
Если при компиляции
mysqld вы получаете
ошибки, подобные приведенным
ниже, то это означает, что
команда configure
некорректно определила тип
последнего аргумента в функциях
accept() ,
getsockname() или
getpeername() :
cxx: Error: mysqld.cc, line 645: In this statement, the referenced
type of the pointer value "&length" is "unsigned long", which
is not compatible with "int".
new_sock = accept(sock, (struct sockaddr *)&cAddr, &length);
Чтобы устранить эту ошибку,
отредактируйте файл
config.h (который
генерируется configure ).
Найдите в нем следующие строки:
/* Define as the base type of the last arg to accept */
#define SOCKET_SIZE_TYPE XXX
и измените XXX на
size_t или int - в
зависимости от своей
операционной системы (учтите,
что эти действия необходимо
будет повторять каждый раз при
запуске configure ,
поскольку configure восстанавливает
файл config.h ).
Файл sql_yacc.cc
генерируется из
sql_yacc.yy . Обычно в
процессе сборки не требуется
создавать sql_yacc.cc ,
поскольку MySQL поставляется с уже
сгенерированной копией. Однако
если действительно необходимо
создать этот файл заново, то
можно столкнуться со следующей
ошибкой:
"sql_yacc.yy", line xxx fatal: default action causes potential...
Это признак того, что ваша версия
yacc является неполной.
Возможно, следует установить
bison (GNU-версия yacc) и
использовать вместо
yacc .
При необходимости отладки
mysqld или клиента MySQL
запустите configure с
опцией --with-debug , затем
перекомпилируйте и слинкуйте
эти программы с новой клиентской
библиотекой (see
Раздел E.2, «Отладка клиента MySQL»).
2.3.6. Замечания по потокам MIT-pthreads
В этом разделе описываются
некоторые аспекты использования
потоков MIT-pthreads.
Следует иметь в виду, что под Linux
использовать потоки MIT-pthreads нельзя,
для этого необходимо установить
LinuxThreads! See Раздел 2.6.1, «Примечания к Linux (Все версии Linux)».
Если ваша система сама по себе не
обеспечивает поддержку потоков, то
необходимо скомпоновать MySQL,
используя пакет поддержки MIT-pthreads.
К таким системам относятся старые
системы FreeBSD, SunOS 4.x, Solaris 2.4 и более
ранние, а также некоторые другие (see
Раздел 2.2.3, «Операционные системы, поддерживаемые
MySQL»).
Заметьте, с версии MySQL 4.0.2 потоки MIT
более не присутствуют в поставке
исходных текстов. Если вам
действительно нужен этот пакет, вы
можете его забрать с
http://www.mysql.com/Downloads/Contrib/pthreads-1_60_beta6-mysql.tar.gz
После загрузки, распакуйте этот
архив в каталог исходных текстов
MySQL. Создастся новый каталог
mit-pthreads .
Для большинства систем можно
обеспечить использование
потоков MIT-pthreads при помощи
запуска configure с опцией
--with-mit-threads :
shell> ./configure --with-mit-threads
При использовании потоков
MIT-pthreads не поддерживается
возможность сборки MySQL в
каталоге, не содержащем исходный
код, поскольку мы хотим
минимизировать наши изменения в
данном коде.
Проверки, определяющие,
используются ли потоки MIT-pthreads,
производятся только во время
этапа конфигурационного
процесса, относящегося к
серверному коду. Если
дистрибутив сконфигурирован с
использованием
--without-server для сборки
только клиентского кода, то
клиенты не будут знать,
применяются ли потоки MIT-pthreads, и
будут использовать подключения
через сокеты Unix по умолчанию.
Поскольку сокеты Unix не работают
с потоками MIT-pthreads на некоторых
платформах, то при запуске
клиентских программ следует
использовать -h или
--host .
При компиляции MySQL с
использованием потоков MIT-pthreads
блокирование системы отключено
по умолчанию из соображений
производительности. Можно
предписать серверу использовать
системную блокировку с помощью
опции --use-external-locking . Это
только необходимо если вы
собираетесь использовать два
MySQL-сервера на одних и тех же
файлах данных (не
рекомендуется!).
Иногда потоковой команде
bind() не удается
подсоединить сокет без
какого-либо сообщения об ошибке
(по крайней мере, под Solaris). В
результате все подключения к
серверу обрываются. Например:
shell> mysqladmin version
mysqladmin: connect to server at '' failed;
error: 'Can't connect to mysql server on localhost (146)'
Для решения этой проблемы
следует завершить выполнение
сервера mysqld и
перезапустить его. У нас это
происходило только в тех
случаях, когда мы прерывали
работу сервера и сразу же снова
его запускали.
При использовании потоков
MIT-pthreads системный вызов функции
sleep() не прерывается с
помощью SIGINT
(break ). Это заметно
только в том случае, если
запускать mysqladmin --sleep .
Следует ждать окончания работы
sleep() , прежде чем
прерывание будет обслужено и
процесс завершит работу.
При линковании можно получить
предупреждающие сообщения,
подобные приведенным ниже (по
крайней мере под Solaris); их можно
игнорировать:
ld: warning: symbol `_iob' has differing sizes:
(file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
file /usr/lib/libc.so value=0x140);
/my/local/pthreads/lib/libpthread.a(findfp.o) definition taken
ld: warning: symbol `__iob' has differing sizes:
(file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
file /usr/lib/libc.so value=0x140);
/my/local/pthreads/lib/libpthread.a(findfp.o) definition taken
Некоторые другие предупреждения
также можно игнорировать:
implicit declaration of function `int strtoll(...)'
implicit declaration of function `int strtoul(...)'
Нам не удалось добиться
совместной работы
readline с потоками MIT-pthreads
(это не является необходимым, но
для кого-то может представлять
интерес).
2.3.7. Дистрибутив исходного кода для Windows
Вам потребуются следующие
средства:
Компилятор VC++ 6.0
(усовершенствованный с помощью
служебных пакетов 4 SP или 5 SP и
пакета предварительной
обработки) Пакет
предварительной обработки
необходим для макроассемблера.
Более подробная информация
находится на:
http://msdn.microsoft.com/vstudio/sp/vs6sp5/faq.asp.
Дистрибутив исходного кода MySQL
для Windows, который может быть
загружен с http://www.mysql.com/downloads/.
Сборка MySQL
Создайте рабочий каталог (т.е.
workdir ).
Распакуйте дистрибутив
исходного кода в вышеупомянутом
каталоге.
Запустите компилятор VC++ 6.0.
В меню File выберите
Open Workspace .
Откройте рабочую область
mysql.dsw , находящуюся в
рабочем каталоге.
В меню Build выберите
подменю Set Active Configuration .
Выберите в появившемся окне
mysqld - Win32 Debug
и нажмите OK .
Нажмите клавишу F7 ,
чтобы начать процесс построения
отладочных версий сервера,
библиотек и некоторых
клиентских приложений.
По окончании компиляции
скопируйте библиотеки и
исполняемые файлы в отдельный
каталог.
Тем же способом скомпилируйте
рабочие версии (релизы), которые
вам нужны.
Создайте каталог для всего, что
нужно MySQL, т.е. c:\mysql
Из каталога workdir
скопируйте в каталог
c:\mysql следующие
подкаталоги:
Создайте каталог
c:\mysql\bin и скопируйте в
него все скомпилированные перед
этим серверы и клиенты.
При желании можете также создать
каталог lib и
скопировать в него
скомпилированные ранее
библиотеки.
Произведите очистку, используя
Visual Studio.
Установите и запустите сервер
тем же способом, что и для
бинарного дистрибутива для Windows
(see Раздел 2.1.2.2, «Подготовка конфигурации MySQL для Windows»).
2.4. Послеустановочные настройка и
тестирование
После установки MySQL (из бинарного
дистрибутива или исходного кода)
необходимо проинициализировать
таблицы привилегий, запустить
сервер и убедиться, что сервер
работает нормально. Можно также
организовать автоматический запуск
и остановку сервера, когда
операционная система
соответственно начинает и
прекращает работу.
Обычно при установке из исходного
кода для установки таблиц
привилегий и запуска сервера нужно
выполнить следующие команды:
shell> ./scripts/mysql_install_db
shell> cd mysql_installation_directory
shell> ./bin/safe_mysqld --user=mysql &
Для бинарного дистрибутива (но не
для пакетов RPM или pkg) сделайте так:
shell> cd mysql_installation_directory
shell> ./scripts/mysql_install_db
shell> ./bin/safe_mysqld --user=mysql &
или
shell> ./bin/mysqld_safe --user=mysql &
Если вы используете MySQL 4.x.
Эти операции создают базу данных
mysql , которая будет
поддерживать все привилегии
доступа к базе данных, базу данных
test , которую можно
использовать для тестирования MySQL, а
также записи привилегий для
пользователя, который запускает
mysql_install_db и для
пользователя root (без
каких-либо паролей). При этом также
запускается сервер mysqld .
mysql_install_db не
перезаписывает старые таблицы
привилегий, так что ее запуск будет
безопасным в любом случае. Если вам
не нужна база данных test ,
ее можно удалить с помощью
mysqladmin -u root drop test .
Тестирование проще всего выполнить
из каталога наивысшего уровня
дистрибутива MySQL. Для бинарного
дистрибутива таковым является ваш
каталог инсталляции (обычно
что-нибудь вроде
/usr/local/mysql ). Для
дистрибутива в виде исходного кода
это - главный каталог вашего набора
исходных кодов MySQL.
В командах, представленных в
настоящем разделе и последующих
подразделах, BINDIR
представляет собой путь к тому
местоположению, где
устанавливаются программы вроде
mysqladmin и safe_mysqld .
Для бинарного дистрибутива это
каталог bin внутри
дистрибутива. Для дистрибутива в
виде исходного кода BINDIR
может представлять собой
/usr/local/bin , если при
запуске configure не указан
иной, чем /usr/local
инсталляционный каталог.
EXECDIR - место, где
устанавливается сервер
mysqld . Для бинарного
дистрибутива это то же самое, что и
BINDIR . Для дистрибутива в
виде исходного кода EXECDIR
может представлять собой
/usr/local/libexec .
Подробное описание тестирования:
Если необходимо, запустите сервер
mysqld и установите
исходные таблицы привилегий MySQL,
содержащие те привилегии, которые
определяют, каким способом
пользователям разрешено
подключаться к серверу. Обычно
это делается с помощью скрипта
mysql_install_db :
shell> scripts/mysql_install_db
Как правило, mysql_install_db
требует запуска только первый раз
при установке MySQL. Таким образом,
если производится модернизация
существующей установки, то данный
этап можно пропустить (однако
скрипт mysql_install_db
совершенно безопасен для
использования и не обновляет
никаких уже существующих таблицы;
поэтому если у вас нет
уверенности в том, как поступать,
то всегда можно запустить
mysql_install_db ). Скрипт
mysql_install_db создает шесть
таблиц (user , db ,
host , tables_priv ,
columns_priv , and func )
в базе данных mysql .
Описание исходных привилегий
дается в разделе See
Раздел 4.3.4, «Задание изначальных привилегий MySQL». Если в двух
словах, то эти привилегии
позволяют пользователю root MySQL
делать все, что угодно, и любому
пользователю позволяют создавать
или использовать базы данных с
именем test или
начинающимся с test_ . Если
таблицы привилегий не
установлены, то в системном
журнале при запуске сервера
появится следующая ошибка:
mysqld: Can't find file: 'host.frm'
Такая ошибка может появиться и в
случае бинарного дистрибутива
MySQL, если вы не начали работу MySQL с
точного выполнения команды
./bin/safe_mysqld ! See
Раздел 4.7.2, «safe_mysqld , оболочка
mysqld ». Возможно, вам
потребуется запускать
mysql_install_db как
root . Однако при желании
вы можете запускать сервер MySQL как
непривилегированный
(не-root ) пользователь,
при условии, что этот
пользователь может только читать
файлы из каталога базы данных и
записывать в него файлы.
Инструкции по запуску MySQL в
качестве непривилегированного
пользователя даются в разделе See
Раздел A.3.2, «Запуск MySQL от обычного пользователя». Если
возникнут проблемы с
mysql_install_db , обращайтесь к
разделу See Раздел 2.4.1, «Проблемы при запуске
mysql_install_db ».
Дистрибутив MySQL обеспечивает
несколько вариантов запуска
скрипта mysql_install_db :
Чтобы изменить исходные
привилегии, которые
устанавливаются в таблицах
привилегий, вам, возможно,
потребуется отредактировать
mysql_install_db перед
запуском. Это полезно, если
нужно установить MySQL на
нескольких машинах с одними и
теми же привилегиями. В таком
случае вам, возможно,
потребуется только добавить
несколько дополнительных
команд INSERT к таблицам
mysql.user и
mysql.db !
Если необходимо изменить
записи в таблицах привилегий
после их установки, то можно
запустить mysql_install_db ,
затем использовать mysql -u root
mysql для доступа к таблицам
привилегий как пользователь MySQL
с привилегиями root и
применять команды SQL для
модификации таблиц привилегий
напрямую.
Можно также создать таблицы
привилегий полностью заново
после того, как они были уже
созданы. Это можно сделать
после установки таблиц, а затем
воссоздать после
редактирования
mysql_install_db .
Более подробная информация о
приведенных выше альтернативах
находится в разделе See
Раздел 4.3.4, «Задание изначальных привилегий MySQL».
Запустите сервер MySQL как показано
ниже:
shell> cd mysql_installation_directory
shell> bin/safe_mysqld &
Если возникнут проблемы с
запуском сервера, See
Раздел 2.4.2, «Проблемы при запуске сервера MySQL».
Используйте mysqladmin для
проверки, что сервер работает.
Простую проверку того, что сервер
функционирует и отвечает на
подключения, обеспечивают
следующие команды:
shell> BINDIR/mysqladmin version
shell> BINDIR/mysqladmin variables
Вывод из mysqladmin version
будет иметь небольшие различия в
зависимости от используемой
платформы и версии MySQL, но должен
быть похож на приведенный ниже:
shell> BINDIR/mysqladmin version
mysqladmin Ver 8.14 Distrib 3.23.32, for linux on i586
Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license.
Server version 3.23.32-debug
Protocol version 10
Connection Localhost via Unix socket
TCP port 3306
UNIX socket /tmp/mysql.sock
Uptime: 16 sec
Threads: 1 Questions: 9 Slow queries: 0
Opens: 7 Flush tables: 2 Open tables: 0
Queries per second avg: 0.000
Memory in use: 132K Max memory used: 16773K
Чтобы получить представление о
том, что еще можно делать с
помощью BINDIR/mysqladmin ,
запустите эту команду с опцией
--help .
Убедитесь, что можете остановить
сервер:
shell> BINDIR/mysqladmin -u root shutdown
Убедитесь, что можете
перезапустить сервер. Делайте
это, используя safe_mysqld
или путем прямого вызова
mysqld . Например:
shell> BINDIR/safe_mysqld --log &
Если safe_mysqld терпит
неудачу, попытайтесь запустить
команду из каталога установки MySQL
(если вы уже не там). Если команда
по-прежнему не работает, см.
раздел See Раздел 2.4.2, «Проблемы при запуске сервера MySQL».
Запустите несколько простых
тестов, чтобы убедиться, что
сервер работает. Вывод должен
быть похож на приведенный ниже:
shell> BINDIR/mysqlshow
+-----------+
| Databases |
+-----------+
| mysql |
+-----------+
shell> BINDIR/mysqlshow mysql
Database: mysql
+--------------+
| Tables |
+--------------+
| columns_priv |
| db |
| func |
| host |
| tables_priv |
| user |
+--------------+
shell> BINDIR/mysql -e "SELECT host,db,user FROM db" mysql
+------+--------+------+
| host | db | user |
+------+--------+------+
| % | test | |
| % | test_% | |
+------+--------+------+
В подкаталоге sql-bench
каталога установки MySQL находится
набор тестов производительности,
который можно использовать для
сравнения работы MySQL на различных
платформах. Каталог
sql-bench/Results содержит
результаты большого количества
запусков для различных баз данных
и платформ. Чтобы запустить все
тесты, выполните следующие
команды:
shell> cd sql-bench
shell> run-all-tests
Если у вас отсутствует каталог
sql-bench , то, вероятно, вы
работаете с пакетом RPM для
бинарного дистрибутива (в пакеты
RPM с дистрибутивами исходного
кода включается каталог тестов
производительности). В этом
случае прежде чем использовать
набор тестов производительности,
необходимо его установить.
Начиная с версии MySQL 3.22,
существуют RPM-файлы тестов
производительности,
mysql-bench-VERSION-i386.rpm ,
которые содержат код тестов
производительности и данные. Имея
дистрибутив исходного кода, можно
также запустить эти тесты в
подкаталоге tests .
Например, чтобы запустить
auto_increment.tst , сделайте
следующее:
shell> BINDIR/mysql -vvf test < ./tests/auto_increment.tst
Результаты будут выводиться в
файл ./tests/auto_increment.res .
2.4.1. Проблемы при запуске
mysql_install_db
Скрипт mysql_install_db
предназначен только для создания
новых таблиц привилегий MySQL. Он не
влияет ни на какие другие данные! А
если таблицы привилегий MySQL уже
установлены, этот скрипт ничего не
будет делать!
Для того чтобы создать таблицы
привилегий заново, необходимо
остановить сервер mysqld ,
если он работает, и затем выполнить
что-нибудь вроде:
mv mysql-data-directory/mysql mysql-data-directory/mysql-old
mysql_install_db
В этом разделе перечислены
проблемы, с которыми можно
столкнуться при запуске
mysql_install_db :
mysql_install_db
не устанавливает таблицы
привилегий
Может оказаться, что
mysql_install_db не в
состоянии установить таблицы
привилегий и заканчивает свою
работу после вывода следующих
сообщений:
starting mysqld daemon with databases from XXXXXX
mysql daemon ended
В таком случае необходимо очень
тщательно изучить системный
журнал! Этот журнал должен
находиться в каталоге
XXXXXX , указанном в
данном сообщении об ошибке. В нем
содержится информация о том,
почему не запустился
mysqld . Если вам не
удалось разобраться в том, что
произошло, при посылке отчета об
ошибке включите в него данный
журнал, используя
mysqlbug ! См.раздел See
Раздел 1.8.1.3, «Как отправлять отчеты об ошибках или
проблемах».
Уже существует
работающий демон
mysqld
В таком случае вам вообще не
следует запускать
mysql_install_db . Скрипт
mysql_install_db должен
запускаться только однажды при
установке MySQL первый раз.
При работающем
демоне mysqld установка
второго демона не работает
Это может случиться, когда уже
существует установленный сервер
MySQL, но вы хотите произвести
новую инсталляцию в другом месте
(например, для тестирования или,
возможно, вам просто требуется
запустить две инсталляции в одно
и то же время). Вообще говоря,
такая проблема, которая
возникает при попытке запустить
второй сервер, заключается в том,
что второй сервер пытается
использовать тот же сокет и порт,
что и старый. В этом случае вы
можете получить следующее
сообщение об ошибке: Can't start
server: Bind on TCP/IP port: Address already in
use или Can't start server: Bind on
unix socket... . See
Раздел 4.1.3, «Установка нескольких серверов на один
компьютер».
Нет доступа для
записи в /tmp
Если у вас нет доступа для
создания файла сокета в принятом
по умолчанию месте (в
/tmp ) или разрешения
создавать временные файлы в
каталоге /tmp , то вы
получите ошибку при запуске
mysql_install_db или при
запуске или использовании
mysqld . Необходимо
указать другой каталог для
сокета и временных файлов
следующим образом:
shell> TMPDIR=/some_tmp_dir/
shell> MYSQL_UNIX_PORT=/some_tmp_dir/mysqld.sock
shell> export TMPDIR MYSQL_UNIX_PORT
See Раздел A.4.5, «Как защитить или изменить сокет-файл
MySQL /tmp/mysql.sock ». Путь
some_tmp_dir должен
указывать на некоторый каталог,
для которого у вас есть доступ
для записи. See
Приложение F, Переменные окружения. После
этого у вас должна появиться
возможность запустить
mysql_install_db и начать
работу сервера с помощью
следующих команд:
shell> scripts/mysql_install_db
shell> BINDIR/safe_mysqld &
Немедленный
аварийный отказ
mysqld
Если вы работаете на версии RedHat
5.0 с версией glibc более
старой, чем 2.0.7-5, следует
позаботиться о том, чтобы
установить все патчи для
glibc ! В архивах рассылки
MySQL имеется большое количество
писем об этом. Ссылки на архивы
писем доступны в онлайновом
режиме на
http://lists.mysql.com/.
Обращайтесь также к разделу See
Раздел 2.6.1, «Примечания к Linux (Все версии Linux)». Можно также
запустить mysqld вручную,
используя опцию
--skip-grant-tables , и
самостоятельно добавить
информацию о привилегиях, при
помощи mysql :
shell> BINDIR/safe_mysqld --skip-grant-tables &
shell> BINDIR/mysql -u root mysql
Из mysql в ручном режиме
выполните команды SQL в
mysql_install_db .
Удостоверьтесь, что после этого
вы запустили mysqladmin
flush-privileges или mysqladmin
reload , чтобы сервер
перегрузил таблицы привилегий.
2.4.2. Проблемы при запуске сервера MySQL
Если вы собираетесь использовать
таблицы, поддерживающие
транзакции (InnoDB, BDB), следует прежде
всего создать файл my.cnf
и установить опции запуска для тех
типов таблиц, с которыми
планируется работать. See
Глава 7, Типы таблиц MySQL.
В общем случае сервер
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.err
shell> 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 ».
2.4.3. Автоматический запуск и остановка MySQL
Скрипты mysql.server и
safe_mysqld могут применяться
для автоматического запуска
сервера во время загрузки
операционной системы. Скрипт
mysql.server можно также
использовать для остановки
сервера.
Чтобы применять скрипт
mysql.server для запуска или
остановки сервера, его следует
вызывать с аргументами
start или stop
соответственно:
shell> mysql.server start
shell> mysql.server stop
mysql.server можно найти в
подкаталоге share/mysql
инсталляционного каталога MySQL или
в каталоге support-files
набора исходных кодов MySQL.
Перед тем как скрипт
mysql.server запустит сервер,
он изменяет данный каталог на
инсталляционный каталог MySQL, затем
вызывает safe_mysqld .
Возможно, понадобится
отредактировать скрипт
mysql.server , если бинарный
дистрибутив установлен вами не в
стандартном месте. Модифицируйте
его, указав cd в
соответствующий каталог перед тем,
как он запустит safe_mysqld .
Если вы хотите запустить сервер от
определенного пользователя, то
добавьте соответствующую строку
user к файлу
/etc/my.cnf как показано
далее в этом разделе.
mysql.server stop останавливает
сервер путем посылки ему сигнала.
Можно остановить сервер вручную -
при помощи команды mysqladmin
shutdown .
Вам следует добавить эти команды
запуска и остановки в
соответствующее место в файлах
/etc/rc* , если вы хотите
автоматически запускать MySQL на
вашем сервере.
На современных поставках Linux,
достаточно скопировать файл
mysql.server в каталог
/etc/init.d (или
/etc/rc.d/init.d на более
старших системах Red Hat). После этого,
выполните такую команду, чтобы
включить автоматический запуск MySQL
при загрузке системы:
shell> chkconfig --add mysql.server
В качестве альтернативы, в
некоторых ОС также используются
/etc/rc.local или
/etc/init.d/boot.local для
запуска дополнительных сервисов
при загрузке. Для того, чтобы MySQL
стартовал с использованием этого
метода, вы можете добавить нечто
вроде этого к указанным файлам:
/bin/sh -c 'cd /usr/local/mysql ; ./bin/safe_mysqld --user=mysql &'
Можно также добавить опции для
скрипта mysql.server в
глобальный файл /etc/my.cnf .
Типовой файл /etc/my.cnf
может выглядеть следующим образом:
[mysqld]
datadir=/usr/local/mysql/var
socket=/var/tmp/mysql.sock
port=3306
user=mysql
[mysql_server]
basedir=/usr/local/mysql
Скрипт mysql.server понимает
следующие опции: datadir ,
basedir и pid-file .
В таблице представлены группы
опций, которые каждый из
перечисленных запускающих
скриптов читает из файлов опций:
See Раздел 4.1.2, «Файлы параметров my.cnf ».
2.5. Апгрейд/даунгрейд MySQL
Файлы MySQL, содержащие структуру и
данные, всегда можно перемещать
между различными версиями одной и
той же архитектуры, если
используется одна и та же базовая
версия MySQL. В настоящее время
базовой является версия с номером 3.
При изменении кодировки во время
работы MySQL (при этом также может
измениться порядок сортировки)
необходимо запустить myisamchk -r -q
--set-character-set=charset на всех
таблицах. В противном случае
индексы могут сортироваться
неправильно.
В случае недоверия к новым версиям
всегда можно переименовать старую
версию mysqld , изменив ее имя
на что-нибудь вроде
mysqld-old-version-number . Если после
этого mysqld новой версии
начнет вести себя не так, как
ожидалось, то можно просто
прекратить работу новой версии и
перезапустить старую!
И, разумеется, при модернизации
следует также сделать резервную
копию старых баз данных.
После модернизации у вас могут
возникнуть проблемы с
перекомпилированными клиентскими
программами, такими как Commands out
of sync , или произойти
неожиданная смерть приложения
(coredump). Причина может быть в том, что
при компиляции программ были
использованы старые заголовочные
или библиотечные файлы. В этом
случае следует проверить даты
создания вашего файла
mysql.h и библиотеки
libmysqlclient.a , чтобы
убедиться, что они из нового
дистрибутива MySQL. Если это не так, то
программы нужно перекомпилировать!
Если возникнут проблемы с запуском
нового сервера mysqld или
трудности с подключением без
пароля, то нужно убедиться, что вы не
используете старый файл
my.cnf из старой установки!
Это можно проверить с помощью
program-name --print-defaults . Если эта
программа вместо имени программы
выводит что-нибудь иное, то ваш файл
my.cnf является активным и
оказывает влияние на ход событий!
Каждый раз при установке нового
релиза MySQL есть смысл создавать
наново и переустанавливать
дистрибутив Msql-Mysql-modules ,
особенно если вы замечаете симптомы
того, что ваши скрипты DBI
умирают после модернизации MySQL.
2.5.1. Модернизация с версии 4.0
В общем случае, чтобы выполнить
апгрейд до версии 4.1 с более ранней:
Далее идет более подробный список
вещей, на которые следует обратить
внимание при апгрейде на 4.1:
Функции, что возвращают DATE, DATETIME
или TIME теперь фиксируются при
отдаче клиенту.
mysql> SELECT cast("2001-1-1" as DATE)
-> '2001-01-01'
Все столбцы и таблицы теперь
имеют кодировку, которая
показывается в выводе SHOW
CREATE TABLE и mysqldump .
(MySQL 4.0.6 и выше могут читать новые
dump-файлы, но не прежние версии
MySQL).
Временная метка (timestamp) теперь
возвращается как строка вида
'YYYY-MM-DD HH:MM:DD' . Если вы
хотите получить ее как число -
вам следует добавить +0
к столбцу timestamp .
Различные длины временных меток
теперь не поддерживаются.
Если вы используете несколько
серверов на одном и том же
компьютере под управлением Windows,
вам следует использовать
различные опции
--shared_memory_base_name .
Обратите
внимание что формат
определения таблиц (.frm) поменялся в
4.1. MySQL 4.0.11 может читать новый файл
формата, но более старые версии не
могут. Если вам нужно перемещать
таблицы с 4.1 на более старшие
версии MySQL, вам следует
использовать mysqldump . See
Раздел 4.8.5, «mysqldump , Получение дампов
данных и структуры таблицы».
2.5.2. Модернизация с версии 3.23 до версии 4.0
В общем случае, вот что вам следует
сделать для апгрейда к версии 4.0 с
более старой:
Выполнить скрипт
mysql_fix_privilege_tables чтобы
добавить новые привилегии и
возможности в таблицы
привилегий MySQL.
Подредактировать скрипты
запуска MySQL или конфигурационные
файлы, чтобы не использовать
устаревшие опции, описанные
ниже.
Преобразовать ваши старые
ISAM-файлы в формат MyISAM следующей
командой: mysql_convert_table_format
база данных . Обратите
внимание, это нужно делать
только если все таблицы в базе
данных являются таблицами типа
ISAM или MyISAM. Если это не тот
случай, вам тогда следует
выполнить ALTER TABLE
имя_таблицы TYPE=MyISAM для всех
ISAM-таблиц.
Удостоверьтесь, что у вас не
используется никакие клиенты
MySQL, что используют динамические
библиотеки (например, Perl
Msql-Mysql-modules). Если у вас есть такие,
их следует перекомпилировать,
т.к. структуры в
libmysqlclient.so изменились.
MySQL 4.0 будет работать, даже если вы
не выполните эти шагы, но у вас не
будет возможности использовать
новые привилегии, которые
предоставляет MySQL 4.0, и у вас могут
быть проблемы при дальнейшем
апгрейде к 4.1 или более новым
серверам. Формат ISAM в MySQL 4.0 все еще
работает, но он уже морально
устарел и будет исключен из версии
MySQL 5.0.
Старые клиенты должны работать с
версией 4.0 без каких-либо проблем.
И даже если вы выполните эти шаги,
вы сможете произвести даунгрейд к
MySQL 3.23.52 или более новой, если у вас
возникнут проблемы с MySQL 4.0. В этом
случае вам потребуется выполнить
mysqldump на всех таблицах,
использующих полнотекстовые
индексы и восстановить dump на
версии 3.23. Причина заключается в
том, что MySQL 4.0 использует новый
формат полнотекстовых индексов.
Вот подробный список того, на что
следует обратить внимание при
апгрейде к 4.0:
В MySQL 4.0 появилось большое
количество новых привилегий в
таблице mysql.user . See
Раздел 4.3.1, «Синтаксис команд GRANT и
REVOKE ».
Чтобы заставить эти новые
привилегии работать, следует
запустить скрипт
mysql_fix_privilege_tables . До
выполнения данного скрипта у
всех пользователей будут
привилегии SHOW DATABASES ,
CREATE TEMPORARY TABLES и LOCK
TABLES . Значения для
привилегий SUPER и
EXECUTE берутся из
PROCESS , для REPLICATION
SLAVE и REPLICATION CLIENT -
из FILE .
Чтобы скрипты, создающие новых
пользователей, могли
использовать новые привилегии,
их нужно модифицировать. Если в
этих скриптах не используется
команда GRANT , то сейчас
самое время изменить их.
В версии 4.0.2 опция
--safe-show-database устарела и
не рекомендуется (и она больше
ничего не делает). See
Раздел 4.2.3, «Опции запуска mysqld ,
относящиеся к безопасности».
Если в версии 4.0.2 для новых
пользователей возникают ошибки
отказа в доступе, то следует
проверить, не требуются ли вам
некоторые новые привилегии,
которые не были нужны раньше. В
частности, для новых репликаций
понадобится REPLICATION SLAVE
(вместо FILE ).
Параметры запуска
myisam_max_extra_sort_file_size и
myisam_max_extra_sort_file_size
теперь указываются в байтах (до
4.0.3 указывались в мегабайтах).
Внешняя блокировка файлов MyISAM/ISAM
теперь выключена по умолчанию.
Можно включить ее обратно опцией
--external-locking . Для
большинства пользователей этого
никогда не потребуется делать.
Следующие переменные/опции были
переименованы:
Опции запуска record_buffer ,
sort_buffer и
warnings все еще работают
в MySQL 4.0, но считаются уже
морально устаревшими.
Следующие SQL-переменные
переименованы.
Старые имена в MySQL 4.0 работают, но
уже не рекомендованы к
использованию.
Вы должны использовать SET
GLOBAL SQL_SLAVE_SKIP_COUNTER=# вместо
SET SQL_SLAVE_SKIP_COUNTER=# .
Переименовали опцию запуска
mysqld --skip-locking в
--skip-external-locking и
--enable-locking в
--external-locking .
SHOW MASTER STATUS теперь
возвращает пустой результат
если двоичный журнал обновлений
не включен.
SHOW SLAVE STATUS возвращает
пустой результат если
подчиненный сервер не
инициализирован.
mysqld теперь обладает опцией
--temp-pool включенной по
умолчанию, т.к. это дает лучшую
производительность на некоторых
ОС (в основном, на Linux).
Столбцы DOUBLE и
FLOAT теперь учитывают
флаг UNSIGNED при хранении
(раньше UNSIGNED
игнорировался для этих
столбцов).
ORDER BY столбец DESC теперь
сортирует величины NULL
в первую очередь; в 3.23 это было не
всегда так. Внимание: в MySQL 4.0.11
восстановлено оригинальное
поведение.
SHOW INDEX имеет на 2
столбца больше (Null и
Index_type ), чем в версии 3.23.
CHECK , SIGNED ,
LOCALTIME и
LOCALTIMESTAMP теперь
являются зарезервированными
словами.
Результат работы всех
поразрядных операторов
| , & ,
<< , >> и
~ сейчас является
беззнаковым. Это может вызвать
проблемы при использовании их в
контексте, где желателен
результат со знаком. See
Раздел 6.3.5, «Функции приведения типов».
Замечание:
результат операции вычитания
между целыми величинами, одна из
которых имеет тип
UNSIGNED , будет
беззнаковым! Другими словами,
перед модернизацией до MySQL 4.0 вы
должны проверить свои
приложения для случаев, где
производится вычитание величины
из беззнакового объекта и
предполагается ответ с
отрицательным знаком, или
вычитание беззнаковой величины
из целочисленного столбца.
Данный режим можно
заблокировать, используя опцию
--sql-mode=NO_UNSIGNED_SUBTRACTION при
запуске mysqld . See
Раздел 6.3.5, «Функции приведения типов».
Для того чтобы использовать
MATCH ... AGAINST (... IN BOOLEAN MODE)
на таблицах, следует перестроить
их заново при помощи REPAIR TABLE
table_name USE_FRM .
LOCATE() и INSTR()
чувствительны к регистру, если
один из аргументов является
двоичной строкой. В противном
случае они не зависят от
регистра.
STRCMP() при выполнении
сравнений сейчас использует
текущий набор символов; это
означает, что операция сравнения
по умолчанию начиная с данной
версии является независимой от
регистра.
HEX(string) сейчас
возвращает символы строки,
преобразованные в
шестнадцатеричные. Если
необходимо преобразовать число
в шестнадцатеричное
представление, убедитесь, что
HEX() вызывается с
числовым аргументом.
В версии 3.23 в команде INSERT INTO
... SELECT параметр
IGNORE всегда был
разрешен. В версии 4.0.1 MySQL
остановится (и, возможно,
произойдет откат) в случае
ошибки, если IGNORE не
задан явно.
Скрипт safe_mysqld
переименован в mysqld_safe .
Некоторое время мы будем
включать safe_mysqld в
дистрибутив как символическую
ссылку на mysqld_safe .
Старые функции C API
mysql_drop_db ,
mysql_create_db и
mysql_connect больше не
будут поддерживаться, если вы не
скомпилируете MySQL с
CFLAGS=-DUSE_OLD_FUNCTIONS ). Вместо
перекомпиляции лучше
пересобрать клиента для
использования нового 4.0 API.
В структуре MYSQL_FIELD
величины length и
max_length изменены с
unsigned int на unsigned
long . Это не должно вызывать
проблем, за исключением того, что
при использовании величин с
такими типами в качестве
аргументов в функциях класса
printf() могут
генерироваться предупреждающие
сообщения.
Если необходимо удалить из
таблицы все строки, но вам не
нужно знать, сколько строк было
удалено, следует использовать
TRUNCATE TABLE при (поскольку
TRUNCATE TABLE значительно
быстрее, чем DELETE FROM
table_name ).
При попытке выполнить TRUNCATE
TABLE или DROP DATABASE
при наличии активной команды
LOCK TABLES или транзакции
вы получите ошибку.
Для хранения величин в столбцах
BIGINT необходимо
использовать целые числа (вместо
строк, как было в MySQL 3.23).
Возможность использования строк
для данного случая пока еще
работает, но применение целых
чисел более эффективно.
Изменен формат SHOW OPEN
TABLE .
Многопоточные клиенты должны
использовать
mysql_thread_init() и
mysql_thread_end() . See
Раздел 8.4.8, «Как создать клиентскую программу с
потоками».
При желании перекомпилировать
модуль Perl DBD::mysql
необходимо получить версию
Msql-Mysql-modules 1.2218 или
более новую, поскольку в более
старых модулях DBD
использовался не поддерживаемый
вызов функции drop_db() .
В версии 4.0 RAND(seed)
возвращает иные
последовательности случайных
чисел, чем в 3.23; это сделано для
того, чтобы лучше различать
RAND(seed) и
RAND(seed+1) .
Тип результата, возвращаемый
IFNULL(A,B) теперь по
умолчанию устанавливается более
"общий" по отношению к типам
A и B . Порядок
выбора - STRING ,
REAL или INTEGER .
2.5.3. Модернизация с версии 3.22 до версии 3.23
В версии MySQL 3.23 поддерживаются
таблицы нового типа MyISAM
и старого типа ISAM . Старые
таблицы не нуждаются в
преобразовании для использования
их в версии 3.23. По умолчанию все
новые таблицы будут создаваться с
типом MyISAM (если вы не
запускаете mysqld с опцией
--default-table-type=isam ). Можно
преобразовать таблицу
ISAM в таблицу
MyISAM при помощи команды
ALTER TABLE table_name TYPE=MyISAM или
при помощи Perl-скрипта
mysql_convert_table_format .
Клиенты версий 3.22 и 3.21 должны
работать с сервером версии 3.23 без
каких-либо проблем.
Ниже перечислены моменты, на
которые следует обратить внимание
при модернизации до версии 3.23:
Все таблицы, в которых
используется кодировка
tis620 , должны быть
исправлены с помощью myisamchk
-r или REPAIR TABLE .
При выполнении команды DROP
DATABASE над базой данных,
связанной символической
ссылкой, удаляются как данная
ссылка, так и исходная база
данных (в 3.22 это было не так,
поскольку программа
configure не распознавала
системный вызов readlink ).
OPTIMIZE TABLE сейчас
работает только с таблицами
MyISAM . Для других типов
таблиц можно использовать
команду ALTER TABLE для
оптимизации таблицы. Во время
выполнения команды OPTIMIZE
TABLE оптимизируемая таблица
сейчас заблокирована для других
потоков.
Клиент mysql сервера MySQL
сейчас по умолчанию начинает
свою работу с опцией
--no-named-commands
(-g ). Данную опцию можно
отключить с помощью
--enable-named-commands
(-G ). В некоторых
случаях это может вызывать
проблемы несовместимости,
например, в скриптах SQL, в которых
названные команды используются
без точки с запятой! Команды
большого формата пока еще
работают с начала строки.
Функции даты, работающие с
частью представления даты (такие
как MONTH() ), сейчас будут
возвращать 0 для даты
0000-00-00 (в версии MySQL 3.22
возвращалась величина
NULL ).
При использовании порядка
сортировки символов german
необходимо исправить все
таблицы с помощью isamchk
-r , так как в порядке
сортировки произведены
некоторые изменения!
Возвращаемый по умолчанию тип
выражения IF теперь
зависит от обоих аргументов, а не
только от первого.
AUTO_INCREMENT теперь не
будет работать с отрицательными
числами; причина в том, что
отрицательные числа вызывали
проблемы при переходе от
-1 к 0 . Для
таблиц MyISAM
AUTO_INCREMENT не
обрабатывается на более низком
уровне и работает намного
быстрее, чем раньше. Для таблиц
MyISAM старые
автоинкрементные номера также
не используются повторно, даже
при удалении из таблицы строк.
CASE , DELAYED ,
ELSE , END ,
FULLTEXT , INNER ,
RIGHT , THEN и
WHEN сейчас являются
зарезервированными словами.
FLOAT(X) сейчас является
настоящим типом данных с
плавающей точкой, а не величиной
с фиксированным числом
десятичных знаков.
При объявлении
DECIMAL(length,dec) аргумент
length больше не включает
в себя место для знака или
десятичной точки.
Строка TIME теперь
должна представлять собой один
из следующих форматов: [[[DAYS]
[H]H:]MM:]SS[.fraction] или
[[[[[H]H]H]H]MM]SS[.fraction] .
LIKE сейчас сравнивает
строки, используя те же правила
сравнения символов, что и
= . Если необходим
старый режим работы, то можно
скомпилировать MySQL с флагом
CXXFLAGS=-DLIKE_CMP_TOUPPER .
Выражение REGEXP сейчас
является независимым от
регистра символов для
нормальных (не двоичных) строк.
При проверке/исправлении таблиц
необходимо использовать CHECK
TABLE или myisamchk для
таблиц MyISAM
(.MYI ) и isamchk
для таблиц ISAM
(.ISM ).
Чтобы обеспечить совместимость
файлов mysqldump между
версией MySQL 3.22 и версией 3.23, не
следует использовать опцию
--opt или --all для
mysqldump .
Проверьте все ваши вызовы
функции DATE_FORMAT() , чтобы
убедиться, что перед каждым
символом формата имеется
‘% ’ (в версии MySQL
3.22 и более поздних этот
синтаксис уже допускается).
mysql_fetch_fields_direct сейчас
является функцией (был макрос) и
возвращает указатель на
MYSQL_FIELD вместо
MYSQL_FIELD .
Функцию mysql_num_fields()
больше нельзя использовать на
объектах MYSQL* (сейчас
это функция, принимающая
MYSQL_RES* в качестве
аргумента, так что вместо нее
следует применять
mysql_field_count() ).
В версии MySQL 3.22 вывод SELECT
DISTINCT ... почти всегда был
отсортированным. Чтобы получить
отсортированный вывод в версии
3.23, необходимо использовать
GROUP BY или ORDER
BY .
Функция SUM() сейчас
возвращает NULL вместо
0 при отсутствии
сопоставляемых строк: это
сделано для соответствия с ANSI SQL.
Операторы AND или
OR с величинами
NULL теперь будут
возвращать NULL вместо
0 . В основном, это
влияет на запросы, в которых
используется NOT на
выражениях
AND /OR , так как
NOT NULL = NULL .
LPAD() и RPAD()
будут укорачивать
результирующую строку, если она
длиннее, чем аргумент длины.
2.5.4. Модернизация с версии 3.21 до версии 3.22
В версии 3.21 по сравнению с 3.22 не
было сделано никаких изменений,
влияющих на совместимость.
Единственный подводный камень -
это то, что для новых таблиц,
создающихся со столбцами типа
DATE , будет применяться
новый способ хранения даты. При
использовании старой версии
mysqld получить доступ к
этим новым полям будет нельзя.
После установки версии MySQL 3.22
необходимо запустить новый сервер,
а затем выполнить скрипт
mysql_fix_privilege_tables . В
результате будут добавлены новые
привилегии, необходимые для
использования команды
GRANT . Если вы забудете
выполнить эти действия, то
получите Access denied при
попытке использовать ALTER
TABLE , CREATE INDEX или
DROP INDEX . Если для вашего
привилегированного (root )
пользователя MySQL требуется пароль,
то следует указать его как
аргумент в
mysql_fix_privilege_tables .
Изменен интерфейс C API к функции
mysql_real_connect() .Если вы
располагаете старой клиентской
программой, вызывающей данную
функцию, то необходимо задать
значение 0 для нового
аргумента db (или
перекодировать данный клиент,
чтобы посылать значение элемента
db для более быстрых
подключений). Необходимо также
вызывать mysql_init() перед
вызовом функции
mysql_real_connect() ! Это
изменение было проведено для того,
чтобы дать возможность новой
функции mysql_options()
сохранять опции в структуре
обработчика MYSQL .
Имя относящейся к mysqld
переменной key_buffer
изменено на key_buffer_size ,
однако старое имя можно
использовать по-прежнему.
2.5.5. Модернизация с версии 3.20 до версии 3.21
Если вы работаете с версией выше,
чем 3.20.28, и хотите перейти к 3.21, то
необходимо сделать следующее:
Можно запустить сервер
mysqld версии 3.21 с опцией
safe_mysqld --old-protocol , чтобы
использовать его с клиентами из
дистрибутива версии 3.20. В этом
случае функция mysql_errno()
нового клиента не возвращает
никаких серверных ошибок, кроме
CR_UNKNOWN_ERROR (она
предназначена для клиентских
ошибок), при этом сервер использует
не новую, а старую функцию проверки
password() .
Если вы не собираетесь
использовать опцию
--old-protocol к mysqld ,
то необходимо будет выполнить
следующие изменения:
Весь клиентский код следует
перекомпилировать. Для
использования ODBC необходимо
приобрести новый драйвер
MyODBC 2.x.
Необходимо запустить скрипт
scripts/add_long_password для
преобразования поля
Password в таблице
mysql.user к
CHAR(16) .
Все пароли в таблице
mysql.user должны быть
переназначены (чтобы получить 62-
разрядные пароли вместо 31-
разрядных).
Формат таблиц не изменялся,
следовательно, в преобразовании
каких-либо таблиц необходимости
нет.
Версия MySQL 3.20.28 и выше может
обрабатывать новый формат таблиц
user так, что это не
отражается на клиентах. В более
ранних, чем 3.20.28, версиях MySQL пароли
больше не будут работать с
клиентами, если таблица
user преобразована. Для
уверенности следует прежде
провести апгрейд по меньшей мере
до версии 3.20.28 и затем
модернизировать до версии 3.21.
Новый код клиента работает с
сервером mysqld версии 3.20.x,
так что в случае каких-либо проблем
с версией 3.21.x можно использовать
старый сервер 3.20.x без
необходимости повторной
перекомпиляции клиентов.
Если не применить опцию
--old-protocol для
mysqld , то старые клиенты
выдадут следующее сообщение об
ошибке:
ERROR: Protocol mismatch. Server Version = 10 Client Version = 9
Новый интерфейс Perl
DBI /DBD также
поддерживает старый интерфейс
mysqlperl . Единственное
изменение, которое следует
произвести при использовании
mysqlperl , модифицировать
аргументы в функции
connect() . Новыми
аргументами являются:
host , database ,
user , и password
(аргументы user и
password поменялись
местами). See Раздел 8.2.2, «Интерфейс DBI ».
Ниже перечислены изменения,
которые могут повлиять на запросы
в старых приложениях:
HAVING теперь необходимо
указывать перед любым
выражением ORDER BY .
Произведена замена параметров в
LOCATE() .
Появилось несколько новых
зарезервированных слов.
Наиболее значимыми из них
являются DATE ,
TIME и TIMESTAMP .
2.5.6. Модернизация к иной архитектуре
При использовании MySQL 3.23 можно
копировать файлы .frm ,
.MYI и .MYD
между различными архитектурами,
поддерживающими одинаковый формат
чисел с плавающей точкой (все
проблемы, связанные с
перестановкой байтов, берет на
себя MySQL).
Имеющиеся в MySQL файлы данных и
индексные файлы типа ISAM
(.ISD и *.ISM
соответственно) являются
архитектурно-независимыми, а в
ряде случаев - зависимыми от
операционной системы. Для переноса
приложений на компьютер с
архитектурой или операционной
системой, которые отличаются от
используемых на исходном
компьютере, не следует пытаться
перенести базу данных путем
простого копирования файлов на
другой компьютер. Используйте
вместо этого mysqldump .
По умолчанию mysqldump
создаст файл со всеми командами SQL.
После этого данный файл можно
перенести на другой компьютер и
подать его на вход клиента
mysql .
Используя mysqldump --help ,
просмотрите все доступные опции.
При перемещении данных на более
новую версию MySQL следует применять
mysqldump --opt более новой
версии, чтобы получить быструю и
компактную копию.
Самый простой (хотя и не самый
быстрый) способ перемещения базы
данных с компьютера на компьютер -
запустить на компьютере, где
размещается исходная база данных,
следующие команды:
shell> mysqladmin -h 'other hostname' create db_name
shell> mysqldump --opt db_name \
| mysql -h 'other hostname' db_name
Если вы хотите скопировать базу
данных с удаленного компьютера
через медленную сеть, то можно
использовать:
shell> mysqladmin create db_name
shell> mysqldump -h 'other hostname' --opt --compress db_name \
| mysql db_name
Можно также сохранять результат в
файле, затем передавать этот файл
на требуемый компьютер и загружать
этот файл в расположенную там базу
данных. Например, можно
скопировать базу данных в файл на
исходном компьютере как показано
ниже:
shell> mysqldump --quick db_name | gzip > db_name.contents.gz
(Созданный в данном примере файл
сжимается). Передайте этот файл с
содержимым базы данных на
требуемый компьютер и запустите
там эти команды:
shell> mysqladmin create db_name
shell> gunzip < db_name.contents.gz | mysql db_name
Для выполнения передачи базы
данных можно также использовать
mysqldump и mysqlimport .
В случае больших таблиц это
намного более быстрый способ, чем
простое применение
mysqldump . В следующих
командах DUMPDIR
представляет собой полный путь к
каталогу, используемому для
хранения вывода из mysqldump .
Во-первых, создайте каталог для
файлов вывода и дампа базы данных:
shell> mkdir DUMPDIR
shell> mysqldump --tab=DUMPDIR db_name
Затем передайте эти файлы в
каталог DUMPDIR некоторого
соответствующего каталога на
требуемом компьютере и загрузите
там данные файлы в MySQL:
shell> mysqladmin create db_name # создание базы данных
shell> cat DUMPDIR/*.sql | mysql db_name # создание таблиц в базе данных
shell> mysqlimport db_name DUMPDIR/*.txt # загрузка данных в таблицы
Помимо этого, не забудьте
скопировать базу данных
mysql , поскольку в ней
хранятся таблицы привилегий
(user , db ,
host ). Возможно, на новом
компьютере будет нужно запустить
команды в качестве пользователя
root MySQL, пока база данных
mysql не займет свое место.
После импорта базы данных
mysql на новый компьютер
выполните mysqladmin
flush-privileges , чтобы сервер
перезагрузил информацию в
таблицах привилегий.
2.6. Заметки по операционным системам2.6.1. Примечания к Linux (Все версии Linux)
Приведенные ниже замечания о
glibc будут полезны только
для случая, когда вы собираете MySQL
самостоятельно. Но обычно, если Linux
работает на машине с архитектурой
x86, гораздо лучше использовать наши
бинарные файлы. Они линкуются с
glibc , к которой применены
наиболее удачные патчи, и с
наиболее удачными опциями
компилятора - все это сделано для
того, чтобы программа была
пригодной для работы на сильно
нагруженном сервере. Поэтому если
после прочтения данного раздела у
вас возникнут сомнения
относительно дальнейших действий,
попробуйте сначала использовать
бинарные файлы - возможно, они
удовлетворят вашим требованиям.
Если же окажется, что бинарные
файлы вас не устраивают, то можно
попробовать заняться
собственноручной сборкой. Мы будем
очень признательны за сообщение о
том, почему вам пришлось
отказаться от работы с нашими
бинарниками, - это поможет нам в
следующий раз собрать более
удачную версию программы. Что же
касается обычных пользователей, то
для них даже при установке,
рассчитанной на большое
количество параллельных
соединений и/или таблиц,
превосходящих по объему
ограничение в 2 Гб, наши бинарные
файлы будут наилучшим вариантом
выбора.
В операционной системе Linux MySQL
использует LinuxThreads. Если у вас
старая система Linux, в которой
отсутствует glibc2 , то
прежде чем предпринимать попытку
компиляции MySQL, необходимо
установить LinuxThreads. Получить LinuxThreads
можно по адресу
http://www.mysql.com/downloads/os-linux.html.
Примечание: на
Linux 2.2.14 и MySQL, установленных на
многопроцессорных (SMP) системах,
могут возникать некоторые
непонятные проблемы. В таком
случае мы рекомендуем как можно
быстрее сделать апгрейд версии
ядра до 2.4: оно станет гораздо более
быстрым и устойчивым.
Необходимо отметить, что версии
glibc до 2.1.1 включительно
содержат фатальную ошибку в
обработке pthread_mutex_timedwait ,
которая проявляется при
использовании INSERT DELAYED .
Поэтому мы рекомендуем не
использовать INSERT DELAYED ,
пока не будет сделан апгрейд
glibc .
Если планируется использовать
более 1000 одновременных соединений,
необходимо сделать некоторые
изменения в LinuxThreads, пересобрать их
и перелинковать MySQL с новой
libpthread.a . Следует
увеличить PTHREAD_THREADS_MAX в
файле
sysdeps/unix/sysv/linux/bits/local_lim.h
до 4096 и уменьшить STACK_SIZE в
linuxthreads/internals.h до 256 Kб.
Пути указаны относительно
корневого каталога glibc .
Заметим, что MySQL не будет устойчиво
работать при 600-1000 соединениях,
если размер STACK_SIZE
останется по умолчанию 2 Mб.
Если MySQL не может открыть
достаточное количество файлов или
принять достаточное количество
соединений, то это значит, что в Linux
не сконфигурирована возможность
открытия необходимого количества
файлов.
В Linux 2.2 и более свежих версиях
можно получить значение
максимального количества файлов,
которые можно открыть
одновременно. Для этого необходимо
выполнить:
cat /proc/sys/fs/file-max
cat /proc/sys/fs/dquot-max
cat /proc/sys/fs/super-max
В случае, если на машине
установлено более 16 Mб памяти, к
загрузочному скрипту
(/etc/init.d/boot.local на SuSE)
необходимо добавить записи
наподобие следующих:
echo 65536 > /proc/sys/fs/file-max
echo 8192 > /proc/sys/fs/dquot-max
echo 1024 > /proc/sys/fs/super-max
Эти команды можно также запустить
из командной строки от имени
пользователя
root , но в таком случае при
перезагрузке компьютера будут
использоваться старые
ограничения.
Альтернативно, вы можете
установить эти параметры при
загрузке, используя утилиту
sysctl , которая
используется во множестве
поставок Linux (SuSE также добавила ее,
начиная с SuSE 8.0). Просто напишите
такие значения в файл
/etc/sysctl.conf :
# увеличить некоторые значения для MySQL
fs.file-max = 65536
fs.dquot-max = 8192
fs.super-max = 1024
Кроме того, необходимо добавить в
/etc/my.cnf :
[safe_mysqld]
open-files-limit=8192
Добавление такой записи позволит
MySQL создавать до 8192 соединений и
файлов.
Размером стеков потоков в адресном
пространстве управляет константа
STACK_SIZE в LinuxThreads. Ее
значение должно быть достаточно
большим, чтобы хватило места стеку
каждого потока, но достаточно
малым, чтобы предотвратить
попадание стеков некоторых
потоков в область общих данных
mysqld . К сожалению, опытным
путем нам удалось обнаружить, что
реализация mmap() на Linux в
случае поступления запроса на
выделение адреса, который уже
используется, вместо возвращения
сообщения об ошибке успешно
освобождает все ранее выделенные
области и обнуляет данные на всей
странице. Поэтому безопасность
использования mysqld или
любого другого потокового
приложения зависит от
"джентльменского" поведения кода,
создающего потоки. Пользователь
должен принять меры для
обеспечения достаточно малого
количества выполняемых потоков в
любой момент времени, чтобы стеки
потоков не пересекались с
динамически выделяемой памятью. В
случае mysqld необходимо
навязать это "джентльменское"
поведение установкой переменной
max_connection в разумных
пределах.
Если вы собираете MySQL
самостоятельно и не хотите
заниматься патчами LinuxThreads, то
необходимо установить значение
max_connections так, чтобы оно
не превышало 500. Это значение
должно быть еще меньше, если у вас
достаточно велик буфер ключей,
большая таблица динамически
выделяемой памяти или имеются
другие причины, по которым
mysqld занимает большие
объемы памяти, а также в случае,
если вы используете ядро 2.2 с
патчами для 2 Гб. Если используются
наши бинарные файлы или RPM версии
не старше 3.23.25, то можно безопасно
устанавливать max_connections
равным 1500 - при условии, что буфер
ключей или таблицы динамически
выделяемой памяти имеют небольшие
размеры. Чем меньше
STACK_SIZE в LinuxThreads, тем
больше потоков можно безопасно
создать. Рекомендуемая нами
величина составляет от 128K до 256K.
При использовании множества
одновременных соединений вы
можете пострадать от одной
"особенности" ядра 2.2. Данная
особенность заключается в том, что
процесс штрафуется за ветвление
или порождение дочерних процессов
- чтобы предотвратить атаки
ветвлением. Это приводит к
неудачному масштабированию MySQL при
увеличении количества
одновременных соединений. По нашим
данным, на однопроцессорных
машинах из-за данной особенности
создание потоков происходит очень
медленно, что может привести к
большим затратам времени на
соединение с MySQL (до 1 минуты), и
столько же может занять завершение
соединения. Что же касается
многопроцессорных систем, то на
них наблюдалось постепенное
снижение скорости по мере роста
числа клиентов. Пока мы пытались
найти решение проблемы, один из
пользователей прислал патч к ядру,
утверждая, что патч заметно
улучшил работу его сайта. Патч
доступен по адресу
http://www.mysql.com/Downloads/Patches/linux-fork.patch. Мы
провели достаточно обширное
тестирование этого патча как на
развивающейся, так и на
промышленной версиях системы.
Применение патча заметно улучшило
производительность MySQL ,
не вызвав при этом никаких проблем,
поэтому теперь мы рекомендуем его
пользователям, которые до сих пор
используют ядро 2.2 на сильно
нагруженных серверах. Кроме того,
эта проблема была решена в ядре 2.4,
поэтому если вас не устраивает
производительность системы, то,
по-видимому, проще сделать ее
апгрейд до 2.4, чем использовать
патчи к ядру 2.2. При обновлении
системы, помимо исправления этой
ошибки, вы также получите
возможность воспользоваться
преимуществами SMP.
При тестировании MySQL на
двухпроцессорной машине с ядром 2.4
мы обнаружили, что MySQL
масштабируется
гораздо лучше -
фактически отсутствовало
замедление обработки запросов
вплоть до 1000 соединений, а фактор
масштабируемости MySQL (который
вычисляется как отношение
максимальной производительности к
производительности при работе с
одним клиентом) достигал 180%.
Подобные результаты мы наблюдали
на четырехпроцессорной системе -
фактическое отсутствие замедления
при росте количества соединений до
1000 при факторе масштабируемости в
300%. Поэтому для интенсивно
нагруженных серверов мы
настоятельно рекомендуем ядро 2.4.
Оказалось также, что для
достижения максимума
производительности на ядре 2.4
весьма важно запускать
mysqld с наибольшим
возможным приоритетом. Для этого
следует добавить в скрипт
safe_mysqld команду renice
-20 $$ . В наших тестах на
четырехпроцессорной машине
увеличение приоритета привело к
повышению производительности на 60%
при работе 400 клиентов.
В дополнение к этому мы сейчас
занимаемся сбором информации о
производительности MySQL с ядром 2.4
на четырех- и восьмипроцессорных
системах. Если у вас есть доступ к
таким системам и вы тестировали их
производительность, пожалуйста,
отправьте сообщение с
результатами по адресу
http://www.mysql.com/company/contact/ - мы добавим
эти результаты в документацию.
Существует еще один нюанс, заметно
влияющий на производительность
MySQL, особенно на многопроцессорных
системах. В LinuxThreads в
glibc-2.1 очень плохо
реализованы mutex'ы для программ со
множеством потоков, в которых mutex
хранится непродолжительное время.
Парадоксально, но факт: в случае,
если на многопроцессорных
системах собрать MySQL с
немодифицированными LinuxThreads, то при
удалении процессора во много раз
увеличивается производительность.
Для решения этой проблемы мы
предлагаем патч к glibc 2.1. 3
http://www.mysql.com/Downloads/Linux/linuxthreads-2.1-patch.
В glibc-2.2.2 MySQL версии 3.23.36
использует адаптивный mutex, который
гораздо лучше даже ``патченного'' в
glibc-2.3.1 . Однако
предупреждаем, что при некоторых
условиях код mutex'а в
glibc-2.2.2 "закручивается"
(overspin), а это ухудшает
производительность MySQL. Шансы
возникновения такого события
можно понизить, если повысить
приоритет выполнения
mysqld . Можно также
исправить "закручивание" с помощью
патча, доступного по адресу
http://www.mysql.com/Downloads/Linux/linuxthreads-2.2.2.patch.
Он содержит в себе коррекцию
"закручивания", максимальное
количество потоков и размеры стека
- все вместе. Необходимо применить
его в каталоге linuxthreads
командой patch -p0
</tmp/linuxthreads-2.2.2.patch . Мы
надеемся, что данный патч будет в
некотором виде включен в следующие
выпуски glibc-2.2 . В любом
случае - если вы линкуете с
использованием библиотеки
glibc-2.2.2 , то пока что
необходимо исправлять
STACK_SIZE и
PTHREAD_THREADS_MAX . Мы не теряем
надежду, что в будущем значения по
умолчанию будут приведены к более
приемлемым для сборки интенсивно
нагруженного MySQL величинам, так что
самостоятельная сборка сведется к
выполнению ./configure; make; make
install .
Вышеупомянутые патчи мы
рекомендуем использовать только
для создания специальной
статической версии
libpthread.a , а последнюю -
применять только для статического
линкования MySQL. Мы уверены, что для
MySQL эти патчи безопасны и заметно
улучшают его производительность,
но относительно других приложений
данных нет. Линкуя другие
приложения с ``патченной'' версией
библиотеки или собирая ее
динамическую версию и
устанавливая ее на свою систему, вы
осознанно идете на риск по
отношению к другим приложениям,
использующим LinuxThreads.
В случае, если вам придется
столкнуться с непонятными
проблемами при инсталляции MySQL или
при работе утилит, то причина,
вероятнее всего, связана с
библиотеками или компилятором. В
таком случае проблему должно
решить использование наших
бинарных файлов.
Существует одна известная
проблема с бинарным дистрибутивом,
касающаяся старых систем Linux, в
которых используется libc
(таких как RedHat 4.x или Slackware). Она
проявляется в виде некоторых
некритичных проблем с разрешением
имен (see Раздел 2.6.1.1, «Примечания к бинарным дистрибутивам
Linux»).
При использовании LinuxThreads
одновременно работают как минимум
три процесса. По сути это потоки.
Один поток управляет LinuxThreads, один -
обрабатывает соединения и еще один
- обрабатывает различные сигналы.
Заметим, что ядро Linux и библиотека
LinuxThreads по умолчанию могут
поддерживать только 1024 потока. Это
значит, что может существовать не
более 1021 соединения с MySQL на
системе, к которой не применялись
патчи. Информацию о том, как обойти
это ограничение, можно найти на
странице
http://www.volano.com/linuxnotes.html.
Если по результату работы команды
ps вы видите, что mysqld
прекратил работу,
то обычно причиной этого является
либо обнаружение ошибки в MySQL, либо
испорченная таблица (see
Раздел A.4.1, «Что делать, если работа MySQL
сопровождается постоянными сбоями»).
Если при получении сигнала
SIGSEGV mysqld
просто умирает, то для получения
образа памяти (core dump) на Linux можно
запустить mysqld с опцией
--core-file . Заметим, что при
этом вам, возможно, придется
увеличить размер допустимого
объема файла образа памяти путем
добавления строки ulimit -c
1000000 в safe_mysqld или
запуском safe_mysqld с опцией
--core-file-size=1000000 (see
Раздел 4.7.2, «safe_mysqld , оболочка
mysqld »).
Если при линковании собственного
MySQL-клиента возникла ошибка:
ld.so.1: ./my: fatal: libmysqlclient.so.4:
open failed: No such file or directory
то проблему можно обойти одним из
следующих способов:
линковать клиент с одним из
флагов:
-Wl,r/path-libmysqlclient.so .
(вместо -Lpath );
скопировать libmysqclient.so
в /usr/lib ;
добавить путь к каталогу, в
котором находится
libmysqlclient.so , к
переменной окружения
LD_RUN_PATH перед запуском
клиента.
Если вы используете компилятор
Fujitsu (fcc / FCC ), то возможны
некоторые проблемы компиляции MySQL
поскольку заголовки в Linux в
значительной степени
ориентированы на gcc .
Данная конфигурация должна
работать с fcc/FCC :
CC=fcc CFLAGS="-O -K fast -K lib -K omitfp -Kpreex -D_GNU_SOURCE \
-DCONST=const -DNO_STRTOLL_PROTO" CXX=FCC CXXFLAGS="-O -K fast -K lib \
-K omitfp -K preex --no_exceptions --no_rtti -D_GNU_SOURCE -DCONST=const \
-Dalloca=__builtin_alloca -DNO_STRTOLL_PROTO \
'-D_EXTERN_INLINE=static __inline'" ./configure --prefix=/usr/local/mysql\
--enable-assembler --with-mysqld-ldflags=-all-static --disable-shared \
--with-low-memory
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.
2.6.1.2. Заметки по поводу Linux x86
Для MySQL необходимо наличие
libc версии 5.4.12 или выше.
Известно, что MySQL работает с
libc 5.4.46, а также с
glibc версии 2.0.6 и более
новыми. Существуют некоторые
проблемы с glibc из
пакетов в RedHat, поэтому в случае
возникновения проблем следует
проверить, нет ли обновлений
данной версии! Известно, что
glibc из RPM версий 2.0.7-19 и
2.0.7-29 работоспособны.
Если вы используете Red Hat 8.0 или
новую glibc 2.2.x вам следует
запускать mysqld с опцией
--thread-stack=192K . Если вы этого
не сделаете, то mysqld будет умирать
в gethostbyaddr() потому что
новая glibc требует > 128Кбайт
памяти стека для этого вызова.
Такой размер стека установлен по
умолчанию в MySQL 4.0.10 и более новых.
При использовании для сборки MySQL
gcc 3.0 и выше библиотеку libstdc++v3
необходимо установить до сборки;
если вы не сделаете этого, то
получите сообщение об отсутствии
символа __cxa_pure_virtual во
время линкования!
На некоторых старых версиях Linux
configure может приводить к
ошибкам такого типа:
Syntax error in sched.h. Change _P to __P in the /usr/include/sched.h file.
See the Installation chapter in the Reference Manual.
Сделайте именно то, о чем
говорится в сообщении об ошибке -
добавьте дополнительный символ
подчеркивания к имени макроса
_P , которое имеет только
один символ подчеркивания в
начале, и попробуйте выполнить те
же действия еще раз.
При компиляции могут выводиться
некоторые предупреждения. Ниже
приведены те из них, которые можно
проигнорировать:
mysqld.cc -o objs-thread/mysqld.o
mysqld.cc: In function `void init_signals()':
mysqld.cc:315: warning: assignment of negative value `-1' to `long unsigned int'
mysqld.cc: In function `void * signal_hand(void *)':
mysqld.cc:346: warning: assignment of negative value `-1' to `long unsigned int'
mysql.server находится либо в
каталоге share/mysql
каталога инсталляции MySQL, либо в
каталоге support-files
каталога дерева исходных текстов
MySQL.
Возникновение следующей ошибки
при линковании mysqld
говорит о некорректной установке
libg++.a :
/usr/lib/libc.a(putc.o): In function `_IO_putc':
putc.o(.text+0x0): multiple definition of `_IO_putc'
Использования libg++.a
можно избежать путем запуска
configure следующим
образом:
shell> CXX=gcc ./configure
2.6.1.3. Примечания к Linux SPARC
В некоторых версиях Linux SPARC
испорчена функция
readdir_r() . Это проявляется
в том, что SHOW DATABASES
всегда возвращает пустой набор.
Проблема может быть решена
удалением HAVE_READDIR_R из
config.h - это нужно делать
после конфигурирования, но до
компиляции.
2.6.1.4. Примечания к Linux Alpha
MySQL версии 3.23.12 - первая версия MySQL,
протестированная на Linux-Alpha.
Поэтому если вы собираетесь
использовать MySQL на Linux-Alpha,
следует прежде всего убедиться,
что вы используете либо эту
версию, либо более свежую.
Мы тестировали MySQL на Alpha при
помощи наших тестов на
производительность и все
работает превосходно.
При компиляции стандартных
бинарных файлов MySQL мы
использовали SuSE 7.0 для AXP с ядром
2.4.4-SMP, компилятор Compaq C (6.2-505) и
компилятор Compaq C++ (6.3-006) на
компьютере Compaq DS20 с процессором
Alpha EV6.
Вышеупомянутый компилятор можно
найти на
http://www.support.compaq.com/alpha-tools/.
Использование этого компилятора
вместо gcc привело к улучшению
производительности MySQL на 9-14%.
Отметим, что до версии MySQL 3.23.52 и
4.0.2 мы оптимизировали исполняемые
файлы только для единственной
модели процессора (используя
опцию компиляции -fast );
это означало что вы можете
использовать наши двоичные файлы
только если у вас процессор Alpha EV6.
Для всех следующих версий мы
добавили флаг -arch generic к
нашим опциям компиляции, что
позволяет работать бинарному
файлу на всех процессорах Alpha. Мы
также собираем MySQL статически - во
избежание проблем.
CC=ccc CFLAGS="-fast -arch generic" CXX=cxx \
CXXFLAGS="-fast -arch generic -noexceptions -nortti" \
./configure --prefix=/usr/local/mysql --disable-shared \
--with-extra-charsets=complex --enable-thread-safe-client \
--with-mysqld-ldflags=-non_shared --with-client-ldflags=-non_shared
Если вы хотите использовать
egcs , то у нас применялась
следующая командная строка
конфигурирования:
CFLAGS="-O3 -fomit-frame-pointer" CXX=gcc \
CXXFLAGS="-O3 -fomit-frame-pointer -felide-constructors \
-fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql \
--disable-shared
Некоторые известные проблемы при
запуске MySQL на Linux-Alpha:
отладка потоковых приложений,
подобных MySQL, не работает с
gdb 4.18 . Вместо него
необходимо установить и
использовать gdb 5.1!
при попытке статического
линкования mysqld с
использованием gcc
результирующий файл при
попытке запуска сбрасывает
образ памяти на диск (core dump) и
умирает. Иными словами, не
следует использовать с
gcc опцию
--with-mysqld-ldflags=-all-static .
2.6.1.5. Примечания к Linux PowerPC
MySQL должен работать на MkLinux при
наличии самого свежего пакета
glibc (проверено с
glibc 2.0.7).
2.6.1.6. Примечания к Linux MIPS
Для того чтобы MySQL работал на Qube2
(Linux Mips), необходима самая свежая
версия библиотеки glibc
(известно, что MySQL работает с
glibc-2.0.7-29C2 ). Помимо этого,
следует использовать компилятор
egcs C++ (egcs-1.0.2-9 ,
gcc 2.95.2 или выше).
2.6.1.7. Примечания к Linux IA64
Для компиляции MySQL на Linux IA64 мы
применяем следующую команду
конфигурирования: используется
gcc-2.96 :
CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc \
CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors \
-fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql \
"--with-comment=Official MySQL binary" --with-extra-charsets=complex
На IA64 бинарные файлы MySQL-клиента
используют динамические
библиотеки. Это значит, что при
установке нашего бинарного
дистрибутива куда-либо, кроме
/usr/local/mysql , необходимо
либо модифицировать
/etc/ld.so.conf , либо
добавить путь к каталогу, в
котором находится
libmysqlclient.so , к
переменной окружения
LD_LIBRARY_PATH .
See Раздел A.3.1, «Проблемы при линковании с клиентской
библиотекой MySQL».
2.6.2. Примечания к Windows
В данном разделе описывается
использование MySQL в среде Windows. Эта
информация также находится в файле
README , поставляемом с
дистрибутивом MySQL Windows. See
Раздел 2.1.2, «Установка MySQL на Windows».
2.6.2.1. Запуск MySQL на Windows 95, 98 или Me
В MySQL для соединения клиента с
сервером используется TCP/IP (это
обеспечивает для любого
компьютера в сети возможность
соединиться с вашим MySQL-сервером).
Поэтому TCP/IP необходимо
установить на машине до запуска
MySQL. TCP/IP, в частности, имеется на
CD-диске с дистрибутивом Windows.
Обратите внимание: если вы
используете один из старых
выпусков Windows 95 (например OSR2), то
вполне вероятно, что у вас
установлен старый пакет Winsock; а
для работы MySQL необходим Winsock 2!
Самую свежую версию Winsock можно
получить по адресу http://www.microsoft.com/.
Windows 98 содержит новую библиотеку
Winsock 2, поэтому данное замечание к
ней не относится.
Для запуска mysqld
необходимо открыть окно MS-DOS и
выполнить:
C:\> C:\mysql\bin\mysqld
Это позволит запустить
mysqld в фоновом режиме
без окна.
Работу MySQL-сервера можно
остановить командой:
C:\> C:\mysql\bin\mysqladmin -u root shutdown
Это вызов программы
администрирования MySQL от имени
пользователя root ,
который по умолчанию
соответствует пользователю
Administrator в системе
привилегий MySQL. Обратите внимание:
система привилегий MySQL абсолютно
независима от каких-либо
аккаунтов пользователей в среде
Windows.
Заметим, что в Windows 95/98/Me не
поддерживается создание
именованных каналов. Таким
образом, именованные каналы вы
можете использовать для
соединения с MySQL-сервером,
работающем в системе Windows NT/2000/XP.
(Разумеется, MySQL-сервер также
должен поддерживать именованные
каналы. Например, при работе
mysqld-opt в системе NT/2000/XP
нельзя создавать соединения с
использованием именованных
каналов; следует применять либо
mysqld-nt , либо
mysqld-max-nt .)
Если mysqld не
запускается, следует проверить
файл \mysql\data\mysql.err , на
предмет записей, сделанных
сервером, - они содержат
объяснения причин, вызвавших
проблему. Можно также попробовать
запустить сервер командой
mysqld --standalone ; в этом
случае на экран будет выводиться
некоторая полезная информация,
которая может помочь решить
проблему.
В качестве последней попытки
можно попробовать запустить
mysqld с флагами
--standalone --debug . В этом
случае mysqld будет
помещать записи в файл отладки
C:\mysqld.trace . Возможно, по
содержимому этого файла вы
сумеете определить причину, по
которой не запускается
mysqld . See
Раздел E.1.2, «Создание трассировочных файлов».
Для вывода всех флагов, которые
``понимает'' mysqld ,
используйте команду mysqld
--help .
2.6.2.2. Запуск MySQL на Windows NT, 2000 или XP
Для того чтобы MySQL работал с TCP/IP на
Windows NT 4, необходимо установить
Service Pack 3 (или выше)!
Обычно MySQL устанавливается на Windows
NT/2000/XP как сервис. В случае, если
сервер уже работает, необходимо
сначала завершить его работу при
помощи следующей команды:
C:\mysql\bin> mysqladmin -u root shutdown
Это вызов программы
администрирования MySQL от имени
пользователя root ,
который по умолчанию
соответствует пользователю
Administrator в системе
привилегий MySQL. Обратите внимание:
система привилегий MySQL абсолютно
независима от каких-либо
аккаунтов пользователей в
системе Windows.
Теперь установим сервис сервера:
C:\mysql\bin> mysqld-max-nt --install
Если требуются какие-либо опции,
они должны быть определены, как
``Start parameters '' в
инструментальной программе
Services системы Windows перед
запуском сервиса MySQL.
Доступ к инструментальной
программе Services
(Windows Service Control Manager )
можно получить в Control
Panel (в Administrative Tools в
Windows 2000). Рекомендуется закрывать
Services при выполнении
операций --instal или
--remove - это предотвратит
возникновение некоторых ошибок
неизвестной природы.
За информацией о том, какие
бинарные файлы следует
использовать для запуска сервера,
обращайтесь к разделу See
Раздел 2.1.2.2, «Подготовка конфигурации MySQL для Windows».
Отметим, что начиная с версии 3.23.44
MySQL имеется возможность
альтернативной установки сервиса
- в режиме Manual (если вам
не требуется автоматический
запуск сервиса при загрузке
операционной системы):
C:\mysql\bin> mysqld-max-nt --install-manual
Сервис устанавливается под
именем MySQL. Сразу же после
установки он может быть запущен
при помощи инструментальной
программы Services или
командой NET START MySQL .
После запуска работа
mysqld-max-nt может быть
завершена при помощи mysqladmin из
инструментальной программы
Services или командой
NET STOP MySQL .
Если MySQL функционирует в качестве
сервиса, то операционная система
автоматически завершает работу
MySQL -сервиса при
программном завершении работы
компьютера. В версиях MySQL < 3.23.47
Windows ожидает всего лишь несколько
секунд завершения остановки,
после чего уничтожает процесс
сервера базы данных, если
превышено время ожидания (что
может быть потенциальной
причиной возникновения проблем).
Например, при следующем запуске
обработчик таблицы InnoDB
должен выполнять восстановление
после аварийного завершения.
Начиная с MySQL версии 3.23.48, Windows
ожидает завершения процесса
MySQL-сервера дольше. Если вы
считаете, что этого времени для
вашей версии недостаточно,
безопаснее запускать MySQL-сервер
не как сервис, а из командной
строки и завершать его работу
командой mysqladmin shutdown .
В Windows NT (но не в Windows 2000/XP)
существует проблема, которая
заключается в том, что система по
умолчанию ожидает окончания
работы сервиса только 20 секунд,
после чего уничтожает процесс
сервиса. Это заданное по
умолчанию значение можно
увеличить с помощью редактора
Registry (Реестра), запустив
\winnt\system32\regedt32.exe и
отредактировав значение
WaitToKillServiceTimeout в записи
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control .
Следует задать другое, большее
значение в миллисекундах,
например 120000, чтобы Windows NT ожидала
120 секунд.
Необходимо заметить, что при
работе в качестве сервиса
mysqld-max-nt не имеет
доступа к консоли, а
следовательно, невозможно
увидеть его сообщения. Информация
об ошибках находится в файле
c:\mysql\data\mysql.err .
Если вы столкнулись с проблемами
установки mysqld-max-nt в
качестве сервиса, попробуйте
запустить его с указанием полного
пути:
C:\> C:\mysql\bin\mysqld-max-nt --install
Если это не поможет, можно
принудить mysqld-max-nt
стартовать соответствующим
образом, исправив путь в Registry!
Если вы не хотите запускать
mysqld-max-nt в качестве
сервиса, его можно запустить
следующим образом:
C:\> C:\mysql\bin\mysqld-max-nt --standalone
или
C:\> C:\mysql\bin\mysqld --standalone --debug
В случае последнего варианта вы
получите отладочную информацию в
C:\mysqld.trace . See
Раздел E.1.2, «Создание трассировочных файлов».
2.6.2.3. Работа MySQL в среде Windows
MySQL поддерживает TCP/IP на всех
Windows-системах и именованные
каналы в среде NT/2000/XP. По умолчанию
MySQL использует именованные каналы
для соединений с локальной
машиной в среде NT/2000/XP и TCP/IP - во
всех остальных случаях, если на
клиентской машине установлен TCP/IP.
Имя машины определяет
используемый протокол:
Чтобы заставить MySQL-клиента
использовать именованные каналы,
следует добавить опцию
--pipe или задать
. в качестве имени
машины для соединения. Для
определения имени канала
используйте опцию --socket .
В MySQL 4.1 вам следует использовать
опцию --protocol=PIPE .
Отметим, что начиная с версии 3.23.50
именованные каналы применяются
только в случае, если
mysqld запущен с опцией
--enable-named-pipe . Это вызвано
тем, что у некоторых
пользователей применение
именованных каналов приводило к
прекращению работы сервера MySQL.
Для проверки работоспособности
MySQL нужно выполнить следующие
команды:
C:\> C:\mysql\bin\mysqlshow
C:\> C:\mysql\bin\mysqlshow -u root mysql
C:\> C:\mysql\bin\mysqladmin version status proc
C:\> C:\mysql\bin\mysql test
Если при ответе mysqld на
входящие соединения под Windows 9x/Me
возникают задержки, то это, скорее
всего, вызвано проблемами с вашим
DNS. В таком случае следует
запускать mysqld с опцией
--skip-name-resolve и в таблицах
привилегий MySQL использовать
только localhost и IP-адреса.
Избежать работы с DNS при
соединении с MySQL-сервером
mysqld-nt , работающим под
NT/2000/XP, можно путем применения
опции --pipe , которая
задает использование именованных
каналов. Сказанное выше
справедливо для большинства
клиентов MySQL.
Существует две версии программы
работы с MySQL из командной строки:
Если вы хотите использовать
mysqlc.exe , сначала
необходимо скопировать
C:\mysql\lib\cygwinb19.dll в
системный каталог Windows
(\windows\system или в другое
аналогичное место).
По умолчанию всем пользователям
Windows предоставляются полные права
доступа ко всем базам данных без
ввода пароля. Чтобы обеспечить
большую безопасность MySQL,
необходимо задать пароль для
каждого пользователя и удалить
запись в таблице mysql.user ,
содержащую Host='localhost' и
User=' ` .
Необходимо также установить
пароль для пользователя
root . Приведенный ниже
пример начинается с удаления
возможности анонимного доступа,
который может быть использован
любым пользователем для
установки пароля для
пользователя root :
C:\> C:\mysql\bin\mysql mysql
mysql> DELETE FROM user WHERE Host='localhost' AND User=' ';
mysql> QUIT
C:\> C:\mysql\bin\mysqladmin reload
C:\> C:\mysql\bin\mysqladmin -u root password your_password
Если вы хотите остановить сервер
mysqld после того, как
установлен пароль для
пользователя root , нужно
использовать команду:
C:\> mysqladmin --user=root --password=your_password shutdown
Если у вас работает старая
испытательная версия MySQL 3.21 под
Windows, вышеприведенная команда не
выполнится и приведет к сообщению
об ошибке: parse error near `SET
password' . Для решения этой
проблемы следует выполнить
загрузку и обновление до
последней доступной бесплатно
версии MySQL.
В текущей версии MySQL вы можете
легко добавлять новых
пользователей и изменять их
привилегии при помощи команд
GRANT и REVOKE (see
Раздел 4.3.1, «Синтаксис команд GRANT и
REVOKE »).
2.6.2.4. Соединение с MySQL на удаленной машине
под Windows с использованием SSH
В этом разделе приведены
замечания относительно получения
безопасного соединения с
удаленным MySQL-сервером с
использованием SSH. Автором этих
замечаний является Дэвид Карлсон
(David Carlson) - <dcarlson@mplcomm.com> :
Установите SSH-клиент на своей
Windows-системе. С точки зрения
пользователя, лучшим
небесплатным клиентом из числа
мне известных является клиент
SecureCRT по адресу
http://www.vandyke.com/.
Другой возможный вариант -
f-secure от
http://www.f-secure.com/.
Есть и бесплатные версии - их
можно получить на Google
по адресу
http://directory.google.com/Top/Computers/Security/Products_and_Tools/CryptographySSH/Clients/Windows/
Запустите Windows-клиент SSH.
Установите
Host_Name=адрес_своего_MySQL-сервера .
Задайте userid=свой_userid
для соединения со своим
сервером (может отличатся от
вашего имени
пользователя/пароля для MySQL).
Задайте перенаправление портов
или организуйте удаленный
форвардинг (нужно сделать
следующие установки:
локальный порт - 3306 ,
удаленный хост -
адреса_вашего_mysql_сервера ,
удаленный порт - 3306 )
либо локальный форвардинг
(порт - 3306 , хост -
localhost , удаленный порт
- 3306 ).
Сохраните выполненные
установки, иначе вам придется в
следующий раз делать все
заново.
Соединитесь со своим сервером,
используя только что созданный
вами SSH-сеанс.
Запустите в Windows какое-либо
ODBC-приложение (например Access).
Создайте в Windows новый файл и
ссылку на MySQL, используя
ODBC-драйвер обычным образом, за
исключением того, что вместо
имени вашего MySQL-сервера
следует указывать
localhost , а не
yourmysqlservername .
В результате этих действий вы
должны получить ODBC-соединение со
своим MySQL-сервером, защищенное при
помощи SSH-кодирования.
2.6.2.5. Распределение данных в Windows между
несколькими различными дисками
Начиная с MySQL версии 3.23.16 серверы
mysqld-max и
mysql-max-nt в дистрибутиве
MySQL компилируются с флагом
-DUSE_SYMDIR . Это
обеспечивает возможность
устанавливать базу данных на
другом диске путем добавления
символической ссылки на нее
(подобно тому, как работают
символические ссылки в Unix).
В Windows для создания символической
ссылки на базу данных создается
файл, содержащий путь к каталогу,
на который указывает ссылка. Этот
файл сохраняется в каталоге
mysql_data под именем
database.sym . Отметим, что
такая символическая ссылка будет
работать только в случае
отсутствия каталога
mysql_data_dir\database .
Например, если каталог данных MySQL
находится в C:\mysql\data , а
вы хотите разместить базу данных
foo в каталоге
D:\data\foo , необходимо
создать файл
C:\mysql\data\foo.sym ,
содержащий текст
D:\data\foo\ . После этого
все таблицы, создаваемые в базе
данных foo , будут
создаваться в D:\data\foo .
Отметим, что из-за потерь в
скорости при открытии каждой
таблицы в MySQL не включается
использование символических
ссылок по умолчанию, даже если вы
собрали MySQL с поддержкой данной
возможности. Чтобы обеспечить
возможность разрешения
символических ссылок, вы должны
поместить в свой файл
my.cnf или my.ini
следующие строки:
[mysqld]
use-symbolic-links
В MySQL 4.0 использование
символических ссылок по
умолчанию будет включено. Если вы
хотите запретить эту возможность,
то для данной версии MySQL
необходимо использовать опцию
skip-symlink .
2.6.2.6. Компиляция MySQL-клиентов в среде Windows
В файлах исходных текстов следует
перед mysql.h включить
windows.h :
#if defined(_WIN32) || defined(_WIN64)
#include <windows.h>
#endif
#include <mysql.h>
Линковать свою программу можно
либо с использованием
динамической библиотеки
libmysql.lib , которая
является просто оболочкой для
загрузки libmysql.dll по
требованию, либо со статической
библиотекой mysqlclient.lib .
Отметим, что поскольку библиотеки
mysqlclient компилируются
как потоковые библиотеки, следует
скомпилировать вашу программу
так, чтобы была разрешена
многопочность!
2.6.2.7. Сравнительные характеристики MySQL под
Windows и под Unix
На настоящий момент версия MySQL под
Windows зарекомендовала себя как
весьма устойчивая. Возможности
этой версии и версии под Unix
аналогичны, за исключением
следующих моментов:
Windows 95 и
потоки
При создании каждого потока в
Windows 95 теряется приблизительно
200 байтов основной памяти. А
поскольку каждое соединение с
MySQL создает новый поток, на Windows
95 не следует запускать
mysqld на
продолжительное время, если ваш
сервер обрабатывает много
соединений! Другие версии Windows
не подвержены этой ошибке.
Параллельное
чтение
Для обработки смешанных
запросов SELECT и
INSERT в MySQL
используются функции
pread() и pwrite() .
В настоящее время для эмуляции
pread() /pwrite()
мы применяем mutex'ы. Однако в наши
планы на будущее входит замена
интерфейса файлового уровня
виртуальным интерфейсом, чтобы
иметь возможность использовать
интерфейс
readfile() /writefile()
на NT/2000/XP - с целью ускорения
работы. В текущей реализации
число одновременно открытых в
MySQL файлов не может быть больше
1024; это означает, что вы не
сможете создать такое же
количество одновременных
соединений с MySQL в NT/2000/XP, как в
Unix.
Чтение с
блокировкой
В MySQL для каждого соединения
используется чтение с
блокировкой. Это означает, что:
Соединение не будет
автоматически закрыто по
истечении 8 часов, как в
случае Unix-версии MySQL.
В случае ``зависания''
соединения невозможно
оборвать его без остановки
MySQL.
mysqladmin kill не
работает для ``спящих''
соединений
mysqladmin shutdown не
может отработать до тех пор,
пока существуют ``спящие''
соединения.
Перечисленные проблемы мы
планируем решить, когда наши
разработчики под Windows придумают
изящный способ их решения.
DROP DATABASE
Нельзя удалить базу данных,
если она используется
каким-либо потоком.
Остановка MySQL из
диспетчера задач
В Windows 95 нельзя остановить MySQL из
диспетчера задач или с помощью
инструментальной программы
shutdown ; это можно
сделать с помощью mysqladmin
shutdown .
Имена, не зависящие
от регистра символов
Имена файлов в Windows не зависят
от регистра символов, поэтому
имена таблиц и баз данных в MySQL
под Windows также не зависимы от
регистра. Единственное
ограничение заключается в том,
что имена баз данных и таблиц в
пределах одного выражения
должны задаваться с
использованием одинакового
регистра символов (see
Раздел 6.1.3, «Чувствительность имен к регистру»).
Символ каталогов
‘\ ’
Компоненты путей в Windows 95
разделяются символом
‘\ ’, который
также является символом
экранирования в MySQL. Если вы
используете LOAD DATA INFILE
или SELECT ... INTO OUTFILE ,
символ ‘\ ’
необходимо вводить дважды:
mysql> LOAD DATA INFILE "C:\\tmp\\skr.txt" INTO TABLE skr;
mysql> SELECT * INTO OUTFILE 'C:\\tmp\\skr.txt' FROM skr;
В качестве альтернативы можно
использовать имена файлов
Unix-стиля:
mysql> LOAD DATA INFILE "C:/tmp/skr.txt" INTO TABLE skr;
mysql> SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr;
Ошибка can't open
named pipe (невозможно открыть
именованный канал)
При использовании MySQL версии 3.22
на NT с самым свежим клиентом
mysql можно получить
следующее сообщение об ошибке:
error 2017: can't open named pipe to host: . pipe...
Это происходит из-за того, что в
данной версии MySQL на NT
именованные каналы применяются
по умолчанию. Чтобы избежать
таких ошибок, следует
использовать с новым клиентом
MySQL флаг --host=localhost или
создать файл флагов
C:\my.cnf , содержащий
следующие строки:
[client]
host = localhost
Начиная с версии 3.23.50
именованные каналы
используются только в случае,
если mysqld запущен с
флагом --enable-named-pipe .
Ошибка access denied
for user (доступ пользователю
запрещен)
Если вы получили сообщение об
ошибке Access denied for user:
`some-user@unknown' to database `mysql' при
попытке доступа к MySQL-серверу,
находящемуся на той же машине, с
которой происходит доступ, это
значит, что MySQL не может
правильно определить адрес
вашей машины. Для решения
данной проблемы следует
создать файл
\windows\hosts , содержащий:
127.0.0.1 localhost
ALTER
TABLE
При выполнении оператора
ALTER TABLE доступ к
таблице для других потоков
блокируется. Именно поэтому
Windows не может удалить файл,
который используется другим
потоком (возможно, в будущем мы
найдем какой-нибудь способ
обойти эту проблему).
Выполнение DROP TABLE над
таблицей, входящей в состав
сводной таблицы MERGE ,
не будет работать в Windows, так как
отображение таблицы, которое
выполняет обработчик
MERGE , скрыто от
верхнего уровня MySQL. Поскольку в
Windows нельзя удалять открытые
файлы, вначале следует сбросить
все MERGE -таблицы
(используя FLUSH TABLES )
или удалить все
MERGE -таблицы перед
удалением таблицы. Мы исправим
эту ошибку одновременно с
введением оператора
VIEW . Операторы DATA
DIRECTORY и INDEX DIRECTORY
в CREATE TABLE в Windows
игнорируются, поскольку Windows не
поддерживает символические
ссылки.
Ниже приведены некоторые
открытые вопросы для всех, кто
захочет помочь нам в работе над
выпусками под Windows:
Требуется создать
однопользовательский сервер
MYSQL.DLL . Он должен
включать все возможности
стандартного MySQL-сервера, за
исключением потоков. Это
заметно упростит использование
MySQL в приложениях, которые не
нуждаются в настоящем
клиент-серверном
взаимодействии и в доступе к
базе с других машин.
Нужно было бы добавить в
инсталляционный пакет
нескольких симпатичных иконок
для старта и остановки MySQL.
При регистрации mysqld в
качестве сервиса с флагом
--install (на NT) было бы
неплохо иметь возможность
добавлять флаги по умолчанию к
командной строке. Сейчас эта
проблема решается путем записи
списка параметров в файл
C:\my.cnf .
Было бы удобно останавливать
mysqld из диспетчера
задач. Сейчас для этого нужно
применять mysqladmin shutdown .
Требуется перенести
readline в Windows для
использования с
инструментальной программой,
запускаемой из командной
строки mysql .
GUI версия стандартных
MySQL-клиентов (mysql ,
mysqlshow ,
mysqladmin и
mysqldump ) будет очень
полезна.
Было бы хорошо, если бы чтение и
запись сокетов из
net.c можно было бы
прерывать. Это позволило бы
останавливать открытые потоки
командой mysqladmin kill в
Windows.
mysqld всегда стартует в
местоположении "C", а не в
местоположении, установленном
по умолчанию. С благодарностью
будет принято исправление,
позволяющее использование
программой mysqld
текущего значения
местоположения для порядка
сортировки.
Требуется добавить макрос для
ускорения безопасного для
потоков метода
инкремента/декремента,
обеспечиваемого Windows.
Остальные, специфические для
Windows вопросы, можно найти в
файле README , который
находится в поставке MySQL-Windows.
2.6.3. Примечания к Solaris
В системе Solaris проблемы
подстерегают вас еще до распаковки
дистрибутива MySQL! Программа tar в
Solaris ``не умеет'' работать с длинными
именами файлов, поэтому при
попытке распаковать MySQL вы можете
увидеть сообщение об ошибке,
подобное следующему:
x mysql-3.22.12-beta/bench/Results/ATIS-mysql_odbc-NT_4.0-cmp-db2,\
informix,ms-sql,mysql,oracle,solid,sybase, 0 bytes, 0 tape blocks
tar: directory checksum error
В этом случае для распаковки
дистрибутива необходимо
использовать GNU-версию программы
tar (gtar ).
Скомпилированную версию данной
программы для Solaris можно загрузить
с http://www.mysql.com/downloads/os-solaris.html.
Собственные потоки Sun работают
только начиная с версии Solaris 2.5. Для
версии 2.4 и более ранних MySQL
автоматически использует MIT-pthreads
(see Раздел 2.3.6, «Замечания по потокам MIT-pthreads»).
Следующее сообщение об ошибке
конфигурации:
checking for restartable system calls... configure: error can not run test
programs while cross compiling
означает, что имели место какие-то
ошибки в установке компилятора! В
этом случае необходимо обновить
ваш компилятор до более свежей
версии. Эту проблему можно также
решить, вставив в файл
config.cache следующую
строку:
ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls='no'}
При использовании Solaris на SPARC мы
рекомендуем компилятор
gcc 2.95.2. Его можно
получить по адресу
http://gcc.gnu.org/.
Отметим, что egcs 1.1.1 и
gcc 2.8.1 работают на SPARC
ненадежно!
Рекомендуемая строка для
configure при использовании
gcc 2.95.2:
CC=gcc CFLAGS="-O3" \
CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" \
./configure --prefix=/usr/local/mysql --with-low-memory --enable-assembler
Если используется UltraSPARC, то при
добавлении строки "-mcpu=v8 -Wa,-xarch=v8plusa"
к переменным CFLAGS и CXXFLAGS можно
получить повышение
производительности на 4%.
При использовании компилятора Sun
Fortre версии 5.0 (или выше) можно
запускать configure
следующим образом:
CC=cc CFLAGS="-Xa -fast -xO4 -native -xstrconst -mt" \
CXX=CC CXXFLAGS="-noex -xO4 -mt" \
./configure --prefix=/usr/local/mysql --enable-assembler
Можно создать 64-разрядный
исполняемый код с помощью:
CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt -xarch=v9" \
CXX=CC CXXFLAGS="-noex -mt -xarch=v9" ASFLAGS="-xarch=v9" \
./configure --prefix=/usr/local/mysql --enable-assembler
В тестах на производительность MySQL
с Sun Fortre 5.0 мы получили 4%-ное
ускорение на UltraSPARC по сравнению с
gcc 3.2 с опцией -mcpu.
Если вы создаете 64-разрядный код,
он на 4% медленнее чем 32-разрядный,
но mysqld можно обслуживать больше
потоков и использовать больше
памяти.
В случае возникновения проблем с
fdatasync или
sched_yield их можно решить
путем добавления LIBS=-lrt к
командной строке запуска
конфигурирования.
Последующий абзац относится
только к более ранним, чем WorkShop 5.3,
компиляторам:
Отредактировать скрипт configure
можно, заменив строку:
#if !defined(__STDC__) || __STDC__ != 1
строкой:
#if !defined(__STDC__)
При включении __STDC__ с
помощью опции -Xc
компилятор Sun не сможет
откомпилировать программу с
файлом pthread.h из системы
Solaris. Это ошибка Sun (испорченный
компилятор или испорченный
включаемый файл).
Если при запуске mysqld
выдает приведенное ниже сообщение
об ошибке:
libc internal error: _rmutex_unlock: rmutex not held
необходимо попробовать собрать
MySQL, используя компилятор Sun с
опцией запрещения многопоточности
(-mt ). Добавьте опцию
-mt к CFLAGS и
CXXFLAGS и попробуйте
запустить mysqld еще раз.
При использовании SFW версии gcc
(поставляемой с Solaris 8) необходимо к
переменной окружения
LD_LIBRARY_PATH перед
конфигурированием добавить
/opt/sfw/lib .
При работе с gcc от
sunfreeware .com может
возникнуть множество
неприятностей. Во избежание
проблем необходимо
перекомпилировать gcc и бинарные
инструментальные программы GNU в
той системе, где вы собираетесь их
использовать.
Получение нижеследующей ошибки
при компиляции MySQL компилятором
gcc означает, что
gcc не сконфигурирован
под вашу версию Solaris:
shell> gcc -O3 -g -O2 -DDBUG_OFF -o thr_alarm ...
./thr_alarm.c: In function `signal_hand':
./thr_alarm.c:556: too many arguments to function `sigwait'
В этом случае нужно взять самую
свежую версию gcc и
скомпилировать ее установленным
gcc -компилятором! Почти
все бинарные версии gcc
(по крайней мере для Solaris 2.5)
содержат старые, непригодные к
использованию включаемые файлы,
которые портят все программы,
использующие потоки (а возможно, и
другие программы)!
В Solaris не обеспечиваются
статические версии всех системных
библиотек (libpthreads и
libdl ), поэтому
компилировать MySQL с опцией
-static нельзя. При попытке
такой компиляции вы получите одно
из приведенных ниже сообщений об
ошибке:
ld: fatal: library -ldl: not found
или
undefined reference to `dlopen'
или
cannot find -lrt
Если слишком много процессов
одновременно пытаются установить
соединение с mysqld , то в
файле протокола MySQL появится
следующее сообщение об ошибке:
Error in accept: Protocol error
Для решения этой проблемы можно
попытаться запустить сервер с
опцией --set-variable back_log=50 .
Внимание: --set-variable не
используется в MySQL 4.0. Просто
используйте --back_log=50 . See
Раздел 4.1.1, «Параметры командной строки
mysqld ».
Если вы линкуете собственный
MySQL-клиент, то при попытке его
запустить может выдаваться
следующее сообщение об ошибке:
ld.so.1: ./my: fatal: libmysqlclient.so.#:
open failed: No such file or directory
Проблему можно решить одним из
следующих способов:
Линковать клиент со следующими
опциями (вместо -Lpath ):
-Wl,r/полный-путь-к-libmysqlclient.so .
Скопировать libmysqclient.so
в /usr/lib .
Перед запуском своего клиента
добавить путь к каталогу, в
котором находится
libmysqclient.so , к
переменной окружения
LD_RUN_PATH .
Если вы столкнулись с проблемами
конфигурирования, пытаясь
линковать с опцией -lz и у
вас не установлена zlib ,
существует два варианта:
Если вы хотите иметь возможность
использовать протокол
взаимодействия со сжатием,
необходимо получить и
установить zlib с ftp.gnu.org.
Сконфигурировать с
--with-named-z-libs=no .
Если при использовании
gcc вы столкнулись с
проблемами загрузки UDF-функций в
MySQL, попробуйте добавить
-lgcc к строке, отвечающей
за линкование UDF-функций.
Для того чтобы MySQL-сервер стартовал
автоматически, можно скопировать
support-files/mysql.server в
/etc/init.d и создать на него
символическую ссылку
/etc/rc3.d/S99mysql.server .
Поскольку Solaris не поддерживает
файлы образа памяти для
приложений, использующих
setuid() , невозможно
получить файл образа памяти
программы mysqld при
использовании опции --user .
2.6.3.1. Примечания к Solaris 2.7/2.8
На Solaris 2.7 и 2.8 можно нормально
использовать бинарные файлы для
Solaris 2.6. Большинство вопросов по
работе с Solaris 2.6 относятся также и
к Solaris 2.7 и 2.8.
Необходимо отметить, что MySQL
версии 3.23.4 и последующих может
автоматически определять новые
версии Solaris и избегать описанных
ниже проблем!
В Solaris 2.7/2.8 имеются некоторые
ошибки во включаемых файлах. При
использовании gcc вы можете
получить следующие сообщения об
ошибках:
/usr/include/widec.h:42: warning: `getwc' redefined
/usr/include/wchar.h:326: warning: this is the location of the previous definition
В этом случае для исправления
ошибки нужно выполнить следующие
действия:
Скопируйте /usr/include/widec.h
в .../lib/gcc-lib/os/gcc-version/include
и измените строку с номером 41,
содержащую:
#if !defined(lint) && !defined(__lint)
на
#if !defined(lint) && !defined(__lint) && !defined(getwc)
Есть и альтернативный вариант -
отредактировать
/usr/include/widec.h
непосредственно на месте. В любом
случае после исправления
необходимо удалить
config.cache и запустить
configure повторно!
Если при запуске make
выдаются сообщения об ошибках
наподобие упомянутых ниже,
причина в том, что программа
configure не обнаружила
файл curses.h (возможно,
из-за ошибок в
/usr/include/widec.h ):
In file included from mysql.cc:50:
/usr/include/term.h:1060: syntax error before `,'
/usr/include/term.h:1081: syntax error before `;'
Решить эту проблему можно одним
из способов:
Конфигурировать с
CFLAGS=-DHAVE_CURSES_H CXXFLAGS=-DHAVE_CURSES_H
./configure (эта запись должна
быть цельной строкой, без
пробелов).
Отредактировать
/usr/include/widec.h , как
описано выше, и перезапустить
configure .
Удалить строку #define
HAVE_TERM из config.h и
запустить make
повторно.
Если редактор связей не может
обнаружить -lz при
линковании вашей клиентской
программы, то проблема, возможно,
заключается в том, что файл
libz.so установлен в
/usr/local/lib . Данную
проблему можно решить любым из
приведенных выше способов:
Добавить /usr/local/lib к
LD_LIBRARY_PATH .
Создать ссылку на
libz.so из
/lib .
Если используется Solaris 8, можно
установить необязательную
библиотеку zlib с CD-диска с
дистрибутивом Solaris 8.
Конфигурировать MySQL с опцией
--with-named-z-libs=no .
2.6.3.2. Примечания к Solaris x86
На Solaris 2.8 на x86-й архитектуре
mysqld аварийно
завершится с сохранением образа
памяти на диске, если он обработан
программой strip .
Если при использовании
gcc или egcs на
Solaris x86 при большой нагрузке вы
столкнетесь с проблемой
аварийного завершения программы
с сохранением образа памяти на
диске, используйте при сборке
команду configure со
следующими параметрами:
CC=gcc CFLAGS="-O3 -fomit-frame-pointer -DHAVE_CURSES_H" \
CXX=gcc \
CXXFLAGS="-O3 -fomit-frame-pointer -felide-constructors -fno-exceptions \
-fno-rtti -DHAVE_CURSES_H" \
./configure --prefix=/usr/local/mysql
Это позволит избежать проблем с
библиотекой libstdc++ и
исключительными ситуациями в C++.
Если приведенные рекомендации не
помогают, соберите версию с
отладочной информацией и
запустите программу с созданием
трассировочного файла или в
отладчике gdb (see
Раздел E.1.3, «Отладка mysqld при помощи gdb»).
В этом разделе находится
информация относительно различных
BSD-систем, а также конкретных
версий этих систем.
2.6.4.1. Примечания к FreeBSD
Для работы Mysql рекомендуется FreeBSD
версий 3.x, поскольку версия с
потоками является намного более
интегрированной.
Простейшим, а поэтому и более
предпочтительным способом
установки является использование
портов mysql-server и
mysql-client из коллекции
портов FreeBSD, которая доступна по
адресу
http://www.freebsd.org/.
Использование этих портов
обеспечивает:
работоспособный MySQL со всеми
возможностями оптимизации,
доступными на данной версии
FreeBSD;
автоматическую конфигурацию и
сборку;
установку скриптов,
запускающих MySQL, в
/usr/local/etc/rc.d ;
возможность получения списка
установленных файлов по
команде pkg_info -L и
удаления их при помощи команды
pkg_delete в случае, если
вы более не нуждаетесь в MySQL на
данной машине.
Рекомендуется использовать
MIT-pthreads на FreeBSD версий 2.x и
собственные потоки для 3.x и более
поздних версий FreeBSD. На некоторых
последних версиях 2.2.x возможно
применение собственных потоков,
но при этом не исключены проблемы
с остановкой mysqld .
Для сборки MySQL в соответствии с
Makefile 'ом необходима
программа GNU make (gmake ).
Прежде чем выполнять сборку MySQL,
следует установить GNU make.
Удостоверьтесь, что используемый
вами сервер имен работает
корректно. В противном случае
возможны задержки или ошибки при
соединении с mysqld .
Убедитесь в корректности записи
localhost в файле
/etc/hosts (при отсутствии
или ошибочности этой записи
возникнут проблемы соединения с
базой). Файл /etc/hosts
должен начинаться с записи:
127.0.0.1 localhost localhost.your.domain
Предлагаемый способ сборки и
установки MySQL на FreeBSD с
использованием gcc
(версии 2.95.2 или более поздней):
CC=gcc CFLAGS="-O2 -fno-strength-reduce" \
CXX=gcc CXXFLAGS="-O2 -fno-rtti -fno-exceptions -felide-constructors \
-fno-strength-reduce" \
./configure --prefix=/usr/local/mysql --enable-assembler
gmake
gmake install
./scripts/mysql_install_db
cd /usr/local/mysql
./bin/mysqld_safe &
Если программа configure
решила использовать MIT-pthreads,
необходимо ознакомится с
примечаниями по MIT-pthreads (see
Раздел 2.3.6, «Замечания по потокам MIT-pthreads»).
Если при выполнении make
install возникла ошибка,
сообщающая о невозможности
нахождения
/usr/include/pthreads (can't find
`/usr/include/pthreads'), это значит, что
configure не определил
необходимость использования
MIT-pthreads. Для исправления данной
ошибки необходимо выполнить
следующие команды:
shell> rm config.cache
shell> ./configure --with-mit-threads
Как известно, в FreeBSD по умолчанию
установлено очень небольшое
значение для количества
одновременно открытых файлов (see
Раздел A.2.16, «Не найден файл (File not found )»). Чтобы
исправить положение, следует
раскомментировать секцию
ulimit -n в скрипте
safe_mysqld или повысить
ограничение для пользователя
mysqld в
/etc/login.conf (не забудьте
перестроить его командой
cap_mkdb
/etc/login.conf ). Помимо
этого, имеет смысл проверить
установку подходящего класса для
этого пользователя в файле
паролей, если не используется
значение по умолчанию (при помощи
chpass mysqld-user-name ). See
Раздел 4.7.2, «safe_mysqld , оболочка
mysqld ».
При наличии значительного объема
оперативной памяти можно
рассмотреть вариант перестройки
ядра, чтобы разрешить MySQL
использовать более чем 512Mб
оперативной памяти. Чтобы
получить больше информации,
обратитесь к option MAXDSIZ в
конфигурационном файле LINT.
В случае возникновения проблем с
текущей датой в MySQL ситуацию может
исправить правильная установка
переменной TZ . See
Приложение F, Переменные окружения.
Для получения безопасной и
устойчивой системы следует
использовать только те ядра
системы FreeBSD, которые обозначены
как -RELEASE .
2.6.4.2. Примечания к NetBSD
Для компиляции на NetBSD необходимо,
чтобы была установлена программа
GNU make . В противном
случае компиляция завершится
аварийно при попытке make
запустить lint на файлах
C++.
2.6.4.3. Примечания к OpenBSD 2.5
На OpenBSD версии 2.5 можно
компилировать MySQL с
использованием собственных
потоков. Необходимо указать
следующие опции:
CFLAGS=-pthread CXXFLAGS=-pthread ./configure -with-mit-threads=no
2.6.4.4. Примечания к OpenBSD 2.8
По сообщениям наших
пользователей, OpenBSD 2.8 содержит
ошибку в реализации потоков,
которая вызывает проблемы с MySQL.
Разработчики OpenBSD устранили эту
ошибку, но к 25 января 2001 года
исправленная версия доступна
только в ветви ``-current''. Симптомы
этой ошибки реализации потоков
следующие: медленный ответ,
высокая загрузка, большая
загрузка процессора и аварийная
остановка программы.
Получение сообщения об ошибке
вроде Error in accept:: Bad file
descriptor или ошибки 9 при
попытке открыть таблицу либо
каталог означает, что вы не
заказали достаточно дескрипторов
файлов для MySQL.
В этом случае попробуйте
запустить safe_mysqld от
имени пользователя root с
опциями:
--user=mysql --open-files-limit=2048
2.6.4.5. Примечания к BSD/OS версий 2.x
Получение приведенной ниже
ошибки при компиляции MySQL
означает, что установленное с
помощью ulimit значение
размера виртуальной памяти
слишком мало:
item_func.h: In method `Item_func_ge::Item_func_ge(const Item_func_ge &)':
item_func.h:28: virtual memory exhausted
make[2]: *** [item_func.o] Error 1
Попробуйте выполнить ulimit -v
80000 и запустить make
еще раз. Если это не поможет, а в
качестве оболочки используется
bash , попробуйте перейти
на csh или sh :
некоторые пользователи BSDI
сообщали нам о проблемах с
bash и ulimit .
Если вы используете gcc ,
то, возможно, необходимо добавить
флаг --with-low-memory при
запуске configure , чтобы
обеспечить возможность
компиляции sql_yacc.cc .
При возникновении проблем с
текущей датой в MySQL может помочь
установка переменной TZ
(see Приложение F, Переменные окружения).
2.6.4.6. Примечания к BSD/OS версий 3.x
Для конфигурирования MySQL следует
использовать следующую команду:
shell> env CXX=shlicc++ CC=shlicc2 \
./configure \
--prefix=/usr/local/mysql \
--localstatedir=/var/mysql \
--without-perl \
--with-unix-socket-path=/var/mysql/mysql.sock
Сработает и следующая командная
строка:
shell> env CC=gcc CXX=gcc CXXFLAGS=-O3 \
./configure \
--prefix=/usr/local/mysql \
--with-unix-socket-path=/var/mysql/mysql.sock
При желании вы можете изменить
местоположение каталогов или
использовать значения по
умолчанию, не определяя никаких
путей.
Если возникнут проблемы с
производительностью при большой
нагрузке, попробуйте при запуске
mysqld использовать опцию
--skip-thread-priority ! Применение
данной опции приведет к тому, что
все потоки будут работать с
одинаковым приоритетом; на BSDI
версии 3.1 это обеспечивало
повышение производительности (по
крайней мере, пока не был
исправлен планировщик потоков).
В случае получения сообщения об
ошибке virtual memory exhausted во
время компиляции попробуйте
выполнить ulimit -v 80000 и
запустить make повторно.
Если это не поможет, а в качестве
оболочки у вас используется
bash , попробуйте перейти
на csh или sh :
некоторые пользователи BSDI
сообщали о проблемах с
bash и ulimit .
2.6.4.7. Примечания к BSD/OS версий 4.x
BSDI версий 4.x содержит ошибку,
имеющую отношение к потокам. Если
вы планируете использовать MySQL на
этой системе, необходимо
предварительно установить все
патчи, относящиеся к реализации
потоков. По крайней мере, должен
быть установлен M400-023.
На некоторых системах BSDI версий 4.x
вы можете столкнуться с
проблемами при использовании
динамических библиотек.
Проявляется это как
невозможность выполнить
какую-либо клиентскую программу,
например mysqladmin . В
данном случае необходимо
переконфигурировать MySQL с
запретом использовать
динамические библиотеки, указав
для скрипта configure опцию
--disable-shared .
Некоторые пользователи сообщали
нам о проблемах на BSDI 4.0.1, которые
проявляются в том, что через
некоторое время после начала
работы mysqld не может
открыть таблицы. Это происходит
потому, что из-за какой-то
системной или библиотечной
ошибки mysqld изменяет
текущий каталог без какого-либо
запроса!
Для решения проблемы необходимо
либо обновить MySQL до версии 3.23.34,
либо после запуска
configure удалить строку
#define HAVE_REALPATH из файла
config.h перед запуском
make .
Отметим, что вышеописанные
действия приведут к
невозможности создать
символическую ссылку из одних
каталогов базы данных на другой
каталог базы данных или
символическую ссылку на таблицу в
другой базе данных на BSDI!
(Создание символической ссылки на
другой диск допускается.)
2.6.5. Примечания к Mac OS X
На Mac OS X 10.x MySQL должен работать без
каких-либо проблем. Для этой
операционной системы нет
необходимости в патчах к pthread!
Это также касается Mac OS X 10.x Server.
Компиляция для серверной
платформы ничем не отличается от
компиляции для клиентской версии.
Однако учтите, что Mac OS X Server
поставляется с предустановленным
MySQL.
See Раздел 2.1.3, «Установка MySQL на MacOS X».
2.6.5.2. Mac OS X Server 1.2 (Rhapsody)
Прежде чем попытаться
отконфигурировать MySQL на сервере
Mac OS X, необходимо установить пакет
pthread , который находится
по адресу
http://www.prnet.de/RegEx/mysql.html.
Наши бинарные файлы для Mac OS X
компилируются на Rhapsody 6.3 со
следующими конфигурационными
параметрами:
CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc \
CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors \
-fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql \
--with-extra-charsets=complex --enable-thread-safe-client \
--enable-local-infile --disable-shared
Возможно, вам понадобится
добавить псевдонимы в файл
ресурсов оболочки - для доступа к
mysql и mysqladmin из
командной строки:
alias mysql '/usr/local/mysql/bin/mysql'
alias mysqladmin '/usr/local/mysql/bin/mysqladmin'
Или же вы можете просто добавить
путь /usr/local/mysql/bin к
переменной окружения
PATH , скажем, путем
добавления в файл
$HOME/.tcshrc :
setenv PATH $PATH:/usr/local/bin
2.6.6. Примечания к другим Unix-системам2.6.6.1. Примечания к бинарному дистрибутиву
HP-UX
Некоторые бинарные поставки MySQL
для HP-UX распространяются как
файлы HP depot и tar. Для использования
файла depot у вас должна быть
установлена версия HP-UX не выше 10.x -
для того, чтобы обеспечить
возможность работы с
HP-инструментарием работы с
depot-файлами.
Версия MySQL для HP была
скомпилирована на сервере HP 9000/8xx
в системе HP-UX 10.20 с использованием
MIT-pthreads. Известно, что она хорошо
работает в этой конфигурации. MySQL
версии 3.22.26 и выше можно также
собрать с использованием
собственных потоков HP.
Другие конфигурации, на которых
возможна работа MySQL:
На следующих конфигурациях MySQL,
скорее всего, работать не будет:
Для установки дистрибутива
используйте одну из
представленных ниже команд; здесь
/path/to/depot - полный путь к
depot-файлу:
Для полной установки, включая
сервер, клиент и инструментарий
разработчика:
shell> /usr/sbin/swinstall -s /path/to/depot mysql.full
Для установки только сервера:
shell> /usr/sbin/swinstall -s /path/to/depot mysql.server
Для установки только
клиентского пакета:
shell> /usr/sbin/swinstall -s /path/to/depot mysql.client
Для установки только
инструментария разработчика:
shell> /usr/sbin/swinstall -s /path/to/depot mysql.developer
depot помещает бинарные исполняемые
файлы и библиотеки в
/opt/mysql , а данные - в
/var/opt/mysql . depot также
создает соответствующие строки в
/etc/init.d и
/etc/rc2.d для
автоматического запуска сервера
при загрузке машины. Очевидно, что
для установки необходимо
обладать правами пользователя
root .
Для установки на HP-UX дистрибутива
tar.gz на машине должен быть
установлен GNU tar .
2.6.6.2. Примечания к HP-UX версии 10.20
При компиляции MySQL на HP-UX
существует пара небольших
проблем. Мы рекомендуем применять
вместо собственного компилятора
HP-UX gcc , потому что код,
созданный gcc , лучше!
Для HP-UX рекомендуется
использование gcc 2.95. Не следует
применять высокие уровни
оптимизации (наподобие -O6),
поскольку на HP-UX это может быть
небезопасно.
Должна работать следующая строка
конфигурации для gcc 2.95:
CFLAGS="-DHPUX -I/opt/dce/include -fpic" \
CXXFLAGS="-DHPUX -I/opt/dce/include -felide-constructors -fno-exceptions \
-fno-rtti" CXX=gcc ./configure --with-pthread \
--with-named-thread-libs='-ldce' --prefix=/usr/local/mysql
--disable-shared
Следующая строка конфигурации
должна работать для gcc 3.1:
CFLAGS="-DHPUX -I/opt/dce/include -O3 -fPIC" CXX=gcc \
CXXFLAGS="-DHPUX -I/opt/dce/include -felide-constructors -fno-exceptions \
-fno-rtti -O3 -fPIC" ./configure --prefix=/usr/local/mysql \
--with-extra-charsets=complex --enable-thread-safe-client \
--enable-local-infile --with-pthread \
--with-named-thread-libs=-ldce --with-lib-ccflags=-fPIC
--disable-shared
2.6.6.3. Примечания к HP-UX версий 11.x
Для HP-UX версий 11.x мы рекомендуем
использовать MySQL не ниже 3.23.15.
Из-за некоторых критических
ошибок в стандартных библиотеках
HP-UX до попытки запуска MySQL на HP-UX 11.0
необходимо установить следующие
патчи:
PHKL_22840 Streams cumulative
PHNE_22397 ARPA cumulative
Применение данных патчей решит
проблему получения
EWOULDBLOCK от recv()
и EBADF от accept()
в потоковых приложениях.
При использовании gcc
2.95.1 в системе, к которой не были
применены патчи, возникнет
ошибка:
In file included from /usr/include/unistd.h:11,
from ../include/global.h:125,
from mysql_priv.h:15,
from item.cc:19:
/usr/include/sys/unistd.h:184: declaration of C function ...
/usr/include/sys/pthread.h:440: previous declaration ...
In file included from item.h:306,
from mysql_priv.h:158,
from item.cc:19:
Проблема заключается в том, что
HP-UX существуют несовместимые
определения функции
pthreads_atfork() .
Конфликтующие прототипы
находятся в
/usr/include/sys/unistd.h :184 и в
/usr/include/sys/pthread.h :440
(подробности приведены ниже).
Одно из возможных решений
заключается в том, чтобы
скопировать
/usr/include/sys/unistd.h в
mysql/include и
отредактировать unistd.h
так, чтобы определение совпадало
с определением из
pthread.h . Ниже приведен
результат работы diff :
183,184c183,184
< extern int pthread_atfork(void (*prepare)(), void (*parent)(),
< void (*child)());
---
> extern int pthread_atfork(void (*prepare)(void), void (*parent)(void),
> void (*child)(void));
После этого должна работать
конфигурационная программа со
следующими параметрами:
CFLAGS="-fomit-frame-pointer -O3 -fpic" CXX=gcc \
CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti -O3" \
./configure --prefix=/usr/local/mysql --disable-shared
Если вы используете MySQL 4.0.5 с
компилятором HP-UX, то вам подойдет
(проверено на cc B.11.11.04):
CC=cc CXX=aCC CFLAGS=+DD64 CXXFLAGS=+DD64 ./configure --with-extra-character-set=complex
Вы можете игнорировать ошибки,
подобные этой:
aCC: warning 901: unknown option: `-3': use +help for online documentation
При получении следующего
сообщения об ошибке при работе
configure
checking for cc option to accept ANSI C... no
configure: error: MySQL requires a ANSI C compiler (and a C++ compiler).
Try gcc. See the Installation chapter in the Reference Manual.
следует удостовериться, что путь
к компилятору K&R не указан
раньше, чем путь к компиляторам
HP-UX C и C++.
Еще одна причина, по которой вы не
сможете скомпилировать MySQL,
заключается в том, что вы забыли
указать флаг +DD64 ,
описанный выше.
2.6.6.4. Примечания к IBM-AIX
В Autoconf пропущено автоматическое
определение xlC , поэтому
при компиляции MySQL следует
задавать команду configure
наподобие следующей (в этом
примере используется компилятор
IBM):
export CC="xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 "
export CXX="xlC_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192"
export CFLAGS="-I /usr/local/include"
export LDFLAGS="-L /usr/local/lib"
export CPPFLAGS=$CFLAGS
export CXXFLAGS=$CFLAGS
./configure --prefix=/usr/local \
--localstatedir=/var/mysql \
--sysconfdir=/etc/mysql \
--sbindir='/usr/local/bin' \
--libexecdir='/usr/local/bin' \
--enable-thread-safe-client \
--enable-large-files
Здесь указаны опции, используемые
для компиляции дистрибутива MySQL,
который находится по адресу
http://www-frec.bull.com/.
Если в приведенных выше строках
конфигурации вы изменяете
-O3 на -O2 ,
следует также удалить опцию
-qstrict (это ограничение
компилятора IBM C).
При использовании gcc
или egcs для компиляции
MySQL следует применять флаг
-fno-exceptions , потому что
обработчик исключительных
ситуаций в
gcc /egcs не
безопасен в реализации потоков!
(Это проверено на egcs 1.1.)
Существуют также некоторые
известные проблемы с ассемблером
IBM, которые могут привести к
генерации неудачного кода при
использовании его с gcc .
Для использования egcs
или gcc 2.95 на AIX мы
рекомендуем следующую строку
конфигурирования:
CC="gcc -pipe -mcpu=power -Wa,-many" \
CXX="gcc -pipe -mcpu=power -Wa,-many" \
CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti" \
./configure --prefix=/usr/local/mysql --with-low-memory
Для того чтобы компиляция была
успешной, здесь необходимо
указывать ключи
-Wa ,-many . В IBM
известно о существовании данной
проблемы, но ее специалисты не
торопятся исправлять ошибку,
поскольку существует способ
обхода. Нам неизвестно,
необходимо ли использование
-fno-exceptions с gcc
2.95, но поскольку в MySQL нет
обработчика исключительных
ситуаций, а эта опция
способствует созданию более
быстрого кода, мы рекомендуем
всегда использовать ее с
egcs /gcc .
В случае возникновения проблем в
программах на ассемблере
необходимо привести -mcpu=xxx в
соответствие со своим
процессором. Обычно достаточно
использовать power2, power или powerpc, но,
возможно, необходимо будет
указать 604 или 604e. Хотя это и не
приветствуется, но использование
"power" будет безопасным почти
всегда, даже на power2-машинах.
Если вы не знаете, какой у вас
процессор, следует запустить uname
-m. Данная команда возвращает
строку наподобие "000514676700", формат
которой xxyyyyyymmss, где xx и ss всегда 0,
yyyyyy - уникальный идентификатор
системы и mm - идентификатор
процессора Planar. Карта этих
значений находится по адресу
http://publib.boulder.ibm.com/doc_link/en_US/a_doc_lib/cmds/aixcmds5/uname.htm.
В соответствии с данной картой
можно узнать тип и модель машины,
а уже по ним -определить тип
процессора.
Возникновение проблем с
сигналами (MySQL неожиданно умирает
при большой нагрузке) может
означать, что вы столкнулись с
ошибкой операционной системы в
работе с потоками и сигналами. В
этом случае можно запретить MySQL
использовать сигналы при помощи
следующей строки конфигурации:
shell> CFLAGS=-DDONT_USE_THR_ALARM CXX=gcc \
CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti \
-DDONT_USE_THR_ALARM" \
./configure --prefix=/usr/local/mysql --with-debug --with-low-memory
Это не повлияет на
производительность MySQL, но
приведет к побочному эффекту,
состоящему в невозможности
оборвать работу клиента со спящим
соединением при помощи команд
mysqladmin kill или mysqladmin
shutdown . Вместо этого клиент
завершит работу при попытке
послать следующую команду.
На некоторых версиях AIX
линкование с libbind.a
приводит к тому, что getservbyname
вызывает аварийную остановку
программы с сохранением образа
памяти на диск (core dump). Это ошибка
AIX и о ней следует сообщить в IBM.
Для AIX 4.2.1 и gcc необходимо сделать
следующие изменения:
После конфигурации следует
отредактировать файлы
config.h и
include/my_config.h , а также
изменить строку, содержащую
#define HAVE_SNPRINTF 1
на
#undef HAVE_SNPRINTF
И напоследок необходимо в файле
mysqld.cc добавить
прототип функции initgoups .
#ifdef _AIX41
extern "C" int initgroups(const char *,int);
#endif
Если вам нужно выделить много
памяти процессу mysqld, недостаточно
указать ulimit -d unlimited . Вам
также потребуется в
mysqld_safe установить
что-то вроде:
export LDR_CNTRL='MAXDATA=0x80000000'
Больше информации об
использовании большого
количества памяти - здесь:
http://publib16.boulder.ibm.com/pseries/en_US/aixprggd/genprogc/lrg_prg_support.htm.
2.6.6.5. Примечания к SunOS 4
На SunOS 4 для компиляции MySQL
необходимо использовать MIT-pthreads,
что, в свою очередь, влечет за
собой необходимость в GNU
make .
На некоторых SunOS 4 возникают
проблемы с динамическими
библиотеками и libtool . Во
избежание этих проблем можно
использовать приведенную ниже
строку configure :
shell> ./configure --disable-shared --with-mysqld-ldflags=-all-static
При компиляции readline
могут выдаваться предупреждения
о дублирующихся определениях. На
них можно не обращать внимания.
При компиляции mysqld
возникают предупреждения об
implicit declaration of function . На
них также можно не обращать
внимания.
2.6.6.6. Примечания к Alpha-DEC-UNIX (Tru64)
При использовании egcs на Digital Unix
необходимо обновить свою версию
до gcc 2.95.2, поскольку известно о
нескольких серьезных ошибках в egcs
для DEC!
В документации рекомендуется для
компиляции потоковых программ
под Digital Unix использовать опцию
-pthread для cc и
cxx , а также библиотеки
-lmach -lexc (в
дополнение к -lpthread ).
Запускать configure нужно в
следующей форме:
CC="cc -pthread" CXX="cxx -pthread -O" \
./configure --with-named-thread-libs="-lpthread -lmach -lexc -lc"
При компиляции mysqld
может быть выдано несколько
предупреждений наподобие
следующих:
mysqld.cc: In function void handle_connections()':
mysqld.cc:626: passing long unsigned int *' as argument 3 of
accept(int,sockadddr *, int *)'
На них можно не обращать внимания.
Они возникают из-за того, что
configure может
обнаруживать только ошибки, но не
предупреждения.
При запуске сервера
непосредственно из командной
строки могут возникнуть проблемы
с тем, что он прекращает работу
при выходе из системы (при выходе
из системы все процессы,
запущенные вами во время работы,
получают сигнал SIGHUP ).
Если такое происходит, следует
запускать сервер командой:
shell> nohup mysqld [options] &
При указании nohup
следующая за ней команда будет
игнорировать все сигналы
SIGHUP , посланные
терминалом. В качестве
альтернативного варианта можно
запускать сервер командой
safe_mysqld , которая при
запуске mysqld выполнит
вызов nohup вместо вас (see
Раздел 4.7.2, «safe_mysqld , оболочка
mysqld »).
Если вы столкнулись с проблемами
компиляции mysys/get_opt.c ,
следует просто удалить строку
#define _NO_PROTO в начале
этого файла!
Для компилятора CC от Compaq
используйте следующий код:
CC="cc -pthread"
CFLAGS="-O4 -ansi_alias -ansi_args -fast -inline speed all -arch host"
CXX="cxx -pthread"
CXXFLAGS="-O4 -ansi_alias -ansi_args -fast -inline speed all -arch host \
-noexceptions -nortti"
export CC CFLAGS CXX CXXFLAGS
./configure \
--prefix=/usr/local/mysql \
--with-low-memory \
--enable-large-files \
--enable-shared=yes \
--with-named-thread-libs="-lpthread -lmach -lexc -lc"
gnumake
В случае возникновения проблем с
libtool при компиляции с
динамическими библиотеками (как
показано выше), при линковании
mysql вы можете избежать
этих проблем с помощью:
cd mysql
/bin/sh ../libtool --mode=link cxx -pthread -O3 -DDBUG_OFF \
-O4 -ansi_alias -ansi_args -fast -inline speed \
-speculate all \ -arch host -DUNDEF_HAVE_GETHOSTBYNAME_R \
-o mysql mysql.o readline.o sql_string.o completion_hash.o \
../readline/libreadline.a -lcurses \
../libmysql/.libs/libmysqlclient.so -lm
cd ..
gnumake
gnumake install
scripts/mysql_install_db
2.6.6.7. Примечания к Alpha-DEC-OSF/1
В случае проблем компиляции при
установленных DEC CC и
gcc попробуйте запустить
configure следующим
образом:
CC=cc CFLAGS=-O CXX=gcc CXXFLAGS=-O3 \
./configure --prefix=/usr/local/mysql
Если возникнут проблемы с файлом
c_asm.h , можно создать и
использовать ``фиктивный''
c_asm.h при помощи
следующих команд:
touch include/c_asm.h
CC=gcc CFLAGS=-I./include \
CXX=gcc CXXFLAGS=-O3 \
./configure --prefix=/usr/local/mysql
Отметим, что перечисленные ниже
проблемы с программой ld
могут быть решены путем загрузки
последнего набора патчей от DEC
(Compaq) с
http://ftp.support.compaq.com/public/unix/.
При использовании OSF/1 4.0D и
компилятора DEC C V5.6-071 на Digital Unix V4.0
(Rev. 878) компилятор начинает вести
себя странно (неопределенные
asm-символы). Кроме того,
/bin/ld также, похоже,
содержит ошибки (проблемы с
ошибками _exit undefined
возникающими при линковании
mysqld ). На этих системах
нам удалось организовать
компиляцию MySQL с помощью
следующей строки configure ,
заменив /bin/ld
аналогичным файлом из версии OSF
4.0C:
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
С Digital-компилятором "C++ V6.1-029"
должно работать:
CC=cc -pthread
CFLAGS=-O4 -ansi_alias -ansi_args -fast -inline speed -speculate all \
-arch host
CXX=cxx -pthread
CXXFLAGS=-O4 -ansi_alias -ansi_args -fast -inline speed -speculate all \
-arch host -noexceptions -nortti
export CC CFLAGS CXX CXXFLAGS
./configure --prefix=/usr/mysql/mysql
--with-mysqld-ldflags=-all-static \
--disable-shared --with-named-thread-libs="-lmach -lexc -lc"
В некоторых версиях OSF/1 испорчена
функция alloca() . Ситуацию
можно поправить удалением из
файла config.h строки, в
которой определяется
HAVE_ALLOCA .
Может также существовать
некорректный прототип для
функции alloca() в
/usr/include/alloca.h .
Предупреждение, вызванное этим,
можно игнорировать.
configure будет
автоматически использовать
следующие потоковые библиотеки:
--with-named-thread-libs="-lpthread -lmach -lexc
-lc" .
При использовании gcc можно
попробовать запустить
configure следующей
строкой:
shell> CFLAGS=-D_PTHREAD_USE_D4 CXX=gcc CXXFLAGS=-O3 ./configure ...
Возникновение проблем с
сигналами (MySQL неожиданно
аварийно завершает работу при
большой нагрузке), может означать,
что вы обнаружили ошибку при
работе операционной системы с
потоками и сигналами. В данном
случае можно запретить MySQL
использовать сигналы путем
конфигурации его следующим
образом:
shell> CFLAGS=-DDONT_USE_THR_ALARM \
CXXFLAGS=-DDONT_USE_THR_ALARM \
./configure ...
Это не повлияет на
производительность MySQL, но
приведет к побочному эффекту,
который проявляется как
невозможность оборвать работу
клиента со спящим соединением
командами mysqladmin kill или
mysqladmin shutdown . Вместо
этого клиент завершит работу при
попытке послать следующую
команду.
При использовании gcc
2.95.2 может возникать следующая
ошибка компиляции:
sql_acl.cc:1456: Internal compiler error in `scan_region', at except.c:2566
Please submit a full bug report.
Чтобы выйти из положения в этом
случае, следует перейти в каталог
sql и выполнить
последнюю строку gcc
(просто выделите ее, например,
мышкой и вставьте в терминал),
изменив в ней -O3 на
-O0 (или добавьте
-O0 непосредственно
после gcc , если у вас в
строке компиляции отсутствует
какая-либо опция -O ).
После выполнения указанных
действий вернитесь в каталог
верхнего уровня и запустите
make повторно.
2.6.6.8. Примечания к SGI Irix
При использовании Irix 6.5.3 или выше
mysqld может создавать
потоки только в случае, если он
запущен от имени пользователя с
привилегиями CAP_SCHED_MGT
(подобными тем, что у root )
или если такие привилегии даются
серверу mysqld следующей
командой:
shell> chcap "CAP_SCHED_MGT+epi" /opt/mysql/libexec/mysqld
Возможно, вам придется убрать
некоторые определения из
config.h . Это делается
после выполнения configure ,
но до компиляции.
В некоторых реализациях Irix
неправильно реализована функция
alloca() . Если сервер
mysqld аварийно завершает
работу при выполнении некоторых
выражений SELECT , удалите
из config.h строки, в
которых определяются
HAVE_ALLOC и
HAVE_ALLOCA_H . Если не
работает mysqladmin create ,
удалите из config.h
строку, определяющую
HAVE_READDIR_R . Можно также
удалить строку, содержащую
HAVE_TERM_H .
SGI рекомендует установить все
патчи, как указано на странице
http://support.sgi.com/surfzone/patches/patchset/6.2_indigo.rps.html.
Вам следует, как минимум,
установить последние обновления
(rollup) ядра, последние обновления
rld и последние
обновления libc .
Для поддержки pthreads обязательно
следует установить все патчи POSIX
со страницы:
http://support.sgi.com/surfzone/patches/patchset/6.2_posix.rps.html
Если при компиляции
mysql.cc вы получили
сообщение об ошибке наподобие:
"/usr/include/curses.h", line 82: error(1084): invalid combination of type
то необходимо выполнить
следующие команды в каталоге
верхнего уровня дерева каталогов
исходных текстов MySQL:
shell> extra/replace bool curses_bool < /usr/include/curses.h \
> include/curses.h
shell> make
Мы получали также сообщения о
проблемах управления. Если
выполняется только один поток, то
работа идет очень медленно.
Однако если запустить еще одну
программу-клиент, то можно
получить ускорение в несколько
раз (от двукратного до
десятикратного соответственно) и
для других потоков. Причины
описанной проблемы с потоками в
Irix пока неясны; возможно, вам
удастся найти временное решение,
пока она не будет решена.
При компиляции с помощью
gcc можно использовать
следующую команду
configure :
CC=gcc CXX=gcc CXXFLAGS=-O3 \
./configure --prefix=/usr/local/mysql --enable-thread-safe-client \
--with-named-thread-libs=-lpthread
Сообщают, что для Irix 6.5.11 с
собственными Irix C и C++
компиляторами версии 7.3.1.2, должно
работать:
CC=cc CXX=CC CFLAGS='-O3 -n32 -TARG:platform=IP22 -I/usr/local/include \
-L/usr/local/lib' CXXFLAGS='-O3 -n32 -TARG:platform=IP22 \
-I/usr/local/include -L/usr/local/lib' ./configure \
--prefix=/usr/local/mysql --with-innodb --with-berkeley-db \
--with-libwrap=/usr/local \
--with-named-curses-libs=/usr/local/lib/libncurses.a
2.6.6.9. Примечания к Caldera (SCO)
В настоящее время пакет
тестировался только на системах
``sco3.2v5.0.4'' и ``sco3.2v5.0.5''. Заметный
прогресс отмечается в отношении
пакета на ``sco3.2v4.2''.
В настоящее время в качестве
компилятора под OpenServer мы
рекомендуем gcc 2.95.2. Используя его,
можно скомпилировать MySQL при
помощи следующей строки:
CC=gcc CXX=gcc ./configure ... (опции)
На OpenServer 5.0.X необходимо
использовать gcc-2.95.2p1 или более
свежую версию от Skunkware -
http://www.caldera.com/skunkware/
и выбрать пакет для OpenServer или
получить его по ftp по адресу
ftp2.caldera.com в каталоге
pub/skunkware/osr5/devtools/gcc.
Следует использовать
портированную версию GCC 2.5.x для
этого продукта и систему Development.
Они необходимы для данной
версии Caldera (SCO) Unix. Использовать
просто систему GCC Dev нельзя.
Необходимо загрузить пакет FSU
Pthreads и установить его. Его можно
найти по адресу
http://www.cs.wustl.edu/~schmidt/ACE_wrappers/FSU-threads.tar.gz.
Можно также получить уже
скомпилированный пакет на
http://www.mysql.com/Downloads/SCO/FSU-threads-3.5c.tar.gz.
FSU Pthreads могут быть
скомпилированы на Caldera (SCO) Unix 4.2 c
tcpip. На OpenServer 3.0 или Open Desktop 3.0 (OS 3.0
ODT 3.0) с использованием Caldera (SCO)
Development System вам понадобится
хороший пакет GCC 2.5.x ODT или OS 3.0.
Однако при отсутствии хорошо
портированной версии возникнет
масса проблем. Для портирования
этой программы требуется
система SCO Unix Development. Без нее у
вас не будет необходимых
библиотек и редактора связей.
Для сборки FSU Pthreads в своей
системе нужно выполнить
следующие действия:
Запустите ./configure в
каталоге threads/src и
выберите опцию SCO OpenServer. Эта
команда скопирует
Makefile.SCO5 в
Makefile .
Запустите make .
Для установки в каталог по
умолчанию - /usr/include
войдите в систему с правами
пользователя root ,
перейдите в каталог
thread/src и запустите
make install .
Не забудьте использовать GNU
make при сборке MySQL.
При запуске safe_mysqld не
с правами пользователя
root вы получите
разрешение открывать
одновременно только 110 файлов
на процесс (это значение
установлено по умолчанию).
mysqld сообщит об этом в
файле протокола.
На SCO 3.2V5.0.5 вы должны
использовать FSU Pthreads версии 3.5c
или выше, а также gcc 2.95.2 или
более новую версию! Приведенная
ниже команда configure
должна выполняться корректно:
shell> ./configure --prefix=/usr/local/mysql --disable-shared
На SCO 3.2V4.2 следует использовать
FSU Pthreads версии 3.5c или выше.
Приведенная ниже команда
configure должна
выполняться корректно:
shell> CFLAGS="-D_XOPEN_XPG4" CXX=gcc CXXFLAGS="-D_XOPEN_XPG4" \
./configure \
--prefix=/usr/local/mysql \
--with-named-thread-libs="-lgthreads -lsocket -lgen -lgthreads" \
--with-named-curses-libs="-lcurses"
У вас могут возникнуть проблемы
с некоторыми включаемыми
файлами. В таком случае новые,
специфические для SCO включаемые
файлы можно найти по адресу
http://www.mysql.com/Downloads/SCO/SCO-3.2v4.2-includes.tar.gz.
Этот архив следует распаковать
в каталог дерева исходных
текстов MySQL с именем
include
Замечания по разработке под Caldera
(SCO):
MySQL должен автоматически
обнаруживать FSU Pthreads и
линковать mysqld с
использованием -lgthreads -lsocket
-lgthreads .
Библиотеки разработки в Caldera (SCO)
реентрантны в FSU Pthreads.
Специалисты Caldera утверждают,
что библиотечные функции Caldera
реентрантны, поэтому они должны
быть реентрантны с FSU Pthreads. FSU
Pthreads на OpenServer пытаются
использовать SCO-схему, чтобы
создать реентрантные
библиотеки.
FSU Pthreads (по крайней мере версия
на http://www.mysql.com/) поставляется
как линкованная с GNU
malloc . При
возникновении проблем с
использованием памяти,
убедитесь, что gmalloc.o
включен в libgthreads.a и
libgthreads.so .
В FSU Pthreads используют pthread
следующие системные вызовы:
read() , write() ,
getmsg() , connect() ,
accept() , select() ,
and wait() .
CSSA-2001-SCO.35.2 (в списках заказов
патч упоминается как патч по
системе безопасности
erg711905-dscr_remap) (версия 2.0.0) портит
FSU-потоки и вызывает
неустойчивую работу
mysqld . Если вы
собираетесь запускать
mysqld на машине с
установленным OpenServer 5.0.6, этот
патч применять не следует.
Если необходимо установить DBI на
Caldera (SCO), следует отредактировать
Makefile в DBI-xxx и каждом
подкаталоге.
Для приведенного ниже кода
подразумевается использование gcc
2.95.2 или более новой версии:
СТАРЫЙ: НОВЫЙ:
CC = cc CC = gcc
CCCDLFLAGS = -KPIC -W1,-Bexport CCCDLFLAGS = -fpic
CCDLFLAGS = -wl,-Bexport CCDLFLAGS =
LD = ld LD = gcc -G -fpic
LDDLFLAGS = -G -L/usr/local/lib LDDLFLAGS = -L/usr/local/lib
LDFLAGS = -belf -L/usr/local/lib LDFLAGS = -L/usr/local/lib
LD = ld LD = gcc -G -fpic
OPTIMISE = -Od OPTIMISE = -O1
OLD:
CCCFLAGS = -belf -dy -w0 -U M_XENIX -DPERL_SCO5 -I/usr/local/include
НОВЫЙ:
CCFLAGS = -U M_XENIX -DPERL_SCO5 -I/usr/local/include
Это вызвано тем, что
dynaloader из Perl не
загружает DBI-модулей, если они
скомпилированы компиляторами
icc или cc .
Perl будет работать лучше, если его
скомпилировать компилятором
cc .
2.6.6.10. Примечания к Caldera (SCO) Unixware Version 7.0
Вы должны использовать MySQL версий
не ниже 3.22.13, поскольку в этой
версии исправлены некоторые
проблемы, связанные с
переносимостью под Unixware.
Нам удалось скомпилировать MySQL
следующей командой
configure на Unixware версии 7.0.1:
CC=cc CXX=CC ./configure --prefix=/usr/local/mysql
Если вы хотите использовать
gcc , необходимо
использовать gcc версии
2.95.2 или новее.
Caldera поставляет libsocket.so.2 с
ftp://stage.caldera.com/pub/security/tools
для исправлений безопасности в
более ранних, чем OSR506, системах.
Кроме того, исправление telnetd на
ftp://stage.caldera.com/pub/security/openserver/CSSA-2001-SCO.10/
предназначено и для libsocket.so.2, и для
libresolv.so.1. Там же находятся
инструкции для установки на более
ранние, чем OSR506, системы.
Устанавливать вышеупомянутые
патчи лучше до попытки
компиляции/использования MySQL.
В MySQL используется достаточно
много открытых файлов. Поэтому в
свой файл CONFIG.SYS вам
нужно добавить код вроде
приведенного ниже:
SET EMXOPT=-c -n -h1024
В противном случае вы можете
столкнуться со следующей ошибкой:
File 'xxxx' not found (Errcode: 24)
При использовании MySQL с OS/2 Warp 3
требуется FixPack 29 или выше, а с OS/2 Warp 4
-FixPack 4 или выше. Это требуется для
библиотеки Pthreads. MySQL может быть
установлен на файловой системе,
поддерживающей длинные имена,
такой как HPFS, FAT32, и т.п.
Скрипт INSTALL.CMD должен
запускаться из собственной
оболочки OS/2 - CMD.EXE ; и
может не работать в заменяющих ее
оболочках, таких как
4OS2.EXE .
Скрипт scripts/mysql-install-db
был переименован. Теперь он
называется install .cmd и
является REXX-скриптом, который
задает установки безопасности MySQL
по умолчанию и создает иконку WorkPlace
Shell для MySQL.
Поддержка динамических модулей
скомпилирована, но полностью не
проверена. Динамические модули
должны быть скомпилированы с
использованием динамической
библиотеки Pthreads.
gcc -Zdll -Zmt -Zcrtdll=pthrdrtl -I../include -I../regex -I.. \
-o example udf_example.cc -L../lib -lmysqlclient udf_example.def
mv example.dll example.udf
Примечание: в
соответствии с ограничениями OS/2
размер основной части имен модулей
UDF не должен превышать 8-ми
символов. Модули хранятся в
каталоге /mysql2/udf ; скрипт
safe-mysqld.cmd помещает путь
к этому каталогу в переменную
окружения BEGINLIBPATH . При
использовании UDF-модулей
определенные расширения
игнорируются - они все принимаются
как .udf . Например, в Unix
динамический модуль может иметь
имя example.so и функция из
него будет загружаться следующим
образом:
mysql> CREATE FUNCTION metaphon RETURNS STRING SONAME "example.so";
В OS/2 модуль будет иметь имя
example.udf , но вы не должны
определять расширение модуля:
mysql> CREATE FUNCTION metaphon RETURNS STRING SONAME "example";
Мы заинтересованы в том, чтобы MySQL
работал в BeOS, но, к сожалению, среди
нас нет никого, кто знал бы BeOS или
обладал временем для создания
портированной версии.
Если найдутся желающие создать
портированную версию, то мы готовы
оказать им помощь в решении любых
технических вопросов, которые
могут возникнуть при создании
портированной версии.
У нас было предварительное общение
с некоторыми разработчиками BeOS,
утверждавших, что на 80% создана
портированная версия MySQL под BeOS,
однако уже на протяжении
длительного времени мы не получали
от них никаких известий.
2.6.9. Примечания к Novell NetWare
Мы заинтересованы в том, чтобы MySQL
работал на Novell NetWare, но, к сожалению,
среди нас нет никого, кто
достаточно хорошо разбирался бы в
NetWare или обладал временем для
создания портированной версии.
Мы хотели бы найти желающих
создать портированную версию и
готовы помочь им в решении любых
технических вопросов, которые
могут возникнуть при работе над
ней.
2.7. Замечания по установке Perl2.7.1. Установка Perl на Unix
Поддержка Perl для MySQL
обеспечивается средствами
клиентского интерфейса
DBI /DBD . See
Раздел 8.2, «Интерфейс Perl API для MySQL». Для клиентского кода
Perl DBD /DBI
требуется версия Perl 5.004 или выше.
При использовании более старой
версии Perl данный интерфейс
не будет
работать.
Для поддержки Perl в MySQL также
требуется, чтобы была установлена
программная поддержка клиентов
MySQL. Если вы установили MySQL из
файлов RPM, то клиентские программы
находятся в RPM-пакете
MySQL-client , а их программная
поддержка - в RPM-пакете
MySQL-devel . Убедитесь, что у
вас установлена последняя версия
RPM.
С версии 3.22.8 поддержка Perl
поставляется отдельно от
основного дистрибутива MySQL. Если вы
хотите установить поддержку Perl, то
необходимые файлы можно получить с
http://www.mysql.com/downloads/api-dbi.html.
Дистрибутивы Perl поставляются как
сжатые tar-архивы с именами
наподобие MODULE-VERSION.tar.gz ,
где MODULE - имя модуля и
VERSION - номер версии.
Необходимо взять дистрибутивы
Data-Dumper , DBI и
Msql-Mysql-modules и установить
их в указанном порядке. Процедура
установки приведена ниже.
Показанный пример приведен для
модуля Data-Dumper , но сама
процедура одинакова для всех трех
дистрибутивов:
Распакуйте дистрибутив в
текущем каталоге:
shell> gunzip < Data-Dumper-VERSION.tar.gz | tar xvf -
Эта команда создает каталог с
именем Data-Dumper-VERSION .
Перейдите в каталог, куда
распаковался дистрибутив:
shell> cd Data-Dumper-VERSION
Соберите дистрибутив и
скомпилируйте:
shell> perl Makefile.PL
shell> make
shell> make test
shell> make install
Команда make test является
важной, поскольку она проверяет,
работает ли модуль. Следует
учитывать, что если эта команда
выполняется во время установки
Msql-Mysql-modules для проверки
кода интерфейса, то сервер MySQL при
этом должен работать, или же данный
тест потерпит неудачу.
Каждый раз при установке нового
выпуска MySQL полезно создать заново
и переустановить дистрибутив
Msql-Mysql-modules , особенно если
замечаются такие симптомы, как
смерть скриптов DBI после
модернизации MySQL (имеется в виду
coredump).
Если вы не обладаете правами
установки модулей Perl в системном
каталоге или локальных модулей Perl,
то для вас окажется полезной
следующая ссылка:
http://www.iserver.com/support/contrib/perl5/modules.html
Следует смотреть в рубрике
Installing New Modules that Require Locally Installed
Modules .
2.7.2. Установка ActiveState Perl на Windows
Для установки модуля DBD
для MySQL под ActiveState Perl на Windows
необходимо выполнить следующие
действия:
Получить ActiveState Perl с
http://www.activestate.com/Products/ActivePerl/
и установить его.
Открыть оболочку DOS.
Если это необходимо, то
установить переменную HTTP_proxy.
Например, можно попытаться
сделать следующее:
set HTTP_proxy=my.proxy.com:3128
Запустить программу PPM:
C:\> c:\perl\bin\ppm.pl
Установить DBI , если
этого еще не сделано:
ppm> install DBI
Если все прошло успешно, то
запустить следующую команду:
install \
ftp://ftp.de.uu.net/pub/CPAN/authors/id/JWIED/DBD-mysql-1.2212.x86.ppd
Эти команды должны работать по
крайней мере с версией ActiveState Perl 5.6.
Если приведенные выше команды у
вас не работают, то вместо этого
необходимо установить драйвер
MyODBC и подключить сервер
MySQL через ODBC:
use DBI;
$dbh= DBI->connect("DBI:ODBC:$dsn","$user","$password") ||
die "Got error $DBI::errstr when connecting to $dsn\n";
2.7.3. Установка дистрибутива Perl для MySQL на
Windows
Дистрибутив Perl для MySQL содержит
DBI , DBD:MySQL и
DBD:ODBC .
Загрузите дистрибутив Perl для
Windows с http://www.mysql.com/downloads/os-win32.html.
Разархивируйте дистрибутив в
C: , в результате чего вы
получите каталог
C:\PERL .
Добавьте в ваш путь каталог
C:\PERL\BIN .
Добавьте в ваш путь каталог
C:\PERL\BIN\MSWIN32-x86-thread или
C:\PERL\BIN\MSWIN32-x86 .
Протестируйте работу
perl , выполнив команду
perl -v в оболочке DOS.
2.7.4. Проблемы использования интерфейса Perl
DBI /DBD
Если Perl сообщает, что не может
найти модуль ../mysql/mysql.so ,
то проблема, возможно, заключается
в том, что Perl не может найти
динамическую библиотеку
libmysqlclient.so .
Эту проблему можно устранить,
используя любой из следующих
методов:
Для сборки дистрибутива
Msql-Mysql-modules используйте
perl Makefile.PL -static -config
вместо perl Makefile.PL .
Скопируйте libmysqlclient.so
в каталог, где находятся другие
динамические библиотеки
(/usr/lib или
/lib ).
Под Linux можно добавить путь к
каталогу, где находится
libmysqlclient.so в файл
/etc/ld.so.conf .
Добавьте каталог, в котором
находится libmysqlclient.so ,
в переменную окружения
LD_RUN_PATH .
Если вы получаете от
DBD-mysql представленные
ниже ошибки, то, скорее всего, у вас
используется компилятор
gcc (или старый бинарный
код, скомпилированный с
gcc ):
/usr/bin/perl: can't resolve symbol '__moddi3'
/usr/bin/perl: can't resolve symbol '__divdi3'
Добавьте в команду линкования при
сборке библиотеки mysql.so ,
-L/usr/lib/gcc-lib/... -lgcc (нужно
проверить вывод из make
для mysql.so при компиляции
клиента Perl). Опция -L
должна указывать путь к каталогу,
где находится libgcc.a в
вашей системе.
Еще одна причина появления ошибок
может заключаться в том, что оба
модуля - Perl и MySQL не скомпилированы
вместе компилятором gcc . В
этом случае данное несоответствие
можно устранить, скомпилировав оба
модуля компилятором gcc .
Если при выполнении тестов вы
получаете от модуля
Msql-Mysql-modules следующие
ошибки:
t/00base............install_driver(mysql) failed:
Can't load '../blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql:
../blib/arch/auto/DBD/mysql/mysql.so: undefined symbol:
uncompress at /usr/lib/perl5/5.00503/i586-linux/DynaLoader.pm line 169,
то это означает, что в строку
линкования необходимо включить
библиотеку сжатия -lz . Для
этого необходимо внести следующее
изменение в файл
lib/DBD/mysql/Install.pm :
$sysliblist .= " -lm";
на
$sysliblist .= " -lm -lz";
После этого необходимо выполнить
команду make realclean и затем
повторить процесс инсталляции
сначала.
Если вы хотите использовать эти
модули в системе, которая не
поддерживает динамического
линкования (вроде Caldera/SCO), то можно
сгенерировать статическую версию
Perl, включающую DBI и
DBD-mysql . Она будет работать
следующим образом: нужно создать
версию Perl, слинкованную с кодом
DBI , и установить ее
поверх текущего Perl. Затем эта
версия используется для сборки
версии Perl, которая дополнительно
включает слинкованный код DBD,
и устанавливается уже
она.
В операционной системе Caldera (SCO)
необходимо иметь следующий набор
переменных окружения:
shell> LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/progressive/lib
или
shell> LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:\
/usr/progressive/lib:/usr/skunk/lib
shell> LIBPATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:\
/usr/progressive/lib:/usr/skunk/lib
shell> MANPATH=scohelp:/usr/man:/usr/local1/man:/usr/local/man:\
/usr/skunk/man:
Вначале следует создать модуль Perl,
включающий статически
слинкованный DBI . Это
делается путем выполнения
следующих команд в каталоге, где
располагается дистрибутив
DBI :
shell> perl Makefile.PL -static -config
shell> make
shell> make install
shell> make perl
Затем необходимо установить новый
модуль Perl. Вывод команды make
perl укажет точную команду
make , которую необходимо
будет выполнить для завершения
установки. Для Caldera (SCO) это будет
команда make -f Makefile.aperl inst_perl
MAP_TARGET=perl .
Затем нужно использовать только
что созданный модуль Perl для
создания еще одного модуля Perl,
который также включает в себя
статически слинкованный модуль
DBD::mysql . Это делается
путем выполнения следующих команд
в каталоге, где располагается
дистрибутив Msql-Mysql-modules :
shell> perl Makefile.PL -static -config
shell> make
shell> make install
shell> make perl
И в завершение осталось установить
этот новый модуль Perl. Какую команду
для этого использовать, вы опять
узнаете из вывода make perl .
|
|