1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
|
'\" t
.\"
.TH "\FBNDBMTD\FR" "8" "04/08/2015" "MariaDB 10\&.0" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.\" ndbmtd
.\" MySQL Cluster: ndbmtd
.\" MySQL Cluster: data nodes
.\" data nodes (MySQL Cluster)
.\" storage nodes - see data nodes, ndbd, ndbmtd
.SH "NAME"
ndbmtd \- the MySQL Cluster data node daemon (multi\-threaded version)
.SH "SYNOPSIS"
.HP \w'\fBndbmtd\ \fR\fB\fIoptions\fR\fR\ 'u
\fBndbmtd \fR\fB\fIoptions\fR\fR
.SH "DESCRIPTION"
.PP
\fBndbmtd\fR
is a multi\-threaded version of
\fBndbd\fR, the process that is used to handle all the data in tables using the
NDBCLUSTER
storage engine\&.
\fBndbmtd\fR
is intended for use on host computers having multiple CPU cores\&. Except where otherwise noted,
\fBndbmtd\fR
functions in the same way as
\fBndbd\fR; therefore, in this section, we concentrate on the ways in which
\fBndbmtd\fR
differs from
\fBndbd\fR, and you should consult
\fBndbd\fR(8), for additional information about running MySQL Cluster data nodes that apply to both the single\-threaded and multi\-threaded versions of the data node process\&.
.PP
Command\-line options and configuration parameters used with
\fBndbd\fR
also apply to
\fBndbmtd\fR\&. For more information about these options and parameters, see
\fBndbd\fR(8), and
Section\ \&17.3.2.6, \(lqDefining MySQL Cluster Data Nodes\(rq, respectively\&.
.PP
\fBndbmtd\fR
is also file system\-compatible with
\fBndbd\fR\&. In other words, a data node running
\fBndbd\fR
can be stopped, the binary replaced with
\fBndbmtd\fR, and then restarted without any loss of data\&. (However, when doing this, you must make sure that
MaxNoOfExecutionThreads
is set to an apppriate value before restarting the node if you wish for
\fBndbmtd\fR
to run in multi\-threaded fashion\&.) Similarly, an
\fBndbmtd\fR
binary can be replaced with
\fBndbd\fR
simply by stopping the node and then starting
\fBndbd\fR
in place of the multi\-threaded binary\&. It is not necessary when switching between the two to start the data node binary using
\fB\-\-initial\fR\&.
.PP
Prior to MySQL Cluster NDB 7\&.0\&.6, there were known issues when using
\fBndbmtd\fR
with MySQL Cluster Disk Data tables\&. If you wish to use multi\-threaded data nodes with disk\-based
NDB
tables, you should ensure that you are running MySQL Cluster NDB 7\&.0\&.6 or later\&. (\m[blue]\fBBug#41915\fR\m[]\&\s-2\u[1]\d\s+2,
\m[blue]\fBBug#44915\fR\m[]\&\s-2\u[2]\d\s+2)
.PP
Using
\fBndbmtd\fR
differs from using
\fBndbd\fR
in two key respects:
.sp
.RS 4
.ie n \{\
\h'-04' 1.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 1." 4.2
.\}
You must set an appropriate value for the
MaxNoOfExecutionThreads
configuration parameter in the
config\&.ini
file\&. If you do not do so,
\fBndbmtd\fR
runs in single\-threaded mode \(em that is, it behaves like
\fBndbd\fR\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 2.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 2." 4.2
.\}
Trace files are generated by critical errors in
\fBndbmtd\fR
processes in a somewhat different fashion from how these are generated by
\fBndbd\fR
failures\&.
.RE
.PP
These differences are discussed in more detail in the next few paragraphs\&.
.\" execution threads (MySQL Cluster)
.\" MySQL Cluster: execution threads
.\" ndbmtd: MaxNoOfExecutionThreads
.\" MaxNoOfExecutionThreads: ndbmtd
.\" ndbmtd: trace files
.\" trace files: ndbmtd
.PP
\fBNumber of execution threads\fR. The
MaxNoOfExecutionThreads
configuration parameter is used to determine the number of local query handler (LQH) threads spawned by
\fBndbmtd\fR\&. Although this parameter is set in
[ndbd]
or
[ndbd default]
sections of the
config\&.ini
file, it is exclusive to
\fBndbmtd\fR
and does not apply to
\fBndbd\fR\&.
.PP
This parameter takes an integer value from 2 to 8 inclusive\&. Generally, you should set this parameter equal to the number of CPU cores on the data node host, as shown in the following table:
.TS
allbox tab(:);
lB lB.
T{
Number of Cores
T}:T{
Recommended MaxNoOfExecutionThreads Value
T}
.T&
l l
l l
l l.
T{
2
T}:T{
2
T}
T{
4
T}:T{
4
T}
T{
8 or more
T}:T{
8
T}
.TE
.sp 1
.PP
(It is possible to set this parameter to other values within the permitted range, but these are automatically rounded as shown in the
\fBValue Used\fR
column of the next table in this section\&.)
.PP
The multi\-threaded data node process always spawns at least 4 threads:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
1 local query handler (LQH) thread
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
1 transaction coordinator (TC) thread
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
1 transporter thread
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
1 subscription manager (SUMA) thread
.RE
.PP
Setting this parameter to a value between 4 and 8 inclusive causes additional LQH threads to be used by
\fBndbmtd\fR
(up to a maximum of 4 LQH threads), as shown in the following table:
.TS
allbox tab(:);
lB lB lB.
T{
config\&.ini Value
T}:T{
Value Used
T}:T{
Number of LQH Threads Used
T}
.T&
l l l
l l l
l l l.
T{
3
T}:T{
2
T}:T{
1
T}
T{
5 or 6
T}:T{
4
T}:T{
2
T}
T{
7
T}:T{
8
T}:T{
4
T}
.TE
.sp 1
.PP
Setting this parameter outside the permitted range of values causes the management server to abort on startup with the error
Error line \fInumber\fR: Illegal value \fIvalue\fR for parameter MaxNoOfExecutionThreads\&.
.if n \{\
.sp
.\}
.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBNote\fR
.ps -1
.br
.PP
In MySQL Cluster NDB 6\&.4\&.0, it is not possible to set
MaxNoOfExecutionThreads
to 2\&. You can safely use the value 3 instead (it is treated as 2 internally)\&. This issue is resolved in MySQL Cluster NDB 6\&.4\&.1\&.
.sp .5v
.RE
.PP
In MySQL Cluster NDB 6\&.4\&.0 through 6\&.4\&.3, the default value for this parameter was undefined, although the default behavior for
\fBndbmtd\fR
was to use 1 LQH thread, as though
MaxNoOfExecutionThreads
had been set to 2\&. Beginning with MySQL Cluster NDB 7\&.0\&.4, this parameter has an explcit default value of 2, thus guaranteeing this default behavior\&.
.PP
In MySQL Cluster NDB 7\&.0, it is not possible to cause
\fBndbmtd\fR
to use more than 1 TC thread, although we plan to introduce this capability in a future MySQL Cluster release series\&.
.\" MySQL Cluster: log files
.\" log files (MySQL Cluster): ndbmtd
.\" ndbmtd: trace files
.PP
Like
\fBndbd\fR,
\fBndbmtd\fR
generates a set of log files which are placed in the directory specified by
DataDir
in the
config\&.ini
configuration file\&. Except for trace files, these are generated in the same way and have the same names as those generated by
\fBndbd\fR\&.
.PP
In the event of a critical error,
\fBndbmtd\fR
generates trace files describing what happened just prior to the error\' occurrence\&. These files, which can be found in the data node\'s
DataDir, are useful for analysis of problems by the MySQL Cluster Development and Support teams\&. One trace file is generated for each
\fBndbmtd\fR
thread\&. The names of these files follow the pattern
ndb_\fInode_id\fR_trace\&.log\&.\fItrace_id\fR_t\fIthread_id\fR, where
\fInode_id\fR
is the data node\'s unique node ID in the cluster,
\fItrace_id\fR
is a trace sequence number, and
\fIthread_id\fR
is the thread ID\&. For example, in the event of the failure of an
\fBndbmtd\fR
process running as a MySQL Cluster data node having the node ID 3 and with
MaxNoOfExecutionThreads
equal to 4, four trace files are generated in the data node\'s data directory; if the is the first time this node has failed, then these files are named
ndb_3_trace\&.log\&.1_t1,
ndb_3_trace\&.log\&.1_t2,
ndb_3_trace\&.log\&.1_t3, and
ndb_3_trace\&.log\&.1_t4\&. Internally, these trace files follow the same format as
\fBndbd\fR
trace files\&.
.PP
The
\fBndbd\fR
exit codes and messages that are generated when a data node process shuts down prematurely are also used by
\fBndbmtd\fR\&. See
\m[blue]\fBndbd Error Messages\fR\m[]\&\s-2\u[3]\d\s+2, for a listing of these\&.
.if n \{\
.sp
.\}
.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBNote\fR
.ps -1
.br
.PP
It is possible to use
\fBndbd\fR
and
\fBndbmtd\fR
concurrently on different data nodes in the same MySQL Cluster\&. However, such configurations have not been tested extensively; thus, we cannot not recommend doing so in a production setting at this time\&.
.sp .5v
.RE
.SH "COPYRIGHT"
.br
.PP
Copyright 2007-2008 MySQL AB, 2008-2010 Sun Microsystems, Inc., 2010-2015 MariaDB Foundation
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
.sp
.SH "NOTES"
.IP " 1." 4
Bug#41915
.RS 4
\%http://bugs.mysql.com/bug.php?id=41915
.RE
.IP " 2." 4
Bug#44915
.RS 4
\%http://bugs.mysql.com/bug.php?id=44915
.RE
.IP " 3." 4
ndbd Error Messages
.RS 4
\%http://dev.mysql.com/doc/ndbapi/en/ndbd-error-messages.html
.RE
.SH "SEE ALSO"
For more information, please refer to the MariaDB Knowledge Base, available online at https://mariadb.com/kb/
.SH AUTHOR
MariaDB Foundation (http://www.mariadb.org/).
|