Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  ndbd — The NDB Cluster Data Node Daemon

25.5.1 ndbd — NDB 集群数据节点守护进程

ndbd 是处理使用 NDB 集群存储引擎的所有数据的进程。这是使数据节点能够实现分布式事务处理、节点恢复、磁盘检查点、在线备份和相关任务的进程。

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

可以与 ndbd 一起使用的选项如下表所示。表格后面是详细描述。

表 25.23 与程序 ndbd 一起使用的命令行选项

Format Description Added, Deprecated, or Removed

--bind-address=name

本地绑定地址

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--character-sets-dir=path

包含字符集的目录

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--connect-retries=#

设置连接尝试的次数;0 表示仅尝试一次(不重试);-1 表示无限次重试

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--connect-retry-delay=#

在尝试联系管理服务器之间等待的时间(以秒为单位);0 表示不等待

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--connect-string=connection_string,

-c connection_string

与 --ndb-connectstring 相同

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--core-file

在错误时写入核心文件;用于调试

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--daemon,

-d

以守护进程形式启动 ndbd(默认);使用 --nodaemon 可以覆盖

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--defaults-extra-file=path

在读取全局文件后读取给定的文件

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--defaults-file=path

仅从给定的文件中读取默认选项

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--defaults-group-suffix=string

也读取带有 concat(group, suffix) 的组

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--filesystem-password=password

节点文件系统加密的密码;可以从 stdin、tty 或 my.cnf 文件中传递

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--filesystem-password-from-stdin={TRUE|FALSE}

从 stdin 传递节点文件系统加密的密码

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--foreground

在前台运行 ndbd,用于调试目的(隐含 --nodaemon)

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--help,

-?

显示帮助文本并退出

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--initial

执行 ndbd 的初始启动,包括文件系统清洁;在使用此选项之前,请consult 文档

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--initial-start

执行部分初始启动(需要 --nowait-nodes)

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--install[=name]

用于安装数据节点进程作为 Windows 服务;不适用于其他平台

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--logbuffer-size=#

控制日志缓冲区的大小;用于调试时生成大量日志消息;默认值足以满足正常操作

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--login-path=path

从登录文件中读取给定的路径

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--no-login-paths

不从登录路径文件中读取登录路径

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--ndb-connectstring=connection_string,

-c connection_string

设置连接字符串以连接到 ndb_mgmd。语法:"[nodeid=id;][host=]hostname[:port]"。Overrides NDB_CONNECTSTRING 和 my.cnf 中的条目

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--ndb-mgm-tls=level

ndb_mgm 客户端 TLS 要求级别

ADDED: 8.3.0

--ndb-mgmd-host=connection_string,

-c connection_string

与 --ndb-connectstring 相同

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--ndb-nodeid=#

设置此节点的节点 ID,覆盖 --ndb-connectstring 中设置的任何 ID

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--ndb-tls-search-path=list

包含 TLS 密钥和证书的目录列表

ADDED: 8.3.0

--nodaemon

不以守护进程方式启动 ndbd;仅供测试目的使用

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--no-defaults

不从任何选项文件中读取默认选项,除登录文件外

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--nostart,

-n

不立即启动 ndbd;ndbd 等待来自 ndb_mgm 的启动命令

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--nowait-nodes=list

不等待这些数据节点启动(采用逗号分隔的节点 ID 列表);需要 --ndb-nodeid

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--print-defaults

打印程序参数列表并退出

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--remove[=name]

用于删除之前作为 Windows 服务安装的数据节点进程;不适用于其他平台

(在所有基于 MySQL 8.3 的 NDB 发布版本中支持)

--usage,

-?

显示帮助文本并退出;与 --help 相同

(在所有基于 MySQL 8.3 的 NDB 发布版本中支持)

--verbose,

-v

将额外的调试信息写入节点日志

(在所有基于 MySQL 8.3 的 NDB 发布版本中支持)

--version,

-V

显示版本信息并退出

(在所有基于 MySQL 8.3 的 NDB 发布版本中支持)


Note

所有这些选项也适用于多线程版本的该程序 (ndbmtd),您可以将 ndbmtd 替换为 ndbd 在本节中出现的任何地方。

  • --bind-address

    Command-Line Format --bind-address=name
    Type 字符串
    Default Value

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

  • --character-sets-dir

    Command-Line Format --character-sets-dir=path

    包含字符集的目录。

  • --connect-delay=#

    Command-Line Format --connect-delay=#
    Deprecated
    Type 数字
    Default Value 5
    Minimum Value 0
    Maximum Value 3600

    确定在启动时等待联系管理服务器的时间(尝试次数由 --connect-retries 选项控制)。默认为 5 秒。

    此选项已弃用,将在未来 NDB 集群版本中删除。请使用 --connect-retry-delay 选项代替。

  • --connect-retries=#

    Command-Line Format --connect-retries=#
    Type 数字
    Default Value 12
    Minimum Value -1
    Maximum Value 65535

    设置连接尝试次数;0 表示仅尝试一次(不重试)。默认为 12 次尝试。尝试之间的等待时间由 --connect-retry-delay 选项控制。

    也可以将此选项设置为 -1,在这种情况下,数据节点进程将无限期地尝试连接。

  • --connect-retry-delay=#

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

    确定在启动时等待联系管理服务器的时间(尝试之间的时间由--connect-retries选项控制)。默认为5秒。

    该选项取代了--connect-delay选项,该选项现在已弃用,并将在未来版本的NDB Cluster中删除。

    该选项的短形式-r也已弃用,因此将在未来版本中删除。请使用长形式。

  • --connect-string

    Command-Line Format --connect-string=connection_string
    Type 字符串
    Default Value [none]

    --ndb-connectstring相同。

  • --core-file

    Command-Line Format --core-file

    在错误时写入核心文件;用于调试。

  • --daemon, -d

    Command-Line Format --daemon

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

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

  • --defaults-extra-file

    Command-Line Format --defaults-extra-file=path
    Type 字符串
    Default Value [none]

    在读取全局文件后读取给定的文件。

  • --defaults-file

    Command-Line Format --defaults-file=path
    Type 字符串
    Default Value [none]

    仅从给定的文件中读取默认选项。

  • --defaults-group-suffix

    Command-Line Format --defaults-group-suffix=string
    Type 字符串
    Default Value [none]

    还读取带有concat(group,suffix)的组。

  • --filesystem-password

    Command-Line Format --filesystem-password=password

    使用stdinttymy.cnf文件将文件系统加密和解密密码传递给数据节点进程。

    需要EncryptedFileSystem = 1

    有关更多信息,请参阅第 25.6.14 节,“NDB 集群文件系统加密”

  • --filesystem-password-from-stdin

    Command-Line Format --filesystem-password-from-stdin={TRUE|FALSE}

    stdin传递文件系统加密和解密密码给数据节点进程(仅限)。

    需要EncryptedFileSystem = 1

    有关更多信息,请参阅第 25.6.14 节,“NDB 集群文件系统加密”

  • --foreground

    Command-Line Format --foreground

    使ndbdndbmtd在前台执行,主要用于调试目的。这选项隐含--nodaemon选项。

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

  • --help

    Command-Line Format --help

    显示帮助文本并退出。

  • --initial

    Command-Line Format --initial

    指示ndbd执行初始启动。初始启动将擦除以前实例创建的恢复文件,也重新创建恢复日志文件。在某些操作系统上,这个过程可能需要很长时间。

    该选项还会删除与磁盘数据表空间关联的所有数据文件和与日志文件组关联的撤销日志文件(见第 25.6.11 节,「NDB 集群磁盘数据表」).

    仅在特殊情况下使用--initial启动,因为这将删除 NDB 集群文件系统中的所有文件并重新创建 redo 日志文件。这些情况如下:

    • 在执行软件升级时,该升级改变了文件的内容。

    • 在使用新版本的ndbd重新启动节点时。

    • 作为最后的手段,当节点重启或系统重启反复失败时。在这种情况下,请注意该节点不能用于恢复数据,因为数据文件将被销毁。

    Warning

    为了避免可能的数据丢失,我们建议您使用--initial选项与StopOnError = 0结合使用。相反,在config.ini中将StopOnError设置为 0,然后重新启动数据节点——即,不使用--initial选项。请参阅StopOnError参数的描述,以获取该问题的详细解释。(Bug #24945638)

    使用该选项将阻止StartPartialTimeoutStartPartitionedTimeout配置参数生效。

    Important

    该选项不会影响已经创建的备份文件。

    该选项也不会影响正在运行的数据节点从其他数据节点恢复数据(除非它们也使用--initial选项重新启动)。这种恢复过程将自动发生,不需要用户干预正常运行的 NDB 集群中。

    在第一次启动集群时(即,在创建任何数据节点文件之前),可以使用该选项;但是,这不是必需的。

  • --初始启动

    Command-Line Format --初始启动

    当执行部分初始启动集群时使用此选项。每个节点都应该使用此选项启动,同时也使用 --nowait-nodes

    假设您有一个 4 节点集群,其中数据节点的 ID 为 2、3、4 和 5,您想使用节点 2、4 和 5 执行部分初始启动,即省略节点 3:

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

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

    Important

    不要将此选项与 --nowait-nodes 选项混淆,该选项用于 ndb_mgmd,可以用于启用配置了多个管理服务器的集群,而不需要所有管理服务器在线。

  • --安装[=名称]

    Command-Line Format --安装[=名称]
    Platform Specific Windows
    Type 字符串
    Default Value ndbd

    使 ndbd 作为 Windows 服务安装。可选地,您可以指定服务的名称;如果不设置,默认服务名称为 ndbd。虽然可以在 my.inimy.cnf 配置文件中指定其他 ndbd 程序选项,但是在使用 --install 选项时,必须首先指定该选项,然后才能指定其他选项,以便 Windows 服务安装成功。

    通常不建议将此选项与 --initial 选项一起使用,因为这将导致每次停止和启动服务时数据节点文件系统被擦除和重建。同时,如果您计划使用其他影响数据节点启动的 ndbd 选项,包括 --initial-start--nostart--nowait-nodes,您应该完全理解可能的后果。

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

  • --日志缓冲区大小=#

    Command-Line Format --日志缓冲区大小=#
    Type 整数
    Default Value 32768
    Minimum Value 2048
    Maximum Value 4294967295

    设置数据节点日志缓冲区的大小。在调试大量额外日志记录时,如果日志消息太多,日志缓冲区可能会溢出,从而导致一些日志消息丢失。这在正常操作中不应该发生。

  • --登录路径

    Command-Line Format --登录路径=path
    Type 字符串
    Default Value [none]

    从登录文件中读取给定的路径。

  • --不读取登录路径

    Command-Line Format --不读取登录路径

    跳过从登录路径文件中读取选项。

  • --ndb 连接字符串

    Command-Line Format --ndb-connectstring=连接字符串
    Type 字符串
    Default Value [none]

    设置连接到 ndb_mgmd 的连接字符串。语法:[nodeid=id;][host=]主机名[:端口]。覆盖 NDB_CONNECTSTRINGmy.cnf 中的条目。

  • --ndb-mgmd-host

    Command-Line Format --ndb-mgmd-host=连接字符串
    Type 字符串
    Default Value [none]

    --ndb-connectstring 相同。

  • --ndb-mgm-tls

    Command-Line Format --ndb-mgm-tls=级别
    Type 枚举
    Default Value relaxed
    Valid Values

    relaxed

    strict

    设置连接到管理服务器所需的 TLS 级别;可以是 relaxedstrictrelaxed(默认) 表示尝试使用 TLS 连接,但不要求成功;strict 表示需要 TLS 连接。

  • --ndb-nodeid

    Command-Line Format --ndb-nodeid=#
    Type 整数
    Default Value [none]

    设置该节点的节点 ID,覆盖 --ndb-connectstring 中的 ID。

  • --ndb-optimized-node-selection

    Command-Line Format --ndb-optimized-node-selection

    启用事务节点选择的优化。默认启用;使用 --skip-ndb-optimized-node-selection 禁用。

  • --ndb-tls-search-path

    Command-Line Format --ndb-tls-search-path=列表
    Type 路径名
    Default Value (Unix) $HOME/ndb-tls
    Default Value (Windows) $HOMEDIR/ndb-tls

    指定要搜索 CA 文件的目录列表。在 Unix 平台上,目录名之间用冒号 (:) 分隔;在 Windows 系统上,分号 (;) 用作分隔符。目录引用可以是相对的或绝对的,可以包含一个或多个环境变量,每个变量以美元符号 ($) 开头,并在使用前展开。

    搜索从左到右进行,直到找到文件。空字符串表示空搜索路径,导致所有搜索失败。点 (.) 表示搜索路径仅限于当前工作目录。

    如果未提供搜索路径,将使用编译时的默认值。该值取决于平台:在 Windows 上是 \ndb-tls;在其他平台(包括 Linux)上是 $HOME/ndb-tls。这可以通过使用 -DWITH_NDB_TLS_SEARCH_PATH 编译 NDB 集群来覆盖。

  • --nodaemon

    Command-Line Format --nodaemon

    防止 ndbdndbmtd 作为守护进程执行。这将覆盖 --daemon 选项。这在调试二进制文件时将输出重定向到屏幕上非常有用。

    默认情况下,ndbdndbmtd 在 Windows 平台上的默认行为是前台运行,因此在 Windows 平台上不需要此选项,它不起作用。

  • --no-defaults

    Command-Line Format --no-defaults

    不从任何选项文件中读取默认选项,除了登录文件。

  • --nostart, -n

    Command-Line Format --nostart

    指示 ndbd 不自动启动。当使用此选项时,ndbd 连接到管理服务器,获取配置数据,并初始化通信对象。但是,它不会实际启动执行引擎,直到管理服务器明确请求它这样做。这可以通过在管理客户端中发出适当的 START 命令来实现(见 第 25.6.1 节,“NDB 集群管理客户端命令”)。

  • --nowait-nodes=node_id_1[, node_id_2[, ...]]

    Command-Line Format --nowait-nodes=list
    Type 字符串
    Default Value

    该选项采用数据节点列表,集群在启动之前不等待这些节点。

    这可以用来在分区状态下启动集群。例如,要在 4 节点集群中仅使用半个数据节点(节点 2、3、4 和 5)启动集群,可以在每个 ndbd 进程中使用 --nowait-nodes=3,5。在这种情况下,集群将在节点 2 和 4 连接时启动,不会等待节点 3 和 5 连接 StartPartitionedTimeout 毫秒。

    如果您想在上一个示例中启动相同的集群,但不包括一个 ndbd(例如,假设节点 3 的主机机器出现硬件故障),那么可以使用 --nowait-nodes=3 启动节点 2、4 和 5。然后,集群将在节点 2、4 和 5 连接时启动,不等待节点 3 启动。

  • --print-defaults

    Command-Line Format --print-defaults

    打印程序参数列表并退出。

  • --remove[=name]

    Command-Line Format --remove[=name]
    Platform Specific Windows
    Type 字符串
    Default Value ndbd

    使 ndbd 进程从 Windows 服务中删除。可选地,您可以指定要卸载的服务名称;如果不设置,默认服务名称为 ndbd

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

  • --usage

    Command-Line Format --usage

    显示帮助文本并退出;与 --help 相同。

  • --verbose, -v

    使节点日志中写入额外的调试输出。

    您也可以使用 NODELOG DEBUG ONNODELOG DEBUG OFF 在数据节点运行时启用和禁用额外的日志记录。

  • --version

    Command-Line Format --version

    显示版本信息并退出。

ndbd 生成一组日志文件,位于 DataDirconfig.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 退出代码和消息的列表可以在 数据节点错误消息 中找到。

    Important

    错误日志文件中的最后一条记录不一定是最新的(也不是)。错误日志条目 按照时间顺序列出,而是根据 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 中使用,在这里可以跟踪所有传入、传出和内部消息及其数据。

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

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

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

请参阅 第 25.4.3.3 节,“NDB 集群连接字符串”,以获取有关此问题的更多信息。有关数据节点配置参数的更多信息,请参阅 第 25.4.3.6 节,“定义 NDB 集群数据节点”

ndbd 启动时,它实际上启动了两个进程。第一个进程称为“守护进程”;其唯一的任务是发现执行进程何时完成,然后重新启动 ndbd 进程,如果它被配置为这样做。因此,如果您尝试使用 Unix kill 命令终止 ndbd,则需要终止这两个进程,首先是守护进程。终止 ndbd 进程的首选方法是使用管理客户端并从那里停止进程。

执行进程使用一个线程来读取、写入和扫描数据,以及所有其他活动。该线程是异步实现的,以便它可以轻松地处理数千个并发操作。此外,还有一个监视线程监督执行线程,以确保它不会陷入无限循环。一个线程池处理文件 I/O,每个线程可以处理一个打开的文件。线程也可以用于 transporter 连接,由 ndbd 进程中的 transporter 处理。在多处理器系统中执行大量操作(包括更新)时,ndbd 进程可以消耗高达 2 个 CPU,如果允许这样做。

对于具有多个 CPU 的机器,可以使用多个 ndbd 进程,这些进程属于不同的节点组;然而,这种配置仍然被认为是实验性的,并且不支持 MySQL 8.3 在生产环境中使用。请参阅 第 25.2.7 节,“NDB 集群的已知限制”