Services webmasters
Partenaires
Jeux concours gratuits
 
Installer plusieurs serveurs sur la même machine
<<<
Faire fonctionner plusieurs serveurs MySQL sur la même machine Administration du serveur
>>>

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

Options de ligne de commande de mysqld
Fichier d'options my.cnf
Installer plusieurs serveurs sur la même machine
->Faire fonctionner plusieurs serveurs MySQL sur la même machine

4.1.4 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. mysqld_multi , un programme pour gérer plusieurs serveurs MySQL .

Supposons que votre serveur est configuré avec le numéro de port par défaut, et le numéro de socket par défaut. Alors vous pouvez configurer le nouveau serveur avec la commande configure suivante :


shell> ./configure  --with-tcp-port=numero_port \
             --with-unix-socket-path=nom_fichier \
             --prefix=/usr/local/mysql-3.22.9
Ici, les options numero_port et nom_fichier doivent être différentes des valeurs par défaut, et avec l'option --prefix vous allez spécifier un autre dossier d'installation que celui qui est déjà utilisé par la première installation.

Vous pouvez vérifier le nom de la socket qui est utilisée par un serveur MySQL avec cette commande :


shell> mysqladmin -h hostname --port=numero_port variables
Notez que si vous spécifiez `` localhost '' comme nom d'hôte, mysqladmin va utiliser les sockets Unix plutôt que TCP/IP.

Si vous avez un serveur MySQL qui utilise déjà le port, vous obtiendrez une liste des variables de configuration les plus importantes de MySQL, y compris le nom de la socket.

Vous n'avez pas à recompiler un nouveau serveur MySQL juste pour le démarrer sous un autre port et une autre socket. Vous pouvez changer le port et la socket utilisée au moment du démarrage, avec safe_mysqld :

shell> /path/to/safe_mysqld --socket=nom_fichier --port=numero_port
mysqld_multi peut aussi prendre safe_mysqld (ou mysqld ) comme argument, et passer les options depuis un fichier de configuration à safe_mysqld , et ainsi, à mysqld .Si vous exécutez un nouveau serveur sur les mêmes données qu'un autre serveur, avec le log activé, vous devez spécifier le nom du fichier de log à safe_mysqld avec l'option --log , --log-update , ou --log-slow-queries . Sinon, les deux serveurs risquent d'écrire dans le même fichier de log.

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 !

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

Notez aussi que démarrer plusieurs serveurs MySQL ( mysqlds ) dans différentes machines, et les laisser accéder aux même données via NFS est généralement une mauvaise idée ! Le problème est que NFS va devenir un frein au niveau de la vitesse. Il n'est pas destiné à une telle utilisation. Et de plus, vous devrez trouver une solution pour vous assurer que deux des mysqld n'interfèrent pas entre eux. Actuellement, il n'y a pas de plate-forme qui soit 100% fiable pour le verrouillage de fichiers (le démon lockd ), dans toutes les situations. Pourtant, il va y avoir un risque supplémentaire avec NFS ; cela rendra le travail encore plus compliqué pour le démon lockd . Alors, simplifiez-vous la vie, et oubliez cela. La solution efficace est d'avoir un ordinateur avec un système d'exploitation, qui gère efficacement les threads et a plusieurs processeurs.

Lorque vous voulez vous connecter au serveur MySQL qui fonctionne avec un autre port que le port qui est compilé par défaut dans votre client, vous pouvez utiliser l'une des méthodes suivantes :
  • Lancez le client avec l'option --host 'hostname' --port=numero_port pour vous connecter en TCP/IP, ou [--host localhost] --socket=nom_fichier pour vous connecter via une socket Unix.
  • Dans vos programmes C ou Perl, vous pouvez indiquer le port ou la socket lors de la connexion au serveur MySQL.
  • Si vous utilisez le code Perl avec le module DBD::mysql , vous pouvez lire les options des fichiers d'options MySQL. Fichier d'options my.cnf .
    
    $dsn = "DBI:mysql:test;mysql_read_default_group=client;
            mysql_read_default_file=/usr/local/mysql/data/my.cnf"
    $dbh = DBI->connect($dsn, $user, $password);
  • Modifiez les variables d'environnement MYSQL_UNIX_PORT et MYSQL_TCP_PORT pour qu'elles pointent sur la socket Unix et le port TCP/IP voulu avant de démarrer vos clients. Si vous utilisez une socket ou un port spécifique, il est recommandé de modifier ces variables dans votre fichier .login . Variables d'environnement MySQL .
  • Specifiez la socket et le port TCP/IP par défaut dans le fichier my.cnf de votre dossier personnel. Fichier d'options my.cnf .

<< Faire fonctionner plusieurs serveurs MySQL sur la même machine >>
Installer plusieurs serveurs sur la même machine Configuration de MySQL Administration du serveur
Services webmasters
Les manuels
 
CoursPHP.com - Reproduction interdite -