5.1 Scripts serveur MySQL et utilitaires
5 Administration du serveur
Manuel de Référence MySQL 4.1 : Version Française
. Présentation des scripts serveurs et des utilitaires . mysqld-max , la version étendue du serveur mysqld . safe_mysqld , le script père de mysqld . Le script de démarrage mysql.server ->mysqld_multi , un programme pour gérer plusieurs serveurs MySQL
|
5.1.5 mysqld_multi , un programme pour gérer plusieurs serveurs MySQL
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, Lancer et arrêter automatiquement MYSQL .
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 Utiliser plusieurs serveurs 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 :
-
--config-file=name
-
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.
-
--example
-
Affiche un exemple de fichier de configuration.
-
--help
-
Affiche l'aide et quitte.
-
--log=name
-
Fichier de log. Le chemin complet et le nom du fichier sont nécessaires.
-
--mysqladmin=prog_name
-
L'exécutable
mysqladmin
à utiliser lors de l'arrêt du serveur.
-
--mysqld=prog_name
-
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
.
-
--no-log
-
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é.
-
--password=password
-
Le mot de passe de l'utilisateur
mysqladmin
.
-
--tcp-ip
-
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.
-
--user=user_name
-
L'utilisateur MySQL pour
mysqladmin
.
-
--version
-
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'"
|
Comment le système de droits fonctionne .
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 ----------------------------------------------------------------
|
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é.
Utiliser plusieurs serveurs 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
|
Utiliser les fichiers d'options .
|