mysqld_multi
sert à gérer plusieurs
serveurs mysqld
qui utilisent différentes
sockets Unix et ports TCP/IP.
Le programme va rechercher les groupes nommés
[mysqld#]
dans le fichier
my.cnf
(ou le fichier appelé
--config-file=...
), où #
peut être n'importe quel nombre positif, supérieur ou égal à
1. Ce nombre est appelé le numéro de groupe d'options. Les
numéros de groupe permettent de distinguer un groupe d'options
d'un autre, et sont utilisés comme argument du script
mysqld_multi
pour spécifier quel serveur
vous voulez démarrer, arrêter ou examiner. Les options
listées dans ces groupes doivent être les mêmes que celle que
vous utiliseriez dans une section dédiée au démon
[mysqld]
. Voyez, par exemple,
Section 2.5.2.2, « Lancer et arrêter MySQL automatiquement ». Cependant, pour
mysqld_multi
, vous devez vous assurer que
chaque groupe contient des valeurs pour les options telles que
port, socket, etc., qui seront utilisées par chaque processus
mysqld
. Pour plus d'informations sur sur les
options de chaque serveur dans un environnement à serveurs
multiples, voyez la section Section 5.10, « Faire fonctionner plusieurs serveurs MySQL sur la même machine ».
mysqld_multi
est utilisé ave la syntaxe
suivante :
shell> mysqld_multi [options] {start|stop|report} [GNR[,GNR]...]
start
, stop
et
report
indique le type d'opération que vous
voulez faire. Vous pouvez faire une opération sur un serveur
unique ou plusieurs serveurs, en fonction de la liste
GNR
qui suit le nom de l'opération. S'il n'y
a pas de liste, mysqld_multi
effectue
l'opération sur tous les serveurs du fichier d'options.
Chaque GNR
représente un numéro de groupe
d'options. Vous pouvez démarrer, arrêter ou examiner n'importe
quel numéro de groupe d'options, ou même plusieurs d'entre eux
en même temps. Par exemple, le groupe GNR
pour le groupe appelé [mysqld17]
est
17
. Pour spécifier un intervalle de nombres,
séparez le premier et le dernier numéro par un tiret. La
valeur GNR
10-13
représente les groupes de [mysqld10]
à
[mysqld13]
. Les groupes multiples ou les
intervalles de groupes peuvent être spécifiées en ligne de
commande, séparés par virgules. Il ne doit pas y avoir
d'espace blanc entre deux éléments de la liste : tout ce qui
sera après un espace sera ignoré.
Cette commande lance un serveur unique, avec le groupe d'options
[mysqld17]
:
shell> mysqld_multi start 17
Cette commande arrête plusieurs serveurs, en utilisant les
groupes d'options [mysql8]
et
[mysqld10]
à
[mysqld13]
:
shell> mysqld_multi start 8,10-13
Pour afficher un exemple de configurations, utilisez cette commande :
shell> mysqld_multi --example
Les valeurs de numéro de groupe d'options peuvent être une liste de valeurs séparées par une virgule ou un tiret. Dans ce dernier cas, toutes les numéro de groupe d'options situés entre les deux numéros seront alors affectés. Sans numéro de groupe d'options spécifié, tous les numéros de groupes du fichier d'options sont affectés. Notez que vous ne devez pas avoir d'espace dans la liste des numéros de groupe d'options. Tout ce qui est placé au-delà de l'espace sera ignoré.
mysqld_multi
supporte les options
suivantes :
Un fichier de configuration alternatif. Note : cela ne va
pas modifier les options de ce programme
([mysqld_multi]
), mais uniquement les
groupes [mysqld#]
. Sans cette option,
tout sera lu dans le fichier d'options traditionnel
my.cnf
. Cette option n'affecte pas la
fa¸on avec laquelle mysqld_multi
lit ses
options, qui sont toujours prises dans le groupe
[mysqld_multi]
du fichier
my.cnf
habituel.
Affiche un exemple de fichier de configuration.
Affiche l'aide et quitte.
Fichier de log. Le chemin complet et le nom du fichier sont nécessaires.
L'exécutable mysqladmin
à utiliser lors
de l'arrêt du serveur.
L'exécutable mysqld
à utiliser. Notez
que vous pouvez donner cette option à
safe_mysqld
. Ces options sont passées à
mysqld
. Assurez-vous que vous avez bien
mysqld
dans votre variable
d'environnement PATH
ou corrigez
safe_mysqld
.
Affiche les données d'historique à l'écran plutôt que dans le fichier de log. Par défaut, le fichier de log est activé.
Le mot de passe de l'utilisateur
mysqladmin
.
Connexion au serveur MySQL via le port TCP/IP au lieu de la socket Unix. Cela affecte l'arrêt et le rapport. Si le fichier de socket manque, le serveur peut continuer de tourner, mais il n'est plus accessible que par port TCP/IP. Par défaut, les connexions sont faites avec les sockets Unix.
L'utilisateur MySQL pour mysqladmin
.
Affiche le numéro de version et quitte.
Quelques notes pour mysqld_multi
:
Assurez-vous que l'utilisateur MySQL, qui stoppe les
services mysqld
(e.g en utilisant la
commande mysqladmin
), a les mêmes nom
d'utilisateur et mot de passe pour tous les dossiers de
données utilisés. Et assurez-vous que cet utilisateur a
bien les droits de SHUTDOWN
! Si vous avez
de nombreux dossiers de données et de nombreuses bases
mysql
avec différents mots de passe pour
le serveur root
MySQL, vous souhaiterez
peut être créer un utilisateur commun
multi_admin
à chaque base, avec le même
mot de passe (voir ci-dessous). Voici comment faire :
shell> mysql -u root -S /tmp/mysql.sock -proot_password -e
"GRANT SHUTDOWN ON *.* TO multi_admin@localhost IDENTIFIED BY 'multipass'"
See Section 5.5.2, « Comment fonctionne le système de droits ». Vous devrez utiliser la
même commande pour chaque serveur mysqld
qui fonctionne : changez simplement la socket,
-S=...
).
pid-file
est très important, si vous
utilisez safe_mysqld
pour démarrer
mysqld
(e.g.,
--mysqld=safe_mysqld
). Chaque
mysqld
doit avoir son propre fichier
pid-file
. L'avantage d'utiliser
safe_mysqld
au lieu de
mysqld
est que
safe_mysqld
``surveille'' tous les
processus mysqld
et les redémarrera si
un processus mysqld
s'arrête suite à la
reception d'un signal kill -9
, ou pour
toute autre raison comme une erreur de segmentation (que
MySQL ne devrait jamais faire, bien sûr !). Notez bien que
le script safe_mysqld
vous imposera peut
être d'être démarré depuis un dossier spécial. Cela
signifie que vous devrez probablement utiliser la commande
shell cd
jusqu'à un certain dossier
avant de pouvoir exécuter mysqld_multi
.
Si vous avez des problèmes pour démarrer, voyez le script
safe_mysqld
. Vérifiez notamment ces
lignes :
---------------------------------------------------------------- MY_PWD=`pwd` # Check if we are starting this relative (for the binary release) if test -d $MY_PWD/data/mysql -a -f ./share/mysql/english/errmsg.sys -a \ -x ./bin/mysqld ----------------------------------------------------------------
See Section 5.1.3, « safe_mysqld
, le script père de
mysqld
». Le test ci-dessus devrait
fonctionner, ou bien vous rencontrerez probablement des
problèmes.
Le fichier de socket et le port TCP/IP doivent être
différents pour chaque mysqld
.
Vous pouvez utiliser l'option --user
de
mysqld
, mais afin de faire cela, vous
devez exécuter le script mysqld_multi
en
tant que root
Unix. Placer cette option
dans le fichier de configuration ne changera rien : vous
obtiendrez une alerte, si vous n'êtes pas le super
utilisateur, et les démons mysqld
seront
démarrés avec vos droits Unix.
Important : assurez-vous
bien que le fichier de données et le fichier de
pid-file
sont accessibles en lecture et
écriture (et exécution pour le dernier) à l'utilisateur
Unix qui lance les processus mysqld
.
N'utilisez pas le compte root Unix pour
cela, à moins que vous ne sachiez ce
que vous faîtes.
Très important :
assurez-vous de bien comprendre la signification des options
que vous passez à mysqld
s et
pourquoi vous avez besoin de plusieurs
processus mysqld
. Méfiez vous des
pièges des serveurs multiples mysqld
dans le même dossier de données. Utilisez des dossiers de
données à moins que vous ne sachiers
ce que vous faîtes. Démarrer plusieurs serveurs
mysqld
s dans le même dossier
ne vous donnera aucun gain de
performance dans un système threadé. See
Section 5.10, « Faire fonctionner plusieurs serveurs MySQL sur la même machine ».
Voici un exemple de fichier de configuration fourni par
mysqld_multi
.
# This file should probably be in your home dir (~/.my.cnf) or /etc/my.cnf # Version 2.1 by Jani Tolonen [mysqld_multi] mysqld = /usr/local/bin/safe_mysqld mysqladmin = /usr/local/bin/mysqladmin user = multi_admin password = multipass [mysqld2] socket = /tmp/mysql.sock2 port = 3307 pid-file = /usr/local/mysql/var2/hostname.pid2 datadir = /usr/local/mysql/var2 language = /usr/local/share/mysql/english user = john [mysqld3] socket = /tmp/mysql.sock3 port = 3308 pid-file = /usr/local/mysql/var3/hostname.pid3 datadir = /usr/local/mysql/var3 language = /usr/local/share/mysql/swedish user = monty [mysqld4] socket = /tmp/mysql.sock4 port = 3309 pid-file = /usr/local/mysql/var4/hostname.pid4 datadir = /usr/local/mysql/var4 language = /usr/local/share/mysql/estonia user = tonu [mysqld6] socket = /tmp/mysql.sock6 port = 3311 pid-file = /usr/local/mysql/var6/hostname.pid6 datadir = /usr/local/mysql/var6 language = /usr/local/share/mysql/japanese user = jani
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.