[+/-]
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
Section 4.3.1, « Options de ligne de commande de mysqld
» et
Section 4.3.2, « Fichier d'options my.cnf
».
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.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.