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
.
|