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