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
.
mysqld_multi
est utilisé ave la syntaxe suivante :
Usage: mysqld_multi [OPTIONS] {start|stop|report} [GNR,GNR,GNR...] or mysqld_multi [OPTIONS] {start|stop|report} [GNR-GNR,GNR,GNR-GNR,...]
|
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. Pour un exemple de comment configurer le fichier
d'options, 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=...
-
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
.
-
--example
-
Affiche un exemple de fichier de configuration.
-
--help
-
Affiche l'aide et quitte.
-
--log=...
-
Fichier de log. Le chemin complet et le nom du fichier sont nécessaires.
Note : si le fichier existe déjà, les prochaines données seront ajoutées
au fichier.
-
--mysqladmin=...
-
L'exécutable
mysqladmin
à utiliser lors de l'arrêt du serveur.
-
--mysqld=...
-
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=...
-
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=...
-
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 /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.
-
N'oubliez jamais les problèmes que peut soulever le démarrage de plusieurs
démons
mysqld
avec le même dossier de données. Utilisez des dossiers
de données séparés, à moins que vous ne
sachiez bien
ce que vous faites.
-
Le fichier de socket et le port TCP/IP doivent être différents pour chaque
mysqld
.
-
Le premier et le cinquième groupe
mysqld
on été intentionnellement ignorés
dans le groupe d'exemple. Vous pouvez laisser des trous dans le fichier de configuration.
Cela vous donnera plus de souplesse. L'ordre dans lequel les démons
mysqlds
sont démarrés ou arrétés dépend de l'ordre dans lequel ils apparaissent
dans le fichier de configuration.
-
Lorsque vous voulez faire référence à un groupe en utilisant
le numéro de groupe d'options, utilisez simplement le numéro du groupe
à la fin du nom du groupe. Par exemple, le numéro de groupe de
[mysqld17]
est le 17.
-
Vous pouvez vouloir utiliser l'option
--user
pour
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
. Démarrer plusieurs serveurs
mysqld
s dans le même dossier
ne vous donnera aucun
gain de performance
dans un système threadé.
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
|
Fichier d'options
my.cnf
.
|