Les fichiers de log de MySQL
<<<
Faire fonctionner plusieurs serveurs MySQL sur la même machine Cache de requêtes MySQL
>>>

5 Administration du serveur
 Manuel de Référence MySQL 4.1 : Version Française

Scripts serveur MySQL et utilitaires
Configuration de MySQL
Sécurité générale du serveur
Règles de sécurité et droits d'accès au serveur MySQL
Gestion des comptes utilisateurs de MySQL
Prévention des désastres et restauration
Localisation MySQL et utilisation internationale
Les fichiers de log de MySQL
->Faire fonctionner plusieurs serveurs MySQL sur la même machine
Cache de requêtes MySQL

5.9 Faire fonctionner plusieurs serveurs MySQL sur la même machine

Il y a des situations où vous souhaiterez avoir plusieurs serveurs MySQL sur la même machine. Par exemple, si vous voulez tester une nouvelle version du serveur avec votre configuration de production sans perturber votre installation de production. Ou bien, vous êtes un fournisseur de services Internet, et vous voulez fournir des installations distinctes pour des clients différents.

Si vous voulez exécuter plusieurs serveurs MySQL, le plus simple et de compiler les serveurs avec différents ports TCP/IP et fichiers de sockets pour qu'ils ne soient pas tous à l'écoute du même port ou de la même socket. Voir Utiliser les options de ligne de commande et Utiliser les fichiers d'options .

Au minimum, les options suivantes doivent être différentes sur chaque serveur :
    --port=port_num
    --port contrôle le numéro de port des connexions TCP/IP.
    --socket=path
    --socket contrôle le chemin de la socket sous Unix, et le nom du pipe nommé sous Windows. Sous Windows, il est nécessaire de spécifier un pipe distinct pour les serveurs qui supportent les connexions par pipes nommés.
    --shared-memory-base-name=name
    Cette option ne sert actuellement que sous Windows. Elle désigne la portion de mémoire partagée, utilisée par Windows pour mettre aux clients de se connecter via la mémoire partagée. Cette option est nouvelle en MySQL 4.1.
    --pid-file=path
    Cette option ne sert que sous Unix. Elle indique le nom du fichier dans lequel le serveur écrit l'identifiant de processus.
--port contrôle le numéro de port des connexions TCP/IP. --socket contrôle le chemin du fichier de socket sous Unix et le nom du pipe sous Windows. Il est nécessaire d'indiquer des noms de pipe différents sous Windows, uniquement si le serveur supporte les pipes nommés. --shared-memory-base-name désigne le nom du segment de mémoire partagée utilisé par un serveur Windows pour permettre à ses clients de se connecter via la mémoire partagée. --pid-file indique le nom du fichier sur lequel le serveur Unix écrit le numéro de processus.Si vous utilisez les options suivantes, elles doivent être différentes sur chaque serveur :
  • --log=path
  • --log-bin=path
  • --log-update=path
  • --log-error=path
  • --log-isam=path
  • --bdb-logdir=path
Si vous voulez plus de performances, vous pouvez aussi spécifier les options suivantes différemment pour chaque serveur, pour répartir la charge entre plusieurs disques physiques :
  • --tmpdir=path
  • --bdb-tmpdir=path
Avoir plusieurs dossiers temporaires comme ci-dessus est aussi recommandé car il est plus facile pour vous de savoir quel serveur MySQL aura créé quel fichier temporaire.

Généralement, chaque serveur doit aussi utiliser des options différentes pour les dossiers de données, qui est spécifié avec l'option --datadir=path .

Attention : normalement, vous ne devez pas avoir deux serveurs qui modifient en même temps les données dans les mêmes bases. Si votre OS ne supporte pas le verrouillage sans échec, cela peut vous mener à de déplaisantes surprises !

Cette mise en garde contre le partage de données entre deux serveur s'applique aussi aux environnements NFS. Permettre à plusieurs serveurs MYSQL d'accéder aux même données via NFS est une mauvaise idée !

  • Le problème principale est que NFS devient rapidement une limitation en termes de vitesse. Il n'a pas été conçu pour cela.
  • Un autre risque avec NFS est que vous devez vous assurer que deux serveurs n'interfèrent pas les uns avec les autres. Généralement, le verrouillage de fichier NFS est fait avec lockd , mais pour le moment, aucune plate-forme ne sera 100% fiable avec cette technique.

Simplifie vous la vie : évitez de partager le même dossier de données entre plusieurs serveurs, via NFS. Une solution plus intelligente est d'avoir un serveur avec plusieurs processeurs, et un système d'exploitation bien optimisé pour les threads.

Si vous avez plusieurs installations de serveurs MySQL a plusieurs endroits, vous pouvez spécifier le dossier de données pour chaque serveur avec l'option --basedir=path , pour que chaque serveur utilise des données différentes, des fichiers de log différents et un PID différent. Les valeurs par défaut de ces options sont relatives au dossier d'installation. Dans ce cas, la seule chose qui reste à adapter est la socket --socket et le --port . Par exemple, supposons que vous installez différentes versions de MySQL en utilisant la distribution binaire .tar . Elles vont être installées en différents dossiers, et vous pouvez lancer le serveur à chaque fois, avec le script ./bin/mysqld_safe de chaque dossier respectif. mysqld_safe va déterminer la bonne option --basedir à passer à mysqld , et vous devrez spécifier --socket et --port à mysqld_safe .

Comme présenté dans les prochaines sections, il est possible de démarrer d'autres serveurs en modifiant des variables d'environnement ou en spécifiant les bonnes options de ligne de commande. Cependant, si vous devez lancer des serveurs de manière récurrente, il sera plus pratique de stocker ces valeurs dans le fichier de configuration.

Sommaire :

<< Faire fonctionner plusieurs serveurs MySQL sur la même machine >>
Les fichiers de log de MySQL Administration du serveur Cache de requêtes MySQL