Le script de démarrage mysql.server
<<<
mysqld_multi , un programme pour gérer plusieurs serveurs MySQL Administration du serveur
>>>

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 .

<< mysqld_multi , un programme pour gérer plusieurs serveurs MySQL >>
Le script de démarrage mysql.server Scripts serveur MySQL et utilitaires Administration du serveur