ndbd is the process that is used to handle all the data in tables using the NDB Cluster storage engine. This is the process that empowers a data node to accomplish distributed transaction handling, node recovery, checkpointing to disk, online backup, and related tasks.
In a MySQL Cluster, a set of ndbd processes cooperate in handling data. These processes can execute on the same computer (host) or on different computers. The correspondences between data nodes and Cluster hosts is completely configurable.
In MySQL versions prior to 4.1.5, each
ndbd process should be started in a
separate directory, the reason for this being that
ndbd generated a set of log files in its
starting directory. In MySQL 4.1.5, this behavior was
changed such that these files are placed in the directory
specified by DataDir in the configuration
file. Thus ndbd can be started from
anywhere.
These log files are listed below.
node_id is the node's unique
identifier. Note that node_id
represents the node's unique identifier. For example,
ndb_2_error.log is the error log
generated by the data node whose node ID is
2.
ndb_
(was node_id_error.logerror.log in version 4.1.3) is
a file containing records of all crashes which the
referenced ndbd process has
encountered. Each record in this file contains a brief
error string and a reference to a trace file for this
crash. A typical entry in this file might appear as
shown here:
Date/Time: Saturday 30 July 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***
Note: It is
very important to be aware that the last entry in the
error log file is not necessarily the newest
one (nor is it likely to be). Entries in the
error log are not listed in
chronological order; rather, they correspond to the
order of the trace files as determined in the
ndb_
file (see below). Error log entries are thus overwritten
in a cyclical and not sequential fashion.
node_id_trace.log.next
ndb_
(was
node_id_trace.log.trace_idNDB_TraceFile_
in version 4.1.3) is a trace file describing exactly
what happened just before the error occurred. This
information is useful for analysis by the MySQL Cluster
development team.
trace_id.trace
It is possible to configure the number of these trace
files that will be created before old files are
overwritten. trace_id is a
number which is incremented for each successive trace
file.
ndb_
(was node_id_trace.log.nextNextTraceFileNo.log in version
4.1.3) is the file that keeps track of the next trace
file number to be assigned.
ndb_
is a file containing any data output by the
ndbd process. This file is created
only if ndbd is started as a daemon,
which is the default behavior beginning with MySQL
4.1.5. This file was named
node_id_out.lognode
in versions 4.1.3 and 4.1.4.
node_id.out
ndb_
is a file containing the process ID of the
ndbd process when started as a
daemon. It also functions as a lock file to avoid the
starting of nodes with the same identifier.
node_id.pid
ndb_
(was node_id_signal.logSignal.log in version 4.1.3)
is a file used only in debug versions of
ndbd, where it is possible to trace
all incoming, outgoing, and internal messages with their
data in the ndbd process.
It is recommended not to use a directory mounted through NFS
because in some environments this can cause problems whereby
the lock on the .pid file remains in
effect even after the process has terminated.
To start ndbd, it may also be necessary to specify the hostname of the management server and the port on which it is listening. Optionally, one may also specify the node ID that the process is to use.
shell> ndbd --connect-string="nodeid=2;host=ndb_mgmd.mysql.com:1186"
See Section 15.4.4.2, “The Cluster Connectstring”, for additional information about this issue. Section 15.6.5, “Command Options for MySQL Cluster Processes”, describes other options for ndbd.
When ndbd starts, it actually initiates two processes. The first of these is called the “angel process”; its only job is to discover when the execution process has been completed, and then to restart the ndbd process if it is configured to do so. Thus, if you attempt to kill ndbd via the Unix kill command, it is necessary to kill both processes, beginning with the angel process. The preferred method of terminating an ndbd process is to use the management client and stop the process from there.
The execution process uses one thread for reading, writing, and scanning data, as well as all other activities. This thread is implemented asynchronously so that it can easily handle thousands of concurrent activites. In addition, a watch-dog thread supervises the execution thread to make sure that it does not hang in an endless loop. A pool of threads handles file I/O, with each thread able to handle one open file. Threads can also be used for transporter connections by the transporters in the ndbd process. In a multi-processor system performing a large number of operations (including updates), the ndbd process can consume up to 2 CPUs if permitted to do so.
For a machine with many CPUs it is possible to use several ndbd processes which belong to different node groups; however, such a configuration is still considered experimental and is not supported for MySQL 4.1 in a production setting. See Section 15.11, “Known Limitations of MySQL Cluster”.

User Comments
Add your own comment.