概述
本章,您将学习到数据节点中使用的 ndbd 和 ndbmtd 命令。
ndbd 命令
该命令是用来处理 NDB Cluster 存储引擎中所有表数据的进程。该进程可以完成分布式事务处理、节点恢复、磁盘检查点、在线备份以及其他相关任务。
由于有多个数据节点,因此在 NDB Cluster 中,处理表数据用的是一组 ndbd 进程。
命令格式说明如下:
- "[ ]" 表示可选
- "{ }" 表示必须在给出的值中选择一个
- "< >" 表示必选
- "#" 表示需要用整数作为替换
一些常见的选项如下:
-
--bind-address=name- 将 ndbd 绑定到特定的网络接口(主机名或 IP 地址) -
--connect-retries=#- 在放弃与管理节点连接之前,重试的连接次数。0 值表示仅尝试一次且不重试;-1 值表示无限次尝试连接。默认值为 12 -
--ndb-connectstring=string- 指向管理节点的连接字符串,若有多个管理节点,则需要使用逗号分隔连接字符串 -
--daemon- 默认启用该选项(即使未在命令行中指定),表示以守护进程(后台进程)执行 ndbd -
--nodaemon- 不已守护进程(后台进程)执行 ndbd,常用于测试目的 -
--help- 显示帮助信息 -
--initial- 让 ndbd 执行初始化启动。初始化启动将会擦除所有的文件(包括用于 ndbd 恢复目的的文件),这一过程可能会消耗大量的时间。初始化启动后,会重新创建用于恢复的日志文件。当使用了新版本的 ndbd 并且重新启动节点时,该选项才会被需要,但为了避免数据丢失,您需要知道使用该选项带来的后果与风险。 -
--initial-start- 对部分数据节点执行初始化启动,需要与 --nowait-nodes 选项搭配使用。 -
--nowait-nodes=node_id_1[,node_id_2[,...]]- 在启动之前不需要等待的数据节点的节点 ID -
--logbuffer-size=#- 设置数据节点的日志缓冲区大小(以字节 B 为单位)。在做调试时,会生成大量的额外日志记录,如果日志消息过多,有可能日志缓冲区会被耗尽空间,导致某些日志消息出现丢失的情况。默认值为 32768 -
--nostart- 指定 ndbd 不自动启动。当使用该选项后,您需要通过管理节点明确发出执行启动的命令Shell > ndb_mgm -- NDB Cluster -- Management Client -- ndb_mgm> node_id start -
--print-defaults- 打印程序参数列表并退出
其他未涉及的部分,参阅 这里
ndbmtd 命令(ndbd 的多线程版本)
默认情况下,该命令默认运行于单线程模式。若要让该命令运行于多线程模式,需要在管理节点的 config.ini 中指定 MaxNoOfExecutionThreads 或 ThreadConfig 配置参数。其中 MaxNoOfExecutionThreads 的配置更加简单,但 ThreadConfig 会更加精细与灵活。
ndbd 命令中的选项也适用于 ndbmtd ,参阅 这里。
前面简单配置了管理节点的 config.ini 文件,其内容为:
[ndbd default]
NoOfReplicas=2
DataMemory=98M
[ndb_mgmd]
HostName=192.168.100.10
DataDir=/var/log/mysql-cluster
[ndbd]
HostName=192.168.100.12
NodeId=2
DataDir=/usr/local/mysql/data
[ndbd]
HostName=192.168.100.14
NodeId=3
DataDir=/usr/local/mysql/data
[mysqld]
HostName=192.168.100.16
若需要为每个数据节点启用多线程,则修改的位置为:
[ndbd default]
NoOfReplicas=2
DataMemory=98M
MaxNoOfExecutionThreads=3
[ndb_mgmd]
HostName=192.168.100.10
DataDir=/var/log/mysql-cluster
[ndbd]
HostName=192.168.100.12
NodeId=2
DataDir=/usr/local/mysql/data
[ndbd]
HostName=192.168.100.14
NodeId=3
DataDir=/usr/local/mysql/data
[mysqld]
HostName=192.168.100.16
通常而言,MaxNoOfExecutionThreads 的值应设置为 CPU 物理核心数的 70% ~ 90% 之间。
| CPU 核心数 | 建议值 |
|---|---|
| 4 | 3 |
| 6 | 4 |
| 8 | 6 |
| 16 | 12~14 |
| 32 | 24~28 |
两个命令的对比
| 特性 | ndbd | ndbmtd |
|---|---|---|
| 线程模型 | 单线程 | 多线程 |
| 并发能力 | 低,受限于单核性能 | 高,可充分利用多核 CPU,支持并行处理 |
| 吞吐量 | 适合轻量级测试或低并发场景 | 适合高并发、高吞吐的生产环境 |
| 资源占用 | 内存与 CPU 占用较低 | 内存开销更大,但 CPU 利用率更高 |
| 启动命令 | ndbd |
ndbmtd |
| 适用场景 | 开发、测试、单节点演示 | 生产环境 |










