ndbmtd 是 ndbd 的多线程版本,用于处理使用 NDBCLUSTER
存储引擎的表中的所有数据。 ndbmtd 旨在用于具有多个 CPU 内核的主机计算机。 除非另有说明,否则 ndbmtd 的功能与 ndbd 相同; 因此,在本节中,我们将重点介绍 ndbmtd 与 ndbd 的区别,您应该参考 第 25.5.1 节,“ndbd — NDB 集群数据节点守护进程”,以获取有关运行 NDB 集群数据节点的更多信息,这些信息适用于数据节点进程的单线程和多线程版本。
用于 ndbd 的命令行选项和配置参数也适用于 ndbmtd。 有关这些选项和参数的更多信息,请分别参见 第 25.5.1 节,“ndbd — NDB 集群数据节点守护进程” 和 第 25.4.3.6 节,“定义 NDB 集群数据节点”。
ndbmtd 也与 ndbd 兼容文件系统。 换句话说,运行 ndbd 的数据节点可以停止,二进制文件被替换为 ndbmtd,然后重新启动,而不会丢失任何数据。(但是,在执行此操作时,您必须确保 MaxNoOfExecutionThreads
在重新启动节点之前设置了适当的值,如果您希望 ndbmtd 以多线程方式运行。)类似地,ndbmtd 二进制文件可以简单地通过停止节点,然后启动 ndbd 来替换 ndbd。 在这两种之间切换时,不需要使用 --initial
启动数据节点二进制文件。
使用 ndbmtd 与使用 ndbd 在两个关键方面有所不同
因为 ndbmtd 默认以单线程模式运行(即,其行为类似于 ndbd),您必须对其进行配置以使用多个线程。 这可以通过在
config.ini
文件中为MaxNoOfExecutionThreads
配置参数或ThreadConfig
配置参数设置适当的值来完成。 使用MaxNoOfExecutionThreads
更简单,但ThreadConfig
提供了更大的灵活性。 有关这些配置参数及其用途的更多信息,请参见 多线程配置参数 (ndbmtd)。跟踪文件是由 ndbmtd 进程中的严重错误生成的,方式与 ndbd 故障生成这些文件的方式略有不同。 这些差异将在接下来的几段中详细讨论。
与 ndbd 一样,ndbmtd 生成一组日志文件,这些文件放置在由 DataDir
在 config.ini
配置文件中指定的目录中。 除跟踪文件外,这些文件以与 ndbd 生成的文件相同的方式生成,并且具有相同的名称。
如果出现严重错误,ndbmtd 会生成跟踪文件,描述错误发生之前的事件。 这些文件位于数据节点的 DataDir
中,可用于 NDB 集群开发和支持团队分析问题。 每个 ndbmtd 线程都会生成一个跟踪文件。 这些文件的名称遵循以下模式
ndb_node_id_trace.log.trace_id_tthread_id,
在此模式中,node_id
代表数据节点在集群中的唯一节点 ID,trace_id
是跟踪序列号,thread_id
是线程 ID。 例如,如果作为具有节点 ID 3 的 NDB 集群数据节点运行的 ndbmtd 进程出现故障,并且 MaxNoOfExecutionThreads
等于 4,则在数据节点的数据目录中生成四个跟踪文件。 如果这是该节点第一次出现故障,则这些文件名为 ndb_3_trace.log.1_t1
、ndb_3_trace.log.1_t2
、ndb_3_trace.log.1_t3
和 ndb_3_trace.log.1_t4
。 在内部,这些跟踪文件的格式与 ndbd 跟踪文件相同。
ndbd 退出代码和消息在数据节点进程过早关闭时也会由 ndbmtd 生成。 请参见 数据节点错误消息,以获取这些消息的列表。