ndbd — NDB群集数据节点守护程序
ndbd是用于使用NDB群集存储引擎处理表中所有数据的过程。这个过程使数据节点能够完成分布式事务处理,节点恢复,磁盘检查点,在线备份和相关任务。
在NDB群集中,一组ndbd进程合作处理数据。这些过程可以在同一台计算机(主机)上或不同计算机上执行。数据节点与群集主机之间的对应关系是完全可配置的。
下表包括特定于NDB群集数据节点程序ndbd的命令选项。附加说明如下表。有关大多数NDB群集程序(包括ndbd)通用的选项,请参见“ NDB群集程序的通用选项— NDB群集程序的通用选项”。
ndbd程序的命令行选项
格式 | 描述 | 添加,不建议使用或删除 |
---|---|---|
| 本地绑定地址 | (在所有基于MySQL 8.0的版本中受支持) |
| 两次尝试联系管理服务器之间等待的时间(以秒为单位);0表示不要在两次尝试之间等待 | (在所有基于MySQL 8.0的版本中受支持) |
| 设置放弃前重试连接的次数;0表示仅尝试1次(并且不重试) | (在所有基于MySQL 8.0的版本中受支持) |
| 两次尝试联系管理服务器之间等待的时间(以秒为单位);0表示不要在两次尝试之间等待 | (在所有基于MySQL 8.0的版本中受支持) |
| 启动ndbd作为守护程序(默认);用--nodaemon覆盖 | (在所有基于MySQL 8.0的版本中受支持) |
| 在前台运行ndbd(提供用于调试目的)(意味着--nodaemon) | (在所有基于MySQL 8.0的版本中受支持) |
| 执行ndbd的初始启动,包括清理文件系统。使用此选项之前,请查阅文档 | (在所有基于MySQL 8.0的版本中受支持) |
| 执行部分初始启动(需要--nowait-nodes) | (在所有基于MySQL 8.0的版本中受支持) |
| 用于将数据节点进程安装为Windows服务。不适用于非Windows平台 | (在所有基于MySQL 8.0的版本中受支持) |
| 日志缓冲区的控制大小。用于调试时生成许多日志消息;默认值足以正常运行 | (在所有基于MySQL 8.0的版本中受支持) |
| 不要将ndbd作为守护程序启动;提供用于测试目的 | (在所有基于MySQL 8.0的版本中受支持) |
| 不要立即启动ndbd。ndbd等待命令从ndb_mgmd开始 | (在所有基于MySQL 8.0的版本中受支持) |
| 不要等待这些数据节点启动(使用逗号分隔的节点ID列表)。还要求使用--ndb-nodeid | (在所有基于MySQL 8.0的版本中受支持) |
| 用于删除以前作为Windows服务安装的数据节点进程。不适用于非Windows平台 | (在所有基于MySQL 8.0的版本中受支持) |
| 使数据日志将额外的调试信息写入节点日志 | (在所有基于MySQL 8.0的版本中受支持) |
注意所有这些选项也都适用于该程序的多线程版本(ndbmtd),并且在本节中出现后者的任何地方,都可以用“ndbmtd”代替“ndbd”。
--bind-address
属性 值 命令行格式 --bind-address=name 类型 string 默认值 使ndbd绑定到特定的网络接口(主机名或IP地址)。此选项没有默认值。
--connect-delay=#
属性 值 命令行格式 --connect-delay=# 不推荐使用 是 类型 数字 默认值 5 最低值 0 最大值 3600 确定启动时尝试与管理服务器联系之间的等待时间(尝试次数由
--connect-retries
选项控制)。默认值为5秒。此选项已被弃用,并且在以后的NDB Cluster版本中会被删除。使用
--connect-retry-delay
代替。--connect-retries=#
属性 值 命令行格式 --connect-retries=# 类型 数字 默认值 12 最低值 0 最大值 65535 设置放弃前重试连接的次数;0表示仅尝试1次(并且不重试)。默认值为12次尝试。两次尝试之间的等待时间由该
--connect-retry-delay
选项控制。--connect-retry-delay=#
属性 值 命令行格式 --connect-retry-delay=# 类型 数字 默认值 5 最低值 0 最大值 4294967295 确定启动时尝试与管理服务器联系之间的等待时间(尝试之间的时间由
--connect-retries
选项控制)。默认值为5秒。该选项代替了该
--connect-delay
选项,该选项现在已被弃用,并且在以后的NDB Cluster版本中会被删除。--daemon
,-d
属性 值 命令行格式 --daemon 类型 布尔型 默认值 TRUE 指示ndbd或ndbmtd作为守护进程执行。这是默认行为。
--nodaemon
可用于阻止进程作为守护程序运行。在Windows平台上运行ndbd或ndbmtd时,此选项无效。
--foreground
属性 值 命令行格式 --foreground 类型 布尔型 默认值 FALSE 使ndbd或ndbmtd作为前台进程执行,主要用于调试目的。此选项暗含该
--nodaemon
选项。在Windows平台上运行ndbd或ndbmtd时,此选项无效。
--initial
属性 值 命令行格式 --initial 类型 布尔型 默认值 FALSE 指示ndbd执行初始启动。初始启动会删除ndbd的较早实例为恢复目的而创建的所有文件。它还会重新创建恢复日志文件。在某些操作系统上,此过程可能会花费大量时间。
一
--initial
开始是用来仅在启动时的ndbd非常特殊的情况的过程;这是因为此选项导致从NDB群集文件系统中删除所有文件,并重新创建所有重做日志文件。这些情况在这里列出:- 执行软件升级时,更改了所有文件的内容。
- 使用新版本的ndbd重新启动节点时。
- 作为最后的手段,由于某种原因,节点重新启动或系统重新启动会失败。在这种情况下,请注意由于数据文件的破坏,该节点不再可用于还原数据。
警告
为避免最终数据丢失的可能性,建议您不要将该
--initial
选项与一起使用StopOnError = 0
。相反,仅在启动集群后才将其设置StopOnError
为0config.ini
,然后按正常方式重新启动数据节点,即不带该--initial
选项。有关StopOnError
此问题的详细说明,请参见参数说明。(缺陷#24945638)使用此选项可防止
StartPartialTimeout
和StartPartitionedTimeout
配置参数生效。重要
这个选项不会影响以下类型的文件之一:
- 受影响的节点已经创建的备份文件
- NDB群集磁盘数据文件(请参见“ NDB群集磁盘数据表”)。
此选项也不会影响刚刚从已运行的数据节点启动(或重新启动)的数据节点的数据恢复。这种数据恢复是自动进行的,不需要用户干预正常运行的NDB群集。
第一次启动集群时(即在创建任何数据节点文件之前),可以使用此选项。但是,没有必要这样做。
--initial-start
属性 值 命令行格式 --initial-start 类型 布尔型 默认值 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使用此选项时,还必须为使用该选项启动的数据节点指定节点ID
--ndb-nodeid
。重要
请勿将此选项与ndb_mgmd的
--nowait-nodes
选项混淆,该选项可用于使配置有多个管理服务器的集群在所有管理服务器不联机的情况下启动。--install[=name]
属性 值 命令行格式 --install[=name] 特定于平台 windows 类型 string 默认值 ndbd 使ndbd作为Windows服务安装。(可选)您可以指定服务的名称;如果未设置,则服务名称默认为
ndbd
。尽管最好在或配置文件中指定其他ndbd程序选项,但也可以与一起使用。但是,在这种情况下,必须首先指定选项,然后再给出其他任何选项,Windows服务安装才能成功。my.ini
my.cnf
--install
--install
通常不建议将此选项与该选项一起使用
--initial
,因为每次服务停止和启动时,这都会导致擦除和重建数据节点文件系统。至尊还应注意,如果你打算使用任何其他采取NDBD影响数据节点,包括启动选项--initial-start
,--nostart
以及--nowait-nodes
与-together--install
,你应该绝对确保你完全理解并允许做任何可能的后果所以。该
--install
选项在非Windows平台上无效。--logbuffer-size=#
属性 值 命令行格式 --logbuffer-size=# 类型 整数 默认值 32768 最低值 2048 最大值 4294967295 设置数据节点日志缓冲区的大小。当使用大量额外的日志进行调试时,如果日志消息太多,则日志缓冲区可能会用完空间,在这种情况下,某些日志消息可能会丢失。在正常操作期间不应发生这种情况。
--nodaemon
属性 值 命令行格式 --nodaemon 类型 布尔型 默认值 FALSE 防止ndbd或ndbmtd作为守护进程执行。此选项将覆盖该
--daemon
选项。在调试二进制文件时,这对于将输出重定向到屏幕很有用。Windows上ndbd和ndbmtd的默认行为是在前台运行,从而使该选项在Windows平台上无效(在该平台上无效)。
--nostart
,-n
属性 值 命令行格式 --nostart 类型 布尔型 默认值 FALSE 指示ndbd不要自动启动。使用此选项时,ndbd连接到管理服务器,从管理服务器获取配置数据,并初始化通信对象。但是,它直到管理服务器明确要求才真正启动执行引擎。这可以通过
START
在管理客户端中发出正确的命令来完成(请参见“ NDB群集管理客户端中的命令”)。--nowait-nodes=node_id_1[,node_id_2[,...]]
属性 值 命令行格式 --nowait-nodes=list 类型 string 默认值 此选项获取一个数据节点列表,群集在启动之前将不为其等待数据节点。
这可用于以分区状态启动群集。例如,要在四节点群集中仅运行一半数据节点(节点2、3、4和5)的情况下启动群集,则可以使用启动每个ndbd进程
--nowait-nodes=3,5
。在这种情况下,群集只要节点2和4连接开始,并且不会不等待StartPartitionedTimeout
对节点3和5毫秒来连接,因为它会以其他方式。如果要启动与上一个示例中相同的群集而没有一个ndbd(例如,节点3的主机发生硬件故障),请使用来启动节点2、4和5
--nowait-nodes=3
。然后,群集将在节点2、4和5连接后立即启动,并且不会等待节点3启动。--remove[=name]
属性 值 命令行格式 --remove[=name] 特定于平台 windows 类型 string 默认值 ndbd 导致删除以前作为Windows服务安装的ndbd进程。(可选)您可以为要卸载的服务指定名称。如果未设置,则服务名称默认为
ndbd
。该
--remove
选项在非Windows平台上无效。--verbose
,-v
导致将额外的调试输出写入节点日志。
您还可以在数据节点运行时使用
NODELOG DEBUG ON
和NODELOG DEBUG OFF
启用和禁用此额外的日志记录。
ndbd生成一组日志文件,这些日志文件放置在配置文件中指定的目录DataDir
中config.ini
。
这些日志文件在下面列出。node_id
是,代表节点的唯一标识符。例如,ndb_2_error.log
是由节点ID为的数据节点生成的错误日志2
。
ndb_node_id_error.log
是一个文件,其中包含所引用的ndbd进程遇到的所有崩溃的记录。该文件中的每个记录都包含一个简短的错误字符串和对此崩溃的跟踪文件的引用。该文件中的典型条目可能如下所示: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退出代码和在数据节点进程过早关闭时生成的消息的列表。
重要
错误日志文件中的最后一项不一定是最新的(也不可能是最新的)。错误日志中的条目未按时间顺序列出;相反,它们与文件中确定的跟踪文件的顺序相对应(请参见下文)。因此,错误日志条目将以周期性而非顺序的方式被覆盖。
ndb_node_id_trace.log.next
ndb_node_id_trace.log.trace_id
是一个跟踪文件,准确描述了错误发生之前发生的情况。此信息对于NDB群集开发团队的分析很有用。可以配置在覆盖旧文件之前将创建的这些跟踪文件的数量。
trace_id
是一个数字,该数字对于每个连续的跟踪文件递增。ndb_node_id_trace.log.next
是跟踪下一个要分配的跟踪文件号的文件。ndb_node_id_out.log
是包含ndbd进程输出的任何数据的文件。仅当ndbd作为守护程序启动时才创建此文件,这是默认行为。ndb_node_id.pid
是一个文件,其中包含作为守护程序启动的ndbd进程的进程ID 。它还用作锁定文件,以避免启动具有相同标识符的节点。ndb_node_id_signal.log
是仅在ndbd的调试版本中使用的文件,在ndbd进程中可以跟踪所有传入,传出和内部消息及其数据。
建议不要使用通过NFS挂载的目录,因为在某些环境中,这可能会导致问题,.pid
即使在进程终止后,文件上的锁定仍然有效。
要启动ndbd,可能还需要指定管理服务器的主机名和它正在监听的端口。可选地,还可以指定该进程要使用的节点ID。
shell>ndbd --connect-string="nodeid=2;host=ndb_mgmd.mysql.com:1186"
有关此问题的更多信息,请参见“ NDB群集连接字符串”。“ NDB群集程序通用的选项-NDB群集程序通用的选项”描述了可与ndbd一起使用的其他命令行选项。有关数据节点配置参数的信息,请参见“定义NDB群集数据节点”。
当ndbd启动时,它实际上会启动两个进程。其中第一个被称为“天使进程”; 它的唯一工作是发现执行过程何时完成,然后配置为重新启动ndbd进程。因此,如果您尝试使用Unix kill命令杀死ndbd,则有必要杀死两个进程,从angel进程开始。终止ndbd进程的首选方法是使用管理客户端,然后从那里停止该进程。
执行过程使用一个线程来读取,写入和扫描数据以及所有其他活动。该线程是异步实现的,因此它可以轻松处理数千个并发操作。另外,监视线程监视执行线程,以确保它不会死于无限循环。线程池处理文件I / O,每个线程都能够处理一个打开的文件。线程也可以在ndbd进程中用于传输器的传输器连接。在执行大量操作(包括更新)的多处理器系统中,如果允许的话,ndbd进程最多可以消耗2个CPU。
对于具有许多CPU的计算机,可以使用几个属于不同节点组的ndbd进程;但是,这样的配置仍被认为是实验性的,在生产环境中不受MySQL 8.0的支持。请参见“ NDB群集的已知限制”。