Services webmasters
Partenaires
Jeux concours gratuits
 
safe_mysqld , le script père de mysqld
<<<
mysqld_multi , un programme pour gérer plusieurs serveurs MySQL myisampack , le générateur de tables MySQL compressées en lecture seule
>>>

4.7 Scripts serveur MySQL et utilitaires
4 Administration du serveur
 Manuel de Référence MySQL 4.1 : Version Française

Présentation des scripts serveurs et des utilitaires
safe_mysqld , le script père de mysqld
->mysqld_multi , un programme pour gérer plusieurs serveurs MySQL
myisampack , le générateur de tables MySQL compressées en lecture seule
mysqld-max , la version étendue du serveur mysqld

4.7.3 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, Démarrer 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 .

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 .

<< mysqld_multi , un programme pour gérer plusieurs serveurs MySQL >>
safe_mysqld , le script père de mysqld Scripts serveur MySQL et utilitaires myisampack , le générateur de tables MySQL compressées en lecture seule
Services webmasters
Les manuels
 
CoursPHP.com - Reproduction interdite -