21.4.1 ndbd-NDB 群集数据节点守护程序

ndbd是用于使用 NDB Cluster 存储引擎处理 table 中所有数据的过程。这个过程使数据节点能够完成分布式事务处理,节点恢复,磁盘检查点,在线备份以及相关任务。

在 NDB 群集中,一组ndbd进程合作处理数据。这些过程可以在同一台计算机(主机)上或不同计算机上执行。数据节点与群集主机之间的对应关系是完全可配置的。

下 table 包括特定于 NDB 群集数据节点程序ndbd的命令选项。附加说明如下 table 所示。有关大多数 NDB 群集程序(包括ndbd)共有的选项,请参见第 21.4.32 节“ NDB 群集程序的公用选项-NDB 群集程序的公用选项”

table21.239 NDBD 程序的命令行选项

Format Description 添加,不建议使用或删除
--bind-address=name 本地绑定地址 (在所有基于 MySQL 5.7 的版本中受支持)
--connect-delay=# 两次尝试联系 Management 服务器之间 await 的时间(以秒为单位); 0table 示不要在两次尝试之间 await (在所有基于 MySQL 5.7 的版本中受支持)
--connect-retries=# 设置放弃前重试连接的次数; 0table 示仅尝试 1 次(并且不重试) (在所有基于 MySQL 5.7 的版本中受支持)
--connect-retry-delay=# 两次尝试联系 Management 服务器之间 await 的时间(以秒为单位); 0table 示不要在两次尝试之间 await (在所有基于 MySQL 5.7 的版本中受支持)
--daemon ,

-d
将 ndbd 作为守护程序启动(默认);用--nodaemon 覆盖((所有基于 MySQL 5.7 的版本均支持)
--foreground 在前台运行 ndbd(提供用于调试目的)(意味着--nodaemon) (在所有基于 MySQL 5.7 的发行版中受支持)
--initial 执行 ndbd 的初始启动,包括文件系统清理;使用此选项之前,请参考文档 (所有基于 MySQL 5.7 的版本均支持)
--initial-start 执行部分初始启动(需要--nowait-nodes) (在所有基于 MySQL 5.7 的版本中受支持)
--install[=name] 用于将数据节点进程安装为 Windows 服务;不适用于其他平台 (在所有基于 MySQL 5.7 的版本中受支持)
--logbuffer-size=# 控制日志缓冲区的大小;用于调试时生成许多日志消息;默认值对于正常操作是足够的 添加:NDB 7.6.6
--nodaemon 请勿将 ndbd 作为守护程序启动;提供用于测试目的((所有基于 MySQL 5.7 的版本均支持)
--nostart ,
-n
不要立即启动 ndbd; ndbdawait 命令从 ndb_mgm 开始(在所有基于 MySQL 5.7 的发行版中受支持)
--nowait-nodes=list 请勿 await 这些数据节点启动(获取以逗号分隔的节点 ID 列 table);需要--ndb-nodeid (在所有基于 MySQL 5.7 的版本中受支持)
--remove[=name] 用于删除以前作为 Windows 服务安装的数据节点进程;不适用于其他平台 (在所有基于 MySQL 5.7 的版本中受支持)
--verbose ,
-v
将额外的调试信息写入节点日志 (所有基于 MySQL 5.7 的版本均支持)

Note

所有这些选项也都适用于该程序的多线程版本(ndbmtd),并且在本节中出现的“ ndbd”中都可以用“ ndbmtd”代替。

Property Value
Command-Line Format --bind-address=name
Type String
Default Value ``

使ndbd绑定到特定的网络接口(主机名或 IP 地址)。此选项没有默认值。

Property Value
Command-Line Format --connect-delay=#
Deprecated Yes
Type Numeric
Default Value 5
Minimum Value 0
Maximum Value 3600

确定启动时尝试与 Management 服务器联系之间的 await 时间(尝试次数由--connect-retries选项控制)。默认值为 5 秒。

此选项已被弃用,并且在以后的 NDB Cluster 版本中会被删除。请改用--connect-retry-delay

Property Value
Command-Line Format --connect-retries=#
Type Numeric
Default Value 12
Minimum Value 0
Maximum Value 65535

设置放弃前重试连接的次数; 0table 示仅尝试 1 次(并且不重试)。默认值为 12 次尝试。两次尝试之间的 await 时间由--connect-retry-delay选项控制。

Property Value
Command-Line Format --connect-retry-delay=#
Type Numeric
Default Value 5
Minimum Value 0
Maximum Value 4294967295

确定启动之间尝试与 Management 服务器联系的 await 时间(两次尝试之间的时间由--connect-retries选项控制)。默认值为 5 秒。

该选项代替了--connect-delay选项,该选项已被弃用,并且在以后的 NDB Cluster 版本中会被删除。

Property Value
Command-Line Format --daemon
Type Boolean
Default Value TRUE

指示ndbdndbmtd作为守护进程执行。这是默认行为。 --nodaemon可用于防止进程作为守护程序运行。

在 Windows 平台上运行ndbdndbmtd时,此选项无效。

Property Value
Command-Line Format --foreground
Type Boolean
Default Value FALSE

使ndbdndbmtd作为前台进程执行,主要用于调试目的。此选项暗含--nodaemon选项。

在 Windows 平台上运行ndbdndbmtd时,此选项无效。

Property Value
Command-Line Format --initial
Type Boolean
Default Value FALSE

指示ndbd执行初始启动。初始启动会删除ndbd的较早实例为恢复目的而创建的所有文件。它还会重新创建恢复日志文件。在某些 os 上,此过程可能会花费大量时间。

在非常特殊的情况下,启动ndbd进程时,使用--initial start。这是因为此选项导致从 NDB 群集文件系统中删除所有文件,并重新创建所有重做日志文件。这些情况在这里列出:

Warning

为了避免最终数据丢失的可能性,建议您不要StopOnError = 0一起使用--initial选项。相反,仅在启动集群后,才将_5 中的StopOnError设置为 0,然后正常重新启动数据节点-即不使用--initial选项。有关此问题的详细说明,请参见StopOnError参数的说明。 (缺陷#24945638)

使用此选项可防止StartPartialTimeoutStartPartitionedTimeout配置参数生效。

Important

此选项不会影响以下两种文件类型:

此选项还对刚刚从已运行的数据节点启动(或重新启动)的数据节点的数据恢复没有影响。数据的这种恢复是自动进行的,不需要用户干预正常运行的 NDB 群集。

第一次启动集群(即在创建任何数据节点文件之前)时,可以使用此选项。但是,没有这样做。

Property Value
Command-Line Format --initial-start
Type Boolean
Default Value FALSE

在执行集群的部分初始启动时使用此选项。每个节点都应以该选项以及--nowait-nodes开头。

假设您有一个 4 节点集群,其数据节点的 ID 为 2、3、4 和 5,并且希望仅使用节点 2、4 和 5(即省略节点 3)来执行部分初始启动。

shell> ndbd --ndb-nodeid=2 --nowait-nodes=3 --initial-start
shell> ndbd --ndb-nodeid=4 --nowait-nodes=3 --initial-start
shell> ndbd --ndb-nodeid=5 --nowait-nodes=3 --initial-start

使用此选项时,还必须为使用--ndb-nodeid选项启动的数据节点指定节点 ID。

Important

不要将此选项与ndb_mgmd--nowait-nodes选项混淆,该选项可用于启用配置有多个 Management 服务器的群集,而无需所有 Management 服务器都处于联机状态。

Property Value
Command-Line Format --install[=name]
Platform Specific Windows
Type String
Default Value ndbd

使ndbd作为 Windows 服务安装。 (可选)您可以指定服务的名称;如果未设置,则服务名称默认为ndbd。尽管最好在my.inimy.cnf配置文件中指定其他ndbd程序选项,但是可以与--install一起使用。但是,在这种情况下,必须先指定--install选项,然后再给出其他任何选项,Windows 服务安装才能成功。

通常不建议将此选项与--initial选项一起使用,因为这会在每次停止和启动服务时擦除并重建数据节点文件系统。如果打算使用影响--initial-start--nostart--nowait-nodes的其他任何ndbd选项(包括--initial-start--nostart--nowait-nodes)以及--install,也要格外小心,并且应绝对确保您完全理解并允许任何其他操作。这样做可能带来的后果。

--install选项在非 Windows 平台上无效。

Property Value
Command-Line Format --logbuffer-size=#
Introduced 5.7.22-ndb-7.6.6
Type Integer
Default Value 32768
Minimum Value 2048
Maximum Value 4294967295

设置数据节点日志缓冲区的大小。使用大量额外日志进行调试时,如果日志消息太多,则日志缓冲区可能会用完空间,在这种情况下,某些日志消息可能会丢失。在正常操作期间不应发生这种情况。

Property Value
Command-Line Format --nodaemon
Type Boolean
Default Value FALSE

阻止ndbdndbmtd作为守护进程执行。此选项将覆盖--daemon选项。在调试二进制文件时,这对于将输出重定向到屏幕很有用。

Windows 上ndbdndbmtd的默认行为是在前台运行,从而使该选项在 Windows 平台上不再起作用,在该平台上无效。

Property Value
Command-Line Format --nostart
Type Boolean
Default Value FALSE

指示ndbd不要自动启动。使用此选项时,ndbd连接到 Management 服务器,从中获取配置数据,并初始化通信对象。但是,它直到 Management 服务器明确要求才 true 启动执行引擎。这可以通过在 ManagementClient 端中发出正确的START命令来实现(请参见第 21.5.1 节“ NDB 群集 ManagementClient 端中的命令”)。

Property Value
Command-Line Format --nowait-nodes=list
Type String
Default Value ``

此选项获取一个数据节点列 table,群集在启动之前将不为其 await 数据节点。

这可用于以分区状态启动群集。例如,要在四节点集群中仅运行一半的数据节点(节点 2、3、4 和 5)来启动集群,可以使用--nowait-nodes=3,5启动每个ndbd进程。在这种情况下,群集将在节点 2 和 4 连接后立即启动,并且不像其他情况那样 awaitStartPartitionedTimeout毫秒 await 节点 3 和 5 连接。

如果要启动与上一个示例相同的群集而没有一个ndbd(例如,节点 3 的主机发生硬件故障),请使用--nowait-nodes=3启动节点 2、4 和 5.然后,群集将在节点 2、4 和 5 连接后立即启动,并且不会 await 节点 3 启动。

Property Value
Command-Line Format --remove[=name]
Platform Specific Windows
Type String
Default Value ndbd

导致删除先前作为 Windows 服务安装的ndbd进程。 (可选)您可以指定要卸载的服务的名称。如果未设置,则服务名称默认为ndbd

--remove选项在非 Windows 平台上无效。

导致将额外的调试输出写入节点日志。

在 NDB 7.6.4 和更高版本中,您还可以在数据节点运行时使用NODELOG 调试开启NODELOG 调试关闭启用和禁用此额外的日志记录。

ndbd生成一组日志文件,这些日志文件位于config.ini配置文件中DataDir指定的目录中。

这些日志文件在下面列出。 * node_id *是并且 table 示节点的唯一标识符。例如,ndb_2_error.log是由节点 ID 为2的数据节点生成的错误日志。

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***

可以在数据节点错误消息中找到可能的ndbd退出代码和在数据节点进程过早关闭时生成的消息的列 table。

Important

错误日志文件中的最后一个条目不一定是最新的(也可能不是)。错误日志中的条目未按时间 Sequences 列出;相反,它们与ndb_node_id_trace.log.next文件中确定的跟踪文件的 Sequences 相对应(请参见下文)。因此,错误日志条目将以周期性而非 Sequences 的方式被覆盖。

可以配置在覆盖旧文件之前将创建的这些跟踪文件的数量。 * trace_id *是对于每个连续的跟踪文件递增的数字。

建议不要使用通过 NFS 挂载的目录,因为在某些环境中,这可能会导致问题,即使进程终止后,对.pid文件的锁定仍然有效。

要启动ndbd,可能还需要指定 Management 服务器的主机名和它正在监听的端口。可选地,还可以指定该进程要使用的节点 ID。

shell> ndbd --connect-string="nodeid=2;host=ndb_mgmd.mysql.com:1186"

有关此问题的其他信息,请参见第 21.3.3.3 节“ NDB 群集连接字符串”第 21.4.32 节“ NDB 群集程序的公用选项-NDB 群集程序的公用选项”,描述了可与ndbd一起使用的其他命令行选项。有关数据节点配置参数的信息,请参见第 21.3.3.6 节,“定义 NDB 群集数据节点”

ndbd启动时,实际上会启动两个进程。其中第一个被称为“天使过程”;它的唯一工作是发现执行过程何时完成,然后重新配置ndbd进程(如果已配置)。因此,如果您尝试使用 Unix kill命令杀死ndbd,则有必要杀死两个进程,从 angel 进程开始。终止ndbd进程的首选方法是使用 ManagementClient 端,然后从那里停止该进程。

执行过程使用一个线程来读取,写入和扫描数据以及所有其他活动。该线程是异步实现的,因此它可以轻松处理数千个并发操作。此外,监视线程监视执行线程,以确保它不会死于无限循环。线程池处理文件 I/O,每个线程都能够处理一个打开的文件。线程也可以在ndbd进程中用于传输器的连接。在执行大量操作(包括更新)的 multiprocessing 器系统中,如果允许ndbd进程最多消耗 2 个 CPU。

对于具有许多 CPU 的机器,可以使用多个ndbd进程,这些进程属于不同的节点组。但是,这种配置仍被认为是实验性配置,在生产环境中不受 MySQL 5.7 支持。参见第 21.1.7 节“ NDB 群集的已知限制”

首页