Utilisation des processus serveurs MySQL par MySQL Cluster
<<<
'ndbd' , le processus de stockage du cluster 'ndb_mgmd' , le serveur de gestion
>>>

17.4 Serveur de gestion du cluster MySQL
17 Introduction à MySQL Cluster
 Manuel de Référence MySQL 4.1 : Version Française

Utilisation des processus serveurs MySQL par MySQL Cluster
->'ndbd' , le processus de stockage du cluster
'ndb_mgmd' , le serveur de gestion
'ndb_mgm' , le client de gestion du cluster
Options des commandes pour le cluster MySQL

17.4.2 'ndbd' , le processus de stockage du cluster

'ndbd' est le processus qui gère les données dans les tables basées sur lem oteur NDB Cluster. C'est ce processus qui contient la logique de gestion des transactions distribuées, la restauration des noeuds, la pose des jalons sur le disque, la sauvegarde en ligne, et de nombreuses autres fonctionnalités.

Dans un cluster, il y a un groupe de processus 'ndbd' qui coopèrent pour gérer les données. Ces processus peuvent s'exécuter sur la même machine ou sur des ordinateurs différents, de manière complètement configurable.

Avant MySQL version 4.1.5, le processus 'ndbd' se lancerait dans un dossier différent. La raison à cela est que 'ndbd' génère son propre jeu de log dans le dossier de démarrage.

Depuis MySQL 4.1.5, cela a été modifié pour que les fichiers soient placés dans un dossier spécifié par DataDir dans le fichier de configuration. 'ndbd' peut maintenant être lancé depuis n'importe où.

Ces fichiers de logs sont les suivants (le 2 est l'identifiant de noeud).
  • ndb_2_error.log (anciennement error.log en version 4.1.3) est le fichier qui contient les informations sur tous les plantages que 'ndbd' a rencontré, et un message d'erreur court ainsi qu'un référence vers le fichier de trace pour le dernier crash. Une telle ligne peut être :
    
    Date/Time: Saturday 31 January 2004 - 00:20:01
    Type of error: error
    Message: Internal program error (failed ndbrequire)
    Fault ID: 2341
    Problem data: DbtupFixAlloc.cpp
    Object of reference: DBTUP (Line: 173)
    ProgramName: NDB Kernel
    ProcessID: 14909
    TraceFile: ndb_2_trace.log.2
    ***EOM***
  • ndb_2_trace.log.1 (anciennement NDB_TraceFile_1.trace en version 4.1.3) est un fichie de trace, décrivant exactement ce qui est arrivé avant l'erreur. Cette information est utile pour l'équipe d'administration du cluster MySQL. Les informations de ce fichier sont décrites dans la section MySQL Cluster Troubleshooting . Le nombre de fichier de trace est configurable, de manière a maîtriser l'écrasement des anciens fichiers par les nouveaux. 1, dans ce contexte, est le numéro du fichier de trace.
  • ndb_2_trace.log.next (anciennement NextTraceFileNo.log en version 4.1.3) est le fichier qui garde trace du prochain numéro de fichier de trace.
  • ndb_2_out.log est le fichier qui contient les données affichées par le processus 'ndbd' . 2, dans ce contexte, est l'identifiant de noeued. Ce fichier n'existe que si 'ndbd' est lancé en mode démon, ce qui est le défaut en 4.1.5; anciennement node2.out en version 4.1.3)
  • ndb_2.pid est le fichier qui contient l'identifiant de processus lorsque ndbd est lancé en mode démon (c'est le comportement par défaut depuis la version 4.1.5 et s'appellait node2.pid en version 4.1.3). Il fonctionne aussi comme un verrou, pour éviter de lancer des noeuds avec le même identifiant.
  • ndb_2_signal.log (anciennement Signal.log en version 4.1.3) est le fichier qui ne sert que pour les versions de déguage de 'ndbd' : il est alors possible de suivre les messages entrants, sortants et internes dans le processus 'ndbd' .
Il est recommandé de ne pas utiliser de dossier monté en NFS car dans certains environnement, il y a des problèmes de verrouillages sur le fichier de PID, même si le processus s'est arrêté.

De même, lorsque vous lancez le processus 'ndbd' , il peut être nécessaire de spécifier le nom d'hôte du serveur de gestion ainsi que son port. Optionnellement, il faut aussi ajouter le numéro d'identification de noeud. Encore une fois, il y a trois façons de spécifier ces informations. Soit une chaîne de connexion qui doit être stockée dans le fichier Ndb.cfg , et ce fichier doit être stocké dans le dossier de démarrage de 'ndbd' . La seconde option est de configurer la variable d'environnement NDB_CONNECTSTRING avant le démarrage du processus. La troisième option est d'utiliser la ligne de commande et l'option ci-dessous. Voyez les sections précédentes pour connaître le format exact de la chaîne.


shell> ndbd --connect-string="nodeid=2;host=ndb_mgmd.mysql.com:2200"
Lorsque 'ndbd' se lance, il va lancer en fait 2 processus. Le processus de lancement s'appelle "angel" et sa seule tâche est de surveiller la fin du processus d'exécution, et de relancer le processus 'ndbd' s'il est configuré pour cela. Par conséquent, si vous tentez de terminer 'ndbd' avec la commande 'kill' d'Unix, il sera nécessaire de terminer les deux processus. Une solution plus élégante pour gérer la terminaison des processus 'ndbd' est d'utiliser le client de gestion et d'arrêter les processus depuis ce client.

Le processus d'exécution utilise un thread pour toute ses activités de lecture, écriture et analyse des données, ainsi que pour ses autres activités. Ce thread est conçu pour être asynchrone, et gérer facilement des milliers d'actions simultanées. En plus, il y a un garde-fou qui supervise le thread d'exécution, pour s'assurer que ce dernier ne se bloque pas dans une boucle infinie ou dans un autre problème du même genre. Il y a un pool de thread qui assurent les entrées/sorties. Chaque thread gère un fichier. En plus, d'autres threads peuvent être utilisés pour les activités de transport du processus 'ndbd' . Par conséquent, un processus qui effectue un grand nombre d'activités, verra le processus 'ndbd' utiliser 2 processeurs, s'il en a la possibilité. Sur une machine avec de nombreux processeurs, il est recommandé d'utilsier plusieurs processus 'ndbd' , qui seront configurés pour représente différents groupes de noeuds.

<< 'ndbd' , le processus de stockage du cluster >>
Utilisation des processus serveurs MySQL par MySQL Cluster Serveur de gestion du cluster MySQL 'ndb_mgmd' , le serveur de gestion