• Aucun résultat trouvé

Sommaire 27 Historique des changements MySQL

2.6 Notes spécifiques aux systèmes d'exploitation

2.6.4 Notes relatives à BSD

Cette section fournit des informations pour les différentes variétés de BSD, ainsi que les versions spécifiques de celles−ci.

2.6.4.1 Notes relatives à FreeBSD

FreeBSD 4.x est recommandé pour exécuter MySQL vu que le paquet des threads est plus intégré. La façon la plus facile et la plus conseillée d'installer est d'utiliser les ports du serveur et du client MySQL disponibles sur http://www.freebsd.org/ .Les utiliser vous donnera :

Un MySQL fonctionnant avec toutes les optimisations connues pour votre version active de FreeBSD.

Configuration et construction automatique.

Scripts de démarrage installés dans /usr/local/etc/rc.d

.

La possibilité de voir tous les fichiers installés avec pkg_info −L

.

La possibilité de les effacer tous avec pkg_delete

si vous ne voulez plus de MySQL sur cette machine.

Il est recommandé d'utiliser les MIT−pthreads

sur FreeBSD 2.x et les threads natifs sur les versions 3 et plus. Il est possible de faire fonctionner le tout avec les threads natifs sur les dernières versions 2.2.x mais vous rencontrerez probablement des problèmes en coupant mysqld

.

Malheureusement, certains appels systèmes sur FreeBSD ne sont pas encore totalement compatibles avec les threads. Le cas le plus notable est la fonction gethostbyname()

qui est utilisée par MySQL pour convertir des noms d'hôtes en adresse IP. Dans certaines circonstances, le processus

mysqld

va soudainement prendre 100% du processeur, et ne plus répondre. Si vous rencontrez cette situation, essayez de relancer MySQL avec l'option −−skip−name−resolve

.

Alternativement, vous pouvez compiler MySQL sur FreeBSD 4.x avec la bibliothèque LinuxThreads

, qui évite les quelques problèmes que l'implémentation thread native de FreeBSD a. Pour une bonne comparaison entre LinuxThreads

et les threads natifs, voyez l'article de Jeremy Zawodny FreeBSD or Linux for your MySQL Server?

à http://jeremy.zawodny.com/blog/archives/000697.html . Un problème connu lors de l'utilisation des LinuxThreads

sur FreeBSD est que wait_timeout

ne fonctionne pas (probablement un problème de gestion des signaux sous FreeBSD/ LinuxThreads

). Cela devrait être corrigé en FreeBSD 5.0. Le symptôme est que les connexions persistantes vont rester à bloquées très longtemps sans se refermer.

Le processus de compilation de MySQL requiert GNU make ( gmake

) pour fonctionner. Si vous voulez compiler MySQL vous devez d'abord installer GNU make

.

La méthode recommandée pour compiler et installer MySQL sur FreeBSD avec gcc

(2.95.2 et plus récent) est :

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 cd /usr/local/mysql

bin/mysql_install_db −−user=mysql bin/mysqld_safe &

Si vous remarquez que configure

va utiliser MIT−pthreads

, il faut alors lire les notes MIT−pthreads

. Remarques sur MIT−pthreads .

Si vous avez une erreur durant make install

qui dit qu'il ne peut trouver /usr/include/pthreads

, configure

n'a pas détecté l'absence de MIT−pthreads

. Pour corriger le problème, supprimez config.cache

, puis relancez

configure

avec l'option −−with−mit−threads

.

Assurez−vous que votre configuration de la résolution des noms est bonne. Sinon, vous airez peut−être quelques problèmes lors de la connexion à mysqld

. Assurez−vous que l'entrée localhost

dans le fichier /etc/hosts

est correcte (sinon, vous aurez des problèmes pour vous connecter à la base de données). Le fichier doit commencer par une ligne similaire à :

127.0.0.1 localhost localhost.votre.domaine

FreeBSD est aussi connu pour avoir une petite limite de gestionnaires de fichiers par défaut. Fichier non trouvé . Décommentez la section ulimit −n

dans safe_mysqld

ou enlevez la limite pour l'utilisateur

mysqld

dans /etc/login.conf

(et regénèrez le avec cap_mkdb). Assurez−vous aussi de définir la classe appropriée pour cet utilisateur dans le fichier des mots de passe si vous n'utilisez pas celui par défaut. (utilisez : chpass nom−utilisateur−mysqld). safe_mysqld

, le script père de mysqld

.Si vous avez beaucoup de mémoire, vous devriez penser à recompiler le noyau pour permettre à MySQL d'utiliser plus de 512 Mo de RAM. Regardez l' option MAXDSIZ

dans le fichier de configuration de LINT pour plus d'informations.

Si vous avez des problèmes avec la date courante dans MySQL, configurer la variable d'environnement TZ

aidera sûrement. Variables d'environnement MySQL .

Pour obtenir un système sécurisé et stable, vous ne devez utiliser que les noyaux FreeBSD marqués −RELEASE

.

2.6.4.2 Notes concernant NetBSD

Pour compiler sur NetBSD vous aurez besoin de GNU make

. Sinon, la compilation stoppera lorsque

make

essayera d'exécuter lint

sur les fichiers C++.

2.6.4.3 Notes relatives à OpenBSD 2.5

Dans la version 2.5 de OpenBSD, vous pouvez compiler MySQL avec les threads natifs avec les options suivantes :

CFLAGS=−pthread CXXFLAGS=−pthread ./configure −−with−mit−threads=no

2.6.4.4 Notes relatives à OpenBSD 2.8

Nos utilisateurs nous ont informé que OpenBSD 2.8 comporte un bogue des threads qui pose quelques problèmes avec MySQL. Les développeurs d'OpenBSD ont résolu ce problème, mais depuis le 25 janvier 2001 ce n'est disponible que dans la branche ``−current''. Les symptômes de ce bogue sont : réponses lentes, beaucoup de charge, grande utilisation du CPU, et crashes.

Si vous obtenez une erreur comme Error in accept:: Bad file descriptor

ou erreur 9 en essayant d'ouvrir les tables ou les dossiers, le problème est probablement que vous n'avez pas alloué assez de

descripteurs de fichiers à MySQL.

Dans ce cas, essayez de démarrer safe_mysqld

en tant que root avec les options suivantes :

shell> mysqld_safe −−user=mysql −−open−files−limit=2048 &

2.6.4.5 Notes relatives aux versions 2.x de BSD/OS

Si vous obtenez l'erreur suivante lors de la compilation de MySQL, votre valeur de ulimit

pour la mémoire virtuelle est trop petite :

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

Essayez d'utiliser ulimit −v 80000

et exécutez make

à nouveau. Si cela ne fonctionne pas et que vous utilisez bash

, essayez de passer à csh

ou sh

; quelques utilisateurs de BSDI ont reporté des problèmes avec bash

et ulimit

. Si vous utilisez gcc

, vous aurez peut−être aussi à utiliser l'option −−with−low−memory

de configure

pour pouvoir compiler sql_yacc.cc

.

Si vous avez des problèmes avec la date courante dans MySQL, configurer la variable TZ

vous aidera probablement. Variables d'environnement MySQL .

2.6.4.6 Notes relatives aux versions 3.x de BSD/OS

Mettez à jour à la version 3.1 de BSD/OS. Si cela n'est pas possible, installez le patch BSDIpatch M300−038.

Utilisez la commande suivante lors de la configuration de 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

Ce qui suit fonctionne aussi :

shell> env CC=gcc CXX=gcc CXXFLAGS=−O3 \ ./configure \

−−prefix=/usr/local/mysql \

−−with−unix−socket−path=/var/mysql/mysql.sock

Vous pouvez changer les répertoires si vous voulez, ou utiliser les valeurs par défaut en ne spécifiant pas de chemins.

Si vous avez des problèmes de performances alors que la charge est petite, essayez d'utiliser l'option −−skip−thread−priority

de mysqld

! Cela exécutera tous les threads avec la même priorité; Sur la version 3.1 de BSDI, cela donne de meilleures performances (en attendant que BSDI corrige sont

gestionnaire de threads).

Si vous obtenez l'erreur virtual memory exhausted

durant la compilation, vous devez essayer en utilisant

ulimit −v 80000

et exécutant make

à nouveau. Si cela ne fonctionne pas et que vous utilisez bash

, essayez de passer à csh

ou sh

; quelques utilisateurs de BSDI ont reporté des problèmes avec bash

et ulimit

.

2.6.4.7 Notes relatives aux versions 4.x de BSD/OS

Les versions 4.x de BSDI

ont quelques bogues relatifs aux threads. Si vous voulez utiliser MySQL sur ce système, vous devez installer tous les patches liés aux threads. vous devez au moins installer

M400−023

.

Sur quelques systèmes avec une version 4.x de BSDI

, vous pouvez rencontrer des problèmes avec les bibliothèques partagées. Le symptôme est que vous ne pouvez utiliser aucun programme client, comme par exemple, mysqladmin

. Dans ce cas, vous devez le reconfigurer pour qu'il n'utilise pas les bibliothèques partagées avec l'option −−disable−shared

de configure. Quelques utilisateurs ont eu avec BSDI

4.0.1 un problème faisant qu'après un bout de temps, le binaire mysqld

ne peut plus ouvrir de tables. Cela est du au fait qu'un bogue relatif au système ou à la bibliothèque fait changer de répertoire à mysqld

sans qu'on ne l'ait demandé !

La solution est soit de mettre à jour vers la version 3.23.34 ou de supprimer la ligne #define HAVE_REALPATH

de config.h

après avoir exécuté configure

et avant d'exécuter make

.

Notez que ce qui précède signifie que vous ne pouvez pas créer de lien symbolique sur un dossier de bases de données vers un autre dossier de bases de données ou lier une table symboliquement vers une autre base de données sur BSDI

! (Créer un lien symbolique vers un autre disque fonctionne).