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.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.