19.3 Faire tourner plusieurs serveurs MySQL sur la même machine

Il existe des cas où vous aurez besoin d'avoir plusieurs serveur MySQL sur la même machine. Par exemple, si vous voulez tester une nouvelle version sans perturber le serveur de production. Ou encore, si vous voulez fournir un serveur MySQL pour différents clients.

Pour ce faire, le moyen le plus simple et de compiler le serveur avec différents ports TCP/IP et différentes sockets, pour éviter que les serveurs utilisent les mêmes sockets ou ports.

Supposons qu'il existe un serveur configuré avec le port et la socket par défaut. Alors, pour réaliser une nouvelle configuration, vous pouvez utiliser la commande suivante :

shell> ./configure  --with-tcp-port=port_number \
             --with-unix-socket=file_name \
             --prefix=/usr/local/mysql-3.22.9

Ici, port_number et file_name doivent prendre des valeurs différentes des valeurs par défaut. L'should be different than the default port number and socket file pathname, et la valeur de --prefix doit mener à une autre installation d'un MySQL.

Vous pouvez connaître la socket et le port utilisé actuellement par MySQL avec la commande suivante :

shell> mysqladmin -h hostname --port=port_number variables

Si un serveur MySQL utilisait le port que vous avez utilisé, vous allez voir s'afficher la liste des variables de configuration les plus importantes de ce serveur, y compris le nom de la socket.

Il vous faut aussi éditer le script d'initialisation de votre machine (probablement ``mysql.server'') pour démarrer et arrêter plusieurs serveurs mysqld.

Vous n'avez pas besoin de recompiler un nouveau serveur MySQL pour changer ses port et socket. Vous pouvez les changer en les spécifiant lors du démarrage, avec l'option safe_mysqld:

shell> /path/to/safe_mysqld --socket=file_name --port=port_number

Si vous voulez faire fonctionner le nouveau serveur MySQL avec les mêmes bases de données que l'autre, vous devrez aussi spécifier les fichiers d'historique dans safe_mysqld avec mes options --log et --log-update. Sinon, les serveurs vont être en concurrence sur les mêmes fichiers d'historique .

Attention: Normalement, vous ne devriez jamais avoir deux serveurs qui modifient en même temps des données dans une base. Si votre OS ne supporte pas le verrouillage en écriture, vous allez rencontrer quelques surprises déplaisantes.

Si vous voulez utiliser un autre dossier pour les bases du second serveur, vous pouvez utiliser l'option --datadir=path de safe_mysqld.

Lorsque vous voulez vous connecter à un serveur MySQL qui fonctionne sur un port différent du port par défaut, vous pouvez utiliser une des méthodes suivantes :

  • Démarrez le client avec l'option --host 'hostname' --port=port_numer ou [--host localhost] --socket=file_name.
  • Avec les programmes en C ou Perl, vous pouvez préciser l'adresse IP et le port lors de la connexion.
  • Changez les valeurs des variables d'environnement MYSQL_UNIX_PORT et MYSQL_TCP_PORT pour pointer sur les sockets et ports par défaut. Si vous voulez utiliser un port ou une socket spécifique, il vaut mieux les placer dans le fichier ``.login''. 12.1 Présentation des différents programmes MySQL.
  • Spécifiez les ports et sockets par défaut dans le fichier ``.my.cnf'' de votre dossier racine. 4.15.4 Fichier d'options.