MySQL8 中文参考(八十九)

2024-06-26 19:21:41 浏览数 (1)

原文:docs.oracle.com/javase/tutorial/reallybigindex.html

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-tcp-definition.html

25.4.3.10 NDB 集群 TCP/IP 连接

TCP/IP 是 NDB 集群中所有节点之间连接的默认传输机制。通常情况下,不需要定义 TCP/IP 连接;NDB 集群会自动为所有数据节点、管理节点以及 SQL 或 API 节点设置这些连接。

注意

对于此规则的例外情况,请参阅第 25.4.3.11 节,“使用直接连接的 NDB 集群 TCP/IP 连接”。

要覆盖默认连接参数,需要在config.ini文件中使用一个或多个[tcp]部分定义连接。每个[tcp]部分明确定义了两个 NDB 集群节点之间的 TCP/IP 连接,必须至少包含参数NodeId1NodeId2,以及任何要覆盖的连接参数。

也可以通过在[tcp default]部分中设置这些参数的默认值来更改这些参数的默认值。

重要

config.ini文件中的任何[tcp]部分应该在所有其他部分之后列出。但是,对于[tcp default]部分,不需要这样做。这是 NDB 集群管理服务器读取config.ini文件的方式存在的已知问题。

可以在config.ini文件的[tcp][tcp default]部分中设置的连接参数列在此处:

  • AllowUnresolvedHostNames 版本(或更高版本)NDB 8.0.22类型或单位布尔值默认值false范围true, false添加NDB 8.0.22重启类型节点重启: 需要对集群进行滚动重启。(NDB 8.0.13)默认情况下,当管理节点在连接时无法解析主机名时,会导致致命错误。可以通过在全局配置文件(通常命名为config.ini)的[tcp default]部分中将AllowUnresolvedHostNames设置为true来覆盖此行为,在这种情况下,无法解析主机名将被视为警告,ndb_mgmd启动将继续无中断。
  • Checksum 版本(或更高版本)NDB 8.0.13类型或单位布尔值默认值false范围true, false重启类型节点重启: 需要对集群进行滚动重启。(NDB 8.0.13)此参数默认情况下处于禁用状态。当启用时(设置为 Y1),所有消息在放入发送缓冲区之前都会计算校验和。此功能确保消息在等待发送缓冲区或通过传输机制时不会损坏。
  • Group 当启用 ndb_optimized_node_selection 时,节点的接近程度在某些情况下用于选择要连接的节点。可以通过将此参数设置为较低值来影响接近程度,较低值被解释为“更近”。有关更多信息,请参阅系统变量的描述。
  • HostName1 版本(或更高)NDB 8.0.13类型或单位名称或 IP 地址默认[…]范围…重启类型节点重启: 需要对集群进行滚动重启。(NDB 8.0.13)HostName1HostName2 参数可用于指定两个节点之间的 TCP 连接所使用的特定网络接口。这些参数的值可以是主机名或 IP 地址。
  • HostName2 版本(或更高)NDB 8.0.13类型或单位名称或 IP 地址默认[…]范围…重启类型节点重启: 需要对集群进行滚动重启。(NDB 8.0.13)HostName1HostName2 参数可用于指定两个节点之间的 TCP 连接所使用的特定网络接口。这些参数的值可以是主机名或 IP 地址。
  • NodeId1 版本(或更高)NDB 8.0.13类型或单位数字默认[none]范围1 - 255重启类型节点重启: 需要对集群进行滚动重启。(NDB 8.0.13)要识别两个节点之间的连接,需要在配置文件的 [tcp] 部分中提供它们的节点 ID 作为 NodeId1NodeId2 的值。这些值是每个节点的唯一 Id 值,如第 25.4.3.7 节,“在 NDB 集群中定义 SQL 和其他 API 节点”中所述。
  • NodeId2 版本(或更高)NDB 8.0.13类型或单位数��默认[none]范围1 - 255重启类型节点重启: 需要对集群进行滚动重启。(NDB 8.0.13)要识别两个节点之间的连接,需要在配置文件的 [tcp] 部分提供它们的节点 ID 作为 NodeId1NodeId2 的值。这些是每个节点的相同唯一 Id 值,如第 25.4.3.7 节,“在 NDB 集群中定义 SQL 和其他 API 节点”中所述。
  • NodeIdServer 版本(或更高版本)NDB 8.0.13类型或单位数值默认[无]范围1 - 63重启类型节点重启: 需要对集群进行滚动重启。(NDB 8.0.13)设置 TCP 连接的服务器端。
  • OverloadLimit 版本(或更高版本)NDB 8.0.13类型或单位字节默认0范围0 - 4294967039 (0xFFFFFEFF)重启类型节点重启: 需要对集群进行滚动重启。(NDB 8.0.13)当发送缓冲区中有超过这么多未发送字节时,连接被视为过载。 此参数可用于确定在连接被认为过载之前必须存在的未发送数据量。有关更多信息,请参见第 25.4.3.14 节,“配置 NDB 集群发送缓冲区参数”。
  • PreferIPVersion 版本(或更高版本)NDB 8.0.26类型或单位枚举默认4范围4, 6添加NDB 8.0.26重启类型初始系统重启: 需要完全关闭集群,从备份中擦除和恢复集群文件系统,然后重新启动集群。(NDB 8.0.13)确定 DNS 解析对 IP 版本 4 或版本 6 的偏好。因为 NDB 集群所采用的配置检索机制要求所有连接使用相同的偏好,所以应该在 config.ini 全局配置文件的 [tcp default] 中设置此参数。
  • PreSendChecksum 版本(或更高版本)NDB 8.0.13类型或单位布尔值默认false范围true, false重启类型节点重启: 需要对集群进行滚动重启。(NDB 8.0.13)如果启用了此参数和Checksum,则执行预发送校验和检查,并检查节点之间的所有 TCP 信号是否存在错误。如果未启用Checksum,则不起作用。
  • Proxy 版本(或更高版本)NDB 8.0.13类型或单位字符串默认值[…]范围…重启类型节点重启: 需要对集群进行滚动重启。(NDB 8.0.13)为 TCP 连接设置代理。
  • ReceiveBufferMemory 版本(或更高版本)NDB 8.0.13类型或单位字节默认值2M范围16K - 4294967039 (0xFFFFFEFF)重启类型节点重启: 需要对集群进行滚动重启。(NDB 8.0.13)指定从 TCP/IP 套接字接收数据时使用的缓冲区大小。 此参数的默认值为 2MB。最小可能值为 16KB;理论上的最大值为 4GB。
  • SendBufferMemory 版本(或更高版本)NDB 8.0.13类型或单位无符号默认值2M范围256K - 4294967039 (0xFFFFFEFF)重启类型节点重启: 需要对集群进行滚动重启。(NDB 8.0.13)TCP 传输器使用缓冲区在执行发送调用到操作系统之前存储所有消息。当此缓冲区达到 64KB 时,其内容将被发送;当一轮消息已执行时,也会发送。为处理临时过载情况,还可以定义更大的发送缓冲区。 如果显式设置了此参数,则内存不会专门分配给每个传输器;相反,使用的值表示单个传输器可以使用的内存硬限制(即TotalSendBufferMemory总可用内存的一部分)。有关在 NDB Cluster 中配置动态传输器发送缓冲区内存分配的更多信息,请参见 Section 25.4.3.14,“配置 NDB Cluster 发送缓冲区参数”。 发送缓冲区的默认大小为 2MB,在大多数情况下建议使用此大小。最小大小为 64KB;理论上的最大值为 4GB。
  • SendSignalId 版本(或更高版本)NDB 8.0.13类型或单位布尔值默认值false(调试版本为 true)范围true, false重启类型节点重启: 需要对集群进行滚动重启。(NDB 8.0.13)为了能够追溯分布式消息数据报,有必要标识每个消息。当此参数设置为 Y 时,消息 ID 被传输到网络上。此功能在生产构建中默认禁用,在 -debug 构建中启用。
  • TcpBind_INADDR_ANY 将此参数设置为 TRUE1 将绑定 IP_ADDR_ANY,以便可以从任何地方进行连接(用于自动生成的连接)。默认值为 FALSE0)。
  • TcpSpinTime 版本(或更高版本)NDB 8.0.20类型或单位微秒默认0范围0 - 2000添加NDB 8.0.20重启类型节点重启: 需要进行滚动重启。 (NDB 8.0.13)控制 TCP 传输器的自旋;若要启用,请设置为非零值。这适用于数据节点以及连接的管理或 SQL 节点的两侧。
  • TCP_MAXSEG_SIZE 版本(或更高版本)NDB 8.0.13类型或单位无符号默认0范围0 - 2G重启类型节点重启: 需要进行滚动重启。 (NDB 8.0.13)确定在 TCP 传输器初始化期间设置的内存大小。对于大多数常见用例,建议使用默认值。
  • TCP_RCV_BUF_SIZE 版本(或更高版本)NDB 8.0.13类型或单位无符号默认0范围0 - 2G重启类型节点重启: 需要进行滚动重启。 (NDB 8.0.13)确定在 TCP 传输器初始化期间设置的接收缓冲区的大小。默认和最小值为 0,允许操作系统或平台设置此值。对于大多数常见用例,建议使用默认值。
  • TCP_SND_BUF_SIZE 版本(或更高版本)NDB 8.0.13类型或单位无符号默认0范围0 - 2G重启类型节点重启: 需要进行滚动重启。 (NDB 8.0.13)确定在 TCP 传输器初始化期间设置的发送缓冲区的大小。默认和最小值为 0,允许操作系统或平台设置此值。��于大多数常见用例,建议使用默认值。

重启类型。 此部分中参数描述中使用的重启类型信息如下表所示:

表 25.21 NDB 集群重启类型

符号

重启类型

描述

N

节点

可以使用滚动重启来更新该参数(参见第 25.6.5 节,“执行 NDB 集群的滚动重启”)

S

系统

所有集群节点必须完全关闭,然后重新启动,以更改此参数

I

初始

必须使用--initial选项重新启动数据节点

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-tcp-definition-direct.html

25.4.3.11 NDB 集群使用直接连接的 TCP/IP 连接

使用数据节点之间的直接连接设置集群需要在集群 config.ini 文件的 [tcp] 部分明确指定连接的数据节点的交叉 IP 地址。

在下面的示例中,我们设想一个至少有四个主机的集群,分别用于管理服务器、SQL 节点和两个数据节点。整个集群位于 LAN 的 172.23.72.* 子网上。除了通常的网络连接外,两个数据节点使用标准交叉电缆直接连接,并使用 1.1.0.* 地址范围中的 IP 地址直接通信,如下所示:

代码语言:javascript复制
# Management Server
[ndb_mgmd]
Id=1
HostName=172.23.72.20

# SQL Node
[mysqld]
Id=2
HostName=172.23.72.21

# Data Nodes
[ndbd]
Id=3
HostName=172.23.72.22

[ndbd]
Id=4
HostName=172.23.72.23

# TCP/IP Connections
[tcp]
NodeId1=3
NodeId2=4
HostName1=1.1.0.1
HostName2=1.1.0.2

只有在指定直接连接时才使用 HostName1HostName2 参数。

使用数据节点之间的直接 TCP 连接可以通过使数据节点绕过以太网设备(如交换机、集线器或路由器)来提高集群的整体效率,从而减少集群的延迟。

注意

要充分利用这种方式的直接连接,当有两个以上的数据节点时,必须在同一节点组中的每个数据节点之间建立直接连接。

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-shm-definition.html

25.4.3.12 NDB 集群共享内存连接

NDB 集群节点之间的通信通常使用 TCP/IP 处理。共享内存(SHM)传输器的特点是通过在内存中写入信号而不是在套接字上传输来区分。共享内存传输器(SHM)可以在将 API 节点(通常是 SQL 节点)和数据节点一起运行在同一主机上时,通过消除 TCP 连接所需的高达 20% 的开销来提高性能。您可以通过以下两种方式之一启用共享内存连接:

  • 通过将数据节点配置参数 UseShm 设置为 1,并将数据节点的 HostName 和 API 节点的 HostName 设置为相同值。
  • 通过在集群配置文件中使用包含 NodeId1NodeId2 设置的 [shm] 部分。稍后在本节中将更详细地描述这种方法。

假设一个集群在同一主机计算机上运行具有节点 ID 1 的数据节点和具有节点 ID 51 的 SQL 节点,IP 地址为 10.0.0.1. 要在这两个节点之间启用 SHM 连接,只需确保集群配置文件中包含以下条目:

代码语言:javascript复制
[ndbd]
NodeId=1
HostName=10.0.0.1
UseShm=1

[mysqld]
NodeId=51
HostName=10.0.0.1

重要提示

刚刚显示的两个条目是在集群中需要的任何其他条目和参数设置之外的。稍后在本节中将展示一个更完整的示例。

在启动使用 SHM 连接的数据节点之前,还需要确保托管此类数据节点的每台计算机的操作系统为共享内存段分配了足够的内存。有关此信息,请参阅您操作平台的文档。在每个运行数据节点和 API 节点的多个主机的设置中,可以通过在配置文件的 [ndbd default] 部分中设置 UseShm 来在所有这些主机上启用共享内存。稍后在本节中将展示示例。

虽然不是严格要求,但可以通过在集群配置(config.ini)文件的 [shm default] 部分中设置以下一个或多个参数来调整集群中所有 SHM 连接:

  • ShmSize:共享内存大小
  • ShmSpinTime:在休眠之前旋转的时间(以微秒为单位)
  • SendBufferMemory:从此节点发送的信号的缓冲区大小,以字节为单位。
  • SendSignalId:表示每个通过传输器发送的信号中都包含信号 ID。
  • Checksum:表示每个通过传输器发送的信号中都包含校验和。
  • PreSendChecksum:在发送信号之前进行校验和检查;此功能也需要启用校验和。

这个例子展示了在多个主机上定义的 SHM 连接的简单设置,在一个使用 3 台计算机列出的 NDB 集群中,托管了所示节点类型的主机名:

  1. 10.0.0.0:管理服务器
  2. 10.0.0.1:一个数据节点和一个 SQL 节点
  3. 10.0.0.2:一个数据节点和一个 SQL 节点

在这种情况下,每个数据节点使用 TCP 传输器与管理服务器和其他数据节点通信;每个 SQL 节点使用共享内存传输器与本地数据节点通信,并使用 TCP 传输器与远程数据节点通信。反映此设置的基本配置由 config.ini 文件启用,其内容如下所示:

代码语言:javascript复制
[ndbd default]
DataDir=*/path/to/datadir*
UseShm=1

[shm default]
ShmSize=8M
ShmSpintime=200
SendBufferMemory=4M

[tcp default]
SendBufferMemory=8M

[ndb_mgmd]
NodeId=49
Hostname=10.0.0.0
DataDir=*/path/to/datadir*

[ndbd]
NodeId=1
Hostname=10.0.0.1
DataDir=*/path/to/datadir*

[ndbd]
NodeId=2
Hostname=10.0.0.2
DataDir=*/path/to/datadir*

[mysqld]
NodeId=51
Hostname=10.0.0.1

[mysqld]
NodeId=52
Hostname=10.0.0.2

[api]
[api]

影响所有共享内存传输器的参数在 [shm default] 部分设置;这些可以在一个或多个 [shm] 部分中按连接覆盖。每个这样的部分必须使用 NodeId1NodeId2 关联给定 SHM 连接的节点 ID;也可以使用 HostName1HostName2 通过主机名标识节点,但这些参数不是必需的。

对于未设置主机名的 API 节点,使用 TCP 传输器与数据节点通信,独立于它们启动的主机;配置文件中 [tcp default] 部分设置的参数和值适用于集群中的所有 TCP 传输器。

为了获得最佳性能,您可以为 SHM 传输器定义一个自旋时间(ShmSpinTime 参数);这会影响数据节点接收线程和 NDB 中的轮询所有者(接收线程或用户线程)。

  • Checksum 版本(或更高版本)NDB 8.0.13类型或单位布尔型默认true范围true, false重启类型节点重启: 需要进行滚动重启。 (NDB 8.0.13)这个参数是一个布尔型(Y/N)参数,默认情况下是禁用的。启用后,在将消息放入发送缓冲区之前会计算所有消息的校验和。 此功能可防止消息在等待发送缓冲区时被损坏。它还可用作在传输过程中检查数据是否被损坏的检查。
  • 版本(或更高版本)NDB 8.0.13类型或单位无符号默认值35范围0 - 200重启类型节点重启: 需要进行滚动重启(NDB 8.0.13)确定组的接近程度;较小的值被解释为更接近。默认值对大多数情况足够。
  • HostName1 版本(或更高版本)NDB 8.0.13类型或单位名称或 IP 地址默认值[…]范围…重启类型节点重启: 需要进行滚动重启(NDB 8.0.13)HostName1HostName2参数可用于指定用于两个节点之间给定 SHM 连接的特定网络接口。这些参数的值可以是主机名或 IP 地址。
  • HostName2 版本(或更高版本)NDB 8.0.13类型或单位名称或 IP 地址默认值[…]范围…重启类型节点重启: 需要进行滚动重启(NDB 8.0.13)HostName1HostName2参数可用于指定用于两个节点之间给定 SHM 连接的特定网络接口。这些参数的值可以是主机名或 IP 地址。
  • NodeId1 版本(或更高版本)NDB 8.0.13类型或单位数字默认值[无]范围1 - 255重启类型节点重启: 需要进行滚动重启(NDB 8.0.13)要识别两个节点之间的连接,需要为每个节点提供节点标识符,如NodeId1NodeId2
  • NodeId2 版本(或更高版本)NDB 8.0.13类型或单位数字默认值[无]范围1 - 255重启类型节点重启: 需要进行滚动重启(NDB 8.0.13)要识别两个节点之间的连接,需要为每个节点提供节点标识符,如NodeId1NodeId2
  • NodeIdServer 版本(或更高版本)NDB 8.0.13类型或单位数字默认值[无]范围1 - 63重启类型节点重启: 需要进行滚动重启。 (NDB 8.0.13)识别共享内存连接的服务器端。默认情况下,这是数据节点的节点 ID。
  • OverloadLimit 版本(或更高)NDB 8.0.13类型或单位字节默认值0范围0 - 4294967039 (0xFFFFFEFF)重启类型节点重启: 需要进行滚动重启。 (NDB 8.0.13)当发送缓冲区中有超过这么多未发送字节时,连接被视为过载。有关更多信息,请参阅第 25.4.3.14 节,“配置 NDB 集群发送缓冲区参数”和第 25.6.16.65 节,“ndbinfo transporters 表”。
  • PreSendChecksum 版本(或更高)NDB 8.0.13类型或单位布尔值默认值false范围真,假重启类型节点重启: 需要进行滚动重启。 (NDB 8.0.13)如果启用此参数和Checksum,则执行预发送校验和检查所有节点之间的所有 SHM 信号是否存在错误。如果未启用Checksum,则不起作用。
  • SendBufferMemory 版本(或更高)NDB 8.0.13类型或单位整数默认值2M范围256K - 4294967039 (0xFFFFFEFF)重启类型节点重启: 需要进行滚动重启。 (NDB 8.0.13)从此节点使用共享内存连接发送的信号的共享内存缓冲区大小(以字节为单位)。
  • SendSignalId 版本(或更高)NDB 8.0.13类型或单位布尔值默认值false范围真,假重启类型节点重启: 需要进行滚动重启。 (NDB 8.0.13)为了追踪分布式消息的路径,需要为每个消息提供唯一标识符。将此参数设置为Y会导致这些消息 ID 也通过网络传输。此功能在生产构建中默认禁用,在-debug构建中启用。
  • ShmKey 版本(或更高)NDB 8.0.13类型或单位无符号默认值0范围0 - 4294967039 (0xFFFFFEFF)重启类型节点重启: 需要进行滚动重启。 (NDB 8.0.13)在设置共享内存段时,使用一个表示为整数的节点 ID 来唯一标识用于通信的共享内存段。没有默认值。如果启用了UseShm,则共享内存键会由NDB自动计算。
  • ShmSize 版本(或更高)NDB 8.0.13类型或单位字节默认4M范围64K - 4294967039 (0xFFFFFEFF)重启类型节点重启: 需要进行滚动重启。 (NDB 8.0.13)每个 SHM 连接都有一个共享内存段,发送者将消息放入其中,读者从中读取消息。该段的大小由ShmSize定义。默认值为 4MB。
  • ShmSpinTime 版本(或更高)NDB 8.0.13类型或单位整数默认0范围0 - 2000重启类型节点重启: 需要进行滚动重启。 (NDB 8.0.13)接收时,等待睡眠之前的时间,单位为微秒。
  • SigNum 版本(或更高)NDB 8.0.13类型或单位无符号默认[…]范围0 - 4294967039 (0xFFFFFEFF)已弃用是(在 NDB 7.6 中)重启类型节点重启: 需要进行滚动重启。 (NDB 8.0.13)此参数以前用于覆盖操作系统信号编号;在 NDB 8.0 中不再使用,对其进行的任何设置都将被忽略。

重启类型。 本节参数描述中使用的重启类型信息如下表所示:

表 25.22 NDB 集群重启类型

符号

重启类型

描述

N

节点

可以使用滚动重启更新该参数(参见第 25.6.5 节,“执行 NDB 集群的滚动重启”)

S

系统

必须完全关闭所有集群节点,然后重新启动,以更改此参数

I

初始

数据节点必须使用--initial选项重新启动

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-data-node-memory-management.html

25.4.3.13 数据节点内存管理

所有数据节点的内存分配都在节点启动时执行。这确保数据节点可以稳定运行,而不使用交换内存,以便NDB可用于延迟敏感(实时)应用程序。数据节点启动时分配以下类型的内存:

  • 数据内存
  • 共享全局内存
  • 重做日志缓冲区
  • 作业缓冲区
  • 发送缓冲区
  • 用于磁盘数据记录的页缓存
  • 模式事务内存
  • 事务内存
  • 撤销日志缓冲区
  • 查询内存
  • 块对象
  • 模式内存
  • 块数据结构
  • 长信号内存
  • 共享内存通信缓冲区

NDB内存管理器,管理大部分数据节点内存,处理以下内存资源:

  • 数据内存(DataMemory
  • 重做日志缓冲区(RedoBuffer
  • 作业缓冲区
  • 发送缓冲区(SendBufferMemoryTotalSendBufferMemoryExtraSendBufferMemory
  • 磁盘数据记录页缓存(DiskPageBufferMemoryDiskPageBufferEntries
  • 事务内存(TransactionMemory
  • 查询内存
  • 磁盘访问记录
  • 文件缓冲区

每个资源都设置了一个保留内存区域和一个最大内存区域。保留内存区域只能被其保留的资源使用,不能与其他资源共享;给定资源永远不能分配超过为其允许的最大内存的内存。没有最大内存的资源可以扩展使用内存管理器中的所有共享内存。

这些资源的全局共享内存大小由SharedGlobalMemory配���参数控制(默认值:128 MB)。

数据内存始终保留,从共享内存中不获取任何内存。它使用DataMemory配置参数进行控制,其最大值为 16384 GB。DataMemory是记录存储的地方,包括哈希索引(每行约 15 字节)、有序索引(每个索引每行 10-12 字节)和行头(每行 16-32 字节)。

重做日志缓冲区也仅使用保留内存;这由RedoBuffer配置参数控制,该参数设置每个 LDM 线程的重做日志缓冲区大小。这意味着实际使用的内存量是此参数值乘以数据节点中的 LDM 线程数。

作业缓冲区仅使用保留内存;此内存的大小由NDB根据各种类型线程的数量计算而得。

发送缓冲区有一个保留部分,但也可以分配额外的共享全局内存的 25%。发送缓冲区的保留大小分两步计算:

  1. 使用TotalSendBufferMemory配置参数的值(无默认值)或所有单个连接到数据节点的单个连接使用的所有单个发送缓冲区的总和。数据节点连接到所有其他数据节点,所有 API 节点和所有管理节点。这意味着,在具有 2 个数据节点,2 个管理节点和每个数据节点连接到 10 个 API 节点的集群中,每个数据节点有 13 个节点连接。由于数据节点连接的SendBufferMemory的默认值为 2 兆字节,因此总计为 26 MB。
  2. 要获取发送缓冲区的总保留大小,需要将ExtraSendBufferMemory配置参数的值(如果有,默认值为 0)与前一步得到的值相加。

换句话说,如果已设置TotalSendBufferMemory,则发送缓冲区大小为TotalSendBufferMemory ExtraSendBufferMemory;否则,发送缓冲区的大小等于([*节点连接数*] * SendBufferMemory) ExtraSendBufferMemory

用于磁盘数据记录的页面缓存仅使用保留资源;此资源的大小由DiskPageBufferMemory配置参数控制(默认为 64 MB)。还分配了 32 KB 磁盘页面条目的内存;其数量由DiskPageBufferEntries配置参数确定(默认为 10)。

事务内存有一个保留部分,可以由NDB计算,也可以使用在 NDB 8.0 中引入的TransactionMemory配置参数显式设置(以前,此值始终由NDB计算);事务内存还可以使用无限量的共享全局内存。事务内存用于处理所有操作资源,包括事务、扫描、锁定、扫描缓冲区和触发器操作。它还在更新表行时保存表行,然后在下一次提交时将它们写入数据内存。

以前,操作记录使用专用资源,其大小由多个配置参数控制。在 NDB 8.0 中,所有这些资源都从一个公共事务内存资源分配,并且还可以使用全局共享内存资源。可以使用单个TransactionMemory配置参数来控制此资源的大小。

保留用于撤销日志缓冲区的内存可以使用InitialLogFileGroup配置参数进行设置。如果撤销日志缓冲区是作为CREATE LOGFILE GROUP SQL 语句的一部分创建的,则内存来自事务内存。

与磁盘数据资源相关的一些元数据资源也没有保留部分,仅使用共享全局内存。因此,共享全局共享内存在发送缓冲区、事务内存和磁盘数据元数据之间共享。

如果未设置TransactionMemory,则根据以下参数计算:

  • MaxNoOfConcurrentOperations
  • MaxNoOfConcurrentTransactions
  • MaxNoOfFiredTriggers
  • MaxNoOfLocalOperations
  • MaxNoOfConcurrentIndexOperations
  • MaxNoOfConcurrentScans
  • MaxNoOfLocalScans
  • BatchSizePerLocalScan
  • TransactionBufferMemory

当显式设置TransactionMemory时,上述配置参数都不用于计算内存大小。此外,参数MaxNoOfConcurrentIndexOperationsMaxNoOfFiredTriggersMaxNoOfLocalOperationsMaxNoOfLocalScansTransactionMemory不兼容,不能与之同时设置;如果在config.ini配置文件中设置了TransactionMemory并且这四个参数中的任何一个也被设置,管理服务器将无法启动。注意:在 NDB 8.0.29 之前,对于MaxNoOfFiredTriggersMaxNoOfLocalScansMaxNoOfLocalOperations,这个限制并未强制执行(Bug #102509,Bug #32474988)。

MaxNoOfConcurrentIndexOperationsMaxNoOfFiredTriggersMaxNoOfLocalOperationsMaxNoOfLocalScans参数在 NDB 8.0 中已弃用;您应该期望它们在将来的 MySQL NDB Cluster 版本中被移除。

在 NDB 8.0.29 之前,不可能同时设置MaxNoOfConcurrentTransactionsMaxNoOfConcurrentOperationsMaxNoOfConcurrentScansTransactionMemory

事务内存资源包含大量内存池。每个内存池代表一个对象类型,并包含一组对象;每个池在启动时包括一个分配给池的保留部分;这些保留内存永远不会返回到共享全局内存。使用仅具有单个级别的数据结构来查找保留记录,以便快速检索,这意味着每个池中应该保留一定数量的记录。每个池中保留的记录数量对性能和保留内存分配有一定影响,但通常只在某些非常高级的用例中需要显式设置保留大小。

可通过设置以下配置参数来控制池的保留部分的大小:

  • ReservedConcurrentIndexOperations
  • ReservedFiredTriggers
  • ReservedConcurrentOperations
  • ReservedLocalScans
  • ReservedConcurrentTransactions
  • ReservedConcurrentScans
  • ReservedTransactionBufferMemory

对于上述列出的任何未在config.ini中明确设置的参数,保留设置将计算为相应最大设置的 25%。例如,如果未设置,ReservedConcurrentIndexOperations将计算为MaxNoOfConcurrentIndexOperations的 25%,ReservedLocalScans将计算为MaxNoOfLocalScans的 25%。

注意

如果未设置ReservedTransactionBufferMemory,则将计算为TransactionBufferMemory的 25%。

保留记录数是每个数据节点的;这些记录在每个节点上处理它们的线程(LDM 和 TC 线程)之间分割。在大多数情况下,仅设置TransactionMemory就足够了,并且允许池中的记录数由其值控制。

MaxNoOfConcurrentScans 限制每个 TC 线程中可以活动的并发扫描数。这对防止集群过载很重要。

MaxNoOfConcurrentOperations 限制可以同时活动的更新事务中的操作数。(简单读取不受此参数影响。)需要限制此数字,因为需要为节点故障处理预分配内存,并且在处理最大数量的活动操作时必须为处理节点故障时一个 TC 线程中的最大数量的活动操作提供资源。MaxNoOfConcurrentOperations 必须在所有节点上设置为相同的数字(最简单的方法是在config.ini全局配置文件的[ndbd default]部分中一次设置它的值)。虽然可以使用滚动重启(参见第 25.6.5 节“执行 NDB Cluster 的滚动重启”)来增加其值,但由于在滚动重启期间可能发生节点故障的可能性,不建议以这种方式减少其值。

可以通过MaxDMLOperationsPerTransaction参数限制 NDB Cluster 中单个事务的大小。如果未设置此参数,则一个事务的大小受MaxNoOfConcurrentOperations限制,因为此参数限制每个 TC 线程的并发操作总数。

模式内存大小由以下一组配置参数控制:

  • MaxNoOfSubscriptions
  • MaxNoOfSubscribers
  • MaxNoOfConcurrentSubOperations
  • MaxNoOfAttributes
  • MaxNoOfTables
  • MaxNoOfOrderedIndexes
  • MaxNoOfUniqueHashIndexes
  • MaxNoOfTriggers

节点数和 LDM 线程数也对模式内存大小产生重大影响,因为每个表和每个分区(及其片段副本)的分区数必须在模式内存中表示。

此外,在启动期间还分配了一些其他记录。这些记录相对较小。每个线程中的每个块包含使用内存的块对象。与其他数据节点内存结构相比,这种内存大小通常也相当小。

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-config-send-buffers.html

25.4.3.14 配置 NDB Cluster 发送缓冲区参数

NDB 内核采用统一的发送缓冲区,其内存是动态分配的,来自所有传输器共享的池。这意味着发送缓冲区的大小可以根据需要进行调整。统一发送缓冲区的配置可以通过设置以下参数来完成:

  • **TotalSendBufferMemory. ** 此参数可为所有类型的 NDB Cluster 节点设置,即可在 config.ini 文件的 [ndbd][mgm][api](或 [mysql])部分中设置。它表示每个设置了该参数的节点为所有配置的传输器分配的总内存量(以字节为单位)。如果设置,其最小值为 256KB;最大值为 4294967039。 为了向后兼容现有配置,此参数的默认值为所有配置传输器的最大发送缓冲区大小之和,再加上每个传输器额外的 32KB(一个页面)。最大值取决于传输器类型,如下表所示: 表 25.23 具有最大发送缓冲区大小的传输器类型 传输器最大发送缓冲区大小(字���)TCPSendBufferMemory(默认值 = 2M)SHM20K这使得现有配置可以在与 NDB Cluster 6.3 及更早版本几乎相同的方式下运行,每个传输器都有相同数量的内存和发送缓冲区空间可用。然而,一个传输器未使用的内存对其他传输器不可用。
  • **OverloadLimit. ** 此参数用于 config.ini 文件中的 [tcp] 部分,表示在连接被认为过载之前必须存在于发送缓冲区中的未发送数据量(以字节为单位)。当发生这种过载情况时,影响过载连接的事务将因 NDB API 错误 1218(NDB 内核中的发送缓冲区过载)而失败,直到过载状态消失。默认值为 0,此时对于给定连接,有效的过载限制计算为 SendBufferMemory * 0.8。此参数的最大值为 4G。
  • **SendBufferMemory. ** 此值表示单个传输器可以使用的内存量的硬限制,该内存量来自由 TotalSendBufferMemory 指定的整个池。然而,所有配置的传输器的 SendBufferMemory 总和可能大于为给定节点设置的 TotalSendBufferMemory。当许多节点在使用时,这是一种节省内存的方法,只要所有传输器在同一时间从未同时需要最大内存量。

你可以使用ndbinfo.transporters表来监控发送缓冲区内存使用情况,并检测可能对性能产生不利影响的减速和过载条件。

25.4.4 使用高速互连与 NDB 集群

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-interconnects.html

甚至在 1996 年设计NDBCLUSTER之前,就已经明显地意识到在构建并行数据库中将会遇到的一个主要问题是网络中节点之间的通信。因此,NDBCLUSTER从一开始就被设计成允许使用多种不同的数据传输机制或传输器。

NDB Cluster 8.0 支持其中三种(参见第 25.2.1 节,“NDB Cluster 核心概念”)。第四种传输器,可扩展一致性接口(SCI),也曾在非常旧的NDB版本中得到支持。这需要专门的硬件、软件和现在不再可用的 MySQL 二进制文件。

25.5 NDB 集群程序

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs.html

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

25.5.2 ndbinfo_select_all — 从 ndbinfo 表中选择

25.5.3 ndbmtd — NDB 集群数据节点守护程序(多线程)

25.5.4 ndb_mgmd — NDB 集群管理服务器守护程序

25.5.5 ndb_mgm — NDB 集群管理客户端

25.5.6 ndb_blob_tool — 检查和修复 NDB 集群表的 BLOB 和 TEXT 列

25.5.7 ndb_config — 提取 NDB 集群配置信息

25.5.8 ndb_delete_all — 从 NDB 表中删除所有行

25.5.9 ndb_desc — 描述 NDB 表

25.5.10 ndb_drop_index — 从 NDB 表中删除索引

25.5.11 ndb_drop_table — 删除 NDB 表

25.5.12 ndb_error_reporter — NDB 错误报告实用程序

25.5.13 ndb_import — 将 CSV 数据导入 NDB

25.5.14 ndb_index_stat — NDB 索引统计实用程序

25.5.15 ndb_move_data — NDB 数据复制实用程序

25.5.16 ndb_perror — 获取 NDB 错误消息信息

25.5.17 ndb_print_backup_file — 打印 NDB 备份文件内容

25.5.18 ndb_print_file — 打印 NDB 磁盘数据文件内容

25.5.19 ndb_print_frag_file — 打印 NDB 片段列表文件内容

25.5.20 ndb_print_schema_file — 打印 NDB 模式文件内容

25.5.21 ndb_print_sys_file — 打印 NDB 系统文件内容

25.5.22 ndb_redo_log_reader — 检查和打印集群重做日志的内容

25.5.23 ndb_restore — 恢复 NDB 集群备份

25.5.24 ndb_secretsfile_reader — 从加密的 NDB 数据文件中获取密钥信息

25.5.25 ndb_select_all — 打印 NDB 表中的行

25.5.26 ndb_select_count — 打印 NDB 表的行数

25.5.27 ndb_show_tables — 显示 NDB 表的列表

25.5.28 ndb_size.pl — NDBCLUSTER 大小需求估算器

25.5.29 ndb_top — 查看 NDB 线程的 CPU 使用信息

25.5.30 ndb_waiter — 等待 NDB 集群达到给定状态

25.5.31 ndbxfrm — 压缩、解压、加密和解密由 NDB 集群创建的文件

使用和管理 NDB 集群需要几个专门的程序,在本章中我们将对这些程序进行描述。我们讨论这些程序在 NDB 集群中的目的,如何使用这些程序以及每个程序可用的启动选项。

这些程序包括 NDB 集群数据、管理和 SQL 节点进程(ndbd, ndbmtd, ndb_mgmd, 和 mysqld) 以及管理客户端(ndb_mgm)。

有关将mysqld用作 NDB 集群进程的信息,请参阅第 25.6.10 节,“NDB 集群的 MySQL 服务器用法”。

其他NDB 实用程序、诊断和示例程序包含在 NDB 集群分发中。这些包括 ndb_restore, ndb_show_tables, 和 ndb_config. 这些程序也在本节中介绍。

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

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndbd.html

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

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

可用于 ndbd 的选项显示在下表中。表后面会有额外的描述。

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

格式

描述

添加、弃用或移除

--bind-address=name

本地绑定地址

(适用于基于 MySQL 8.0 的所有 NDB 版本)

--character-sets-dir=path

包含字符集的目录

(适用于基于 MySQL 8.0 的所有 NDB 版本)

--connect-delay=#

–connect-retry-delay 的已弃用同义词,应使用该选项代替

移除:NDB 8.0.28

--connect-retries=#

设置在放弃之前重试连接的次数;0 表示仅尝试 1 次(无重试);-1 表示持续无限重试

(适用于基于 MySQL 8.0 的所有 NDB 版本)

--connect-retry-delay=#

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

(适用于基于 MySQL 8.0 的所有 NDB 版本)

--connect-string=connection_string,-c connection_string

与 --ndb-connectstring 相同

(适用于基于 MySQL 8.0 的所有 NDB 版本)

--core-file

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

(适用于基于 MySQL 8.0 的所有 NDB 版本)

--daemon,-d

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

(适用于基于 MySQL 8.0 的所有 NDB 版本)

--defaults-extra-file=path

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

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

--defaults-file=path

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

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

--defaults-group-suffix=string

也读取连接(concat(group, suffix))的组

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

--filesystem-password=password

节点文件系统加密的密码;可以从标准输入、终端或 my.cnf 文件中传递

新增:NDB 8.0.31

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

从标准输入获取节点文件系统加密的密码

新增:NDB 8.0.31

--foreground

在前台运行 ndbd,用于调试目的(意味着–nodaemon)

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

--help,-?

显示帮助文本并退出

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

--initial

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

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

--initial-start

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

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

[--install[=name]](mysql-cluster-programs-ndbd.html#option_ndbd_install)

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

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

--logbuffer-size=#

控制日志缓冲区的大小;用于在生成许多日志消息时进行调试;默认值对于正常操作足够

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

--login-path=path

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

(在基于 MySQL 8.0 的所有 NDB 版本���支持)

--ndb-connectstring=connection_string,-c connection_string

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

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

--ndb-mgmd-host=connection_string,-c connection_string

与–ndb-connectstring 相同

(适用于基于 MySQL 8.0 的所有 NDB 版本)

--ndb-nodeid=#

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

(适用于基于 MySQL 8.0 的所有 NDB 版本)

--nodaemon

不将 ndbd 作为守护进程启动;供测试目的使用

(适用于基于 MySQL 8.0 的所有 NDB 版本)

--no-defaults

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

(适用于基于 MySQL 8.0 的所有 NDB 版本)

--nostart,-n

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

(适用于基于 MySQL 8.0 的所有 NDB 版本)

--nowait-nodes=list

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

(适用于基于 MySQL 8.0 的所有 NDB 版本)

--ndb-optimized-node-selection

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

已移除:8.0.31

--print-defaults

打印程序参数列表并退出

(适用于基于 MySQL 8.0 的所有 NDB 版本)

[--remove[=name]](mysql-cluster-programs-ndbd.html#option_ndbd_remove)

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

(适用于基于 MySQL 8.0 的所有 NDB 版本)

--usage,-?

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

(适用于基于 MySQL 8.0 的所有 NDB 版本)

--verbose,-v

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

(适用于基于 MySQL 8.0 的所有 NDB 版本)

--version,-V

显示版本信息并退出

(适用于基于 MySQL 8.0 的所有 NDB 版本)

格式

描述

添加、弃用或移除

注意

所有这些选项也适用于此程序的多线程版本(ndbmtd")),您可以在本节中出现的“ndbd”处用“ndbmtd")”替换。

--bind-address

命令行格式

--bind-address=name

类型

字符串

默认值

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

--character-sets-dir

命令行格式

--character-sets-dir=path

包含字符集的目录。

--connect-delay=*#*

命令行格式

--connect-delay=#

已弃用

是(在 8.0.28-ndb-8.0.28 中移除)

类型

数值

默认值

5

最小值

0

最大值

3600

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

此选项已弃用,并可能在将来的 NDB Cluster 版本中删除。请改用 --connect-retry-delay

--connect-retries=*#*

命令行格式

--connect-retries=#

类型

数值

默认值

12

最小值(≥ 8.0.28-ndb-8.0.28)

-1

最小值

-1

最小值

-1

最小值(≤ 8.0.27-ndb-8.0.27)

0

最大值

65535

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

从 NDB 8.0.28 开始,您可以将此选项设置为 -1,在这种情况下,数据节点进程将持续不断地尝试连接。

--connect-retry-delay=*#*

命令行格式

--connect-retry-delay=#

类型

数值

默认值

5

最小值

0

最大值

4294967295

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

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

此选项的短形式-r自 NDB 8.0.28 起已弃用,并可能在将来的 NDB Cluster 版本中删除。请改用长形式。

--connect-string

命令行格式

--connect-string=connection_string

类型

字符串

默认值

[none]

--ndb-connectstring相同。

--core-file

命令行格式

--core-file

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

--daemon, -d

命令行格式

--daemon

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

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

--defaults-extra-file

命令行格式

--defaults-extra-file=path

类型

字符串

默认值

[none]

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

--defaults-file

命令行格式

--defaults-file=path

类型

字符串

默认值

[none]

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

--defaults-group-suffix

命令行格式

--defaults-group-suffix=string

类型

字符串

默认值

[none]

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

--filesystem-password

命令行格式

--filesystem-password=password

引入

8.0.31-ndb-8.0.31

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

需要EncryptedFileSystem = 1

更多信息,请参见第 25.6.14 节,“NDB 集群的文件系统加密”。

--filesystem-password-from-stdin

命令行格式

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

引入版本

8.0.31-ndb-8.0.31

将文件系统加密和解密密码传递给数据节点进程,仅从stdin

需要EncryptedFileSystem = 1

更多信息,请参见第 25.6.14 节,“NDB 集群的文件系统加密”。

--foreground

命令行格式

--foreground

导致ndbdndbmtd")作为前台进程执行,主要用于调试目的。此选项意味着--nodaemon选项。

在 Windows 平台上运行ndbdndbmtd")时,此选项不起作用。

--help

命令行格式

--help

显示帮助文本并退出。

--initial

命令行格式

--initial

指示ndbd执行初始启动。初始启动会擦除早期实例的恢复目的创建的任何文件,并重新创建恢复日志文件。在某些操作系统上,此过程可能需要相当长的时间。

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

  • 在执行更改了任何文件内容的软件升级时。
  • 在使用新版本的ndbd重新启动节点时。
  • 作为最后一招的措施,当由于某种原因节点重新启动或系统重启反复失败时。在这种情况下,请注意由于数据文件的破坏,此节点将不再能用于恢复数据。

警告

为避免最终可能发生的数据丢失,建议您不要--initial选项与StopOnError = 0一起使用。相反,在集群启动后,只需在config.ini中将StopOnError设置为 0,然后正常重新启动数据节点,即不使用--initial选项。有关此问题的详细说明,请参阅StopOnError参数的描述。(Bug #24945638)

使用此选项会阻止StartPartialTimeoutStartPartitionedTimeout配置参数产生任何效果。

重要

此选项不会影响已由受影响节点创建的备份文件。

在 NDB 8.0.21 之前,--initial选项也不会影响任何磁盘数据文件。在 NDB 8.0.21 及更高版本中,当用于执行集群的初始重新启动时,该选项会导致删除与磁盘数据表空间相关的所有数据文件以及与先前存在于此数据节点上的日志文件组相关联的撤销日志文件(请参阅第 25.6.11 节,“NDB 集群磁盘数据表”)。

此选项还不会影响数据节点在从已经运行的数据节点(除非它们也是作为初始重新启动的一部分而使用--initial启动)中自动恢复数据。在正常运行的 NDB 集群中,此数据恢复会自动发生,不需要用户干预。

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

--initial-start

命令行格式

--initial-start

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

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

代码语言:javascript复制
$> 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。

重要

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

--install[=*name*]

命令行格式

--install[=name]

平台特定

Windows

类型

字符串

默认值

ndbd

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

通常不建议将此选项与--initial选项一起使用,因为这会导致每次停止和启动服务时数据节点文件系统被擦除并重建。如果您打算与其他影响数据节点启动的ndbd选项一起使用--initial-start--nostart--nowait-nodes一起使用--install,则应该非常小心,并确保您充分理解并考虑可能的后果。

--install选项对非 Windows 平台无效。

--logbuffer-size=*#*

命令行格式

--logbuffer-size=#

类型

整数

默认值

32768

最小值

2048

最大值

4294967295

设置数据节点日志缓冲区的大小。在进行大量额外日志记录的调试时,如果有太多日志消息,日志缓冲区可能会耗尽空间,从而可能会丢失一些日志消息。在正常操作中不应发生这种情况。

--login-path

命令行格式

--login-path=path

类型

字符串

默认值

[none]

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

--ndb-connectstring

命令行格式

--ndb-connectstring=connection_string

类型

字符串

默认值

[无]

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

--ndb-mgmd-host

命令行格式

--ndb-mgmd-host=connection_string

类型

字符串

默认值

[无]

--ndb-connectstring相同。

--ndb-nodeid

命令行格式

--ndb-nodeid=#

类型

整数

默认值

[无]

设置此节点的节点 ID,覆盖由–ndb-connectstring 设置的任何 ID。

--ndb-optimized-node-selection

命令行格式

--ndb-optimized-node-selection

已移除

8.0.31

启用优化以选择事务节点。默认情况下启用;使用--skip-ndb-optimized-node-selection来禁用。

--nodaemon

命令行格式

--nodaemon

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

在 Windows 上,ndbdndbmtd")的默认行为是在前台运行,使得此选项在 Windows 平台上不必要,对 Windows 平台没有影响。

--no-defaults

命令行格式

--no-defaults

不要从登录文件以外的任何选项文件中读取默认选项。

--nostart, -n

命令行格式

--nostart

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

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

命令行格式

--nowait-nodes=list

类型

字符串

默认值

此选项接受一个数据节点列表,集群在启动之前不等待这些节点。

这可以用于以分区状态启动集群。例如,在一个 4 节点集群中只有一半数据节点(节点 2、3、4 和 5)运行时,可以使用--nowait-nodes=3,5启动每个ndbd 进程。在这种情况下,集群在节点 2 和 4 连接后立即启动,并且不会等待StartPartitionedTimeout 毫秒,以等待节点 3 和 5 连接,否则会等待。

如果您想要启动与前面示例中相同的集群,但不包括一个ndbd(例如,假设节点 3 的主机机器发生了硬件故障),那么使用--nowait-nodes=3启动��点 2、4 和 5。然后,集群在节点 2、4 和 5 连接后立即启动,并且不等待节点 3 启动。

--print-defaults

命令行格式

--print-defaults

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

--remove[=*name*]

命令行格式

--remove[=name]

特定平台

Windows

类型

字符串

默认值

ndbd

导致之前安装为 Windows 服务的ndbd 进程被移除。可选地,您可以指定要卸载的服务的名称;如果未设置,则服务名称默认为ndbd

--remove 选项在非 Windows 平台上没有效果。

--usage

命令行格式

--usage

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

--verbose-v

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

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

--version

命令行格式

--version

显示版本信息并退出。

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

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

ndb_*node_id*_error.log是一个文件,其中包含引用的ndbd进程遇到的所有崩溃的记录。此文件中的每个记录都包含一个简短的错误字符串和此崩溃的跟踪文件的引用。此文件中的典型条目可能如下所示:

代码语言:javascript复制
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 Cluster 开发团队进行分析很有用。

可以配置在旧文件被覆盖之前创建的这些跟踪文件的数量。*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。

代码语言:javascript复制
$> ndbd --connect-string="nodeid=2;host=ndb_mgmd.mysql.com:1186"

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

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

执行过程使用一个线程来读取、写入和扫描数据,以及进行所有其他活动。该线程是异步实现的,因此可以轻松处理成千上万个并发操作。此外,一个看门狗线程监督执行线程,以确保它不会陷入无限循环。一组线程处理文件 I/O,每个线程可以处理一个打开的文件。线程还可以被用于ndbd进程中的传输连接。在执行大量操作(包括更新)的多处理器系统中,ndbd进程可以使用高达 2 个 CPU。

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

25.5.2 ndbinfo_select_all — 从 ndbinfo 表中选择

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndbinfo-select-all.html

ndbinfo_select_all 是一个客户端程序,从 ndbinfo 数据库中的一个或多个表中选择所有行和列

并非所有在 mysql 客户端中可用的 ndbinfo 表都可以被此程序读取(请参见本节后面)。此外,ndbinfo_select_all 可以显示一些无法使用 SQL 访问的 ndbinfo 内部表的信息,包括 tablescolumns 元数据表。

要使用 ndbinfo_select_all 从一个或多个 ndbinfo 表中选择,需要在调用程序时提供表的名称,如下所示:

代码语言:javascript复制
$> ndbinfo_select_all *table_name1*  [*table_name2*] [...]

例如:

代码语言:javascript复制
$> ndbinfo_select_all logbuffers logspaces
== logbuffers ==
node_id log_type        log_id  log_part        total   used    high
5       0       0       0       33554432        262144  0
6       0       0       0       33554432        262144  0
7       0       0       0       33554432        262144  0
8       0       0       0       33554432        262144  0
== logspaces ==
node_id log_type        log_id  log_part        total   used    high
5       0       0       0       268435456       0       0
5       0       0       1       268435456       0       0
5       0       0       2       268435456       0       0
5       0       0       3       268435456       0       0
6       0       0       0       268435456       0       0
6       0       0       1       268435456       0       0
6       0       0       2       268435456       0       0
6       0       0       3       268435456       0       0
7       0       0       0       268435456       0       0
7       0       0       1       268435456       0       0
7       0       0       2       268435456       0       0
7       0       0       3       268435456       0       0
8       0       0       0       268435456       0       0
8       0       0       1       268435456       0       0
8       0       0       2       268435456       0       0
8       0       0       3       268435456       0       0
$>

可用于 ndbinfo_select_all 的选项显示在下表中。表后面会有额外的描述。

表 25.25 与程序 ndbinfo_select_all 一起使用的命令行选项

格式

描述

添加、弃用或移除

--character-sets-dir=path

包含字符集的目录

移除:8.0.31

--connect-retries=#

放弃之前重试连接的次数

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

--connect-retry-delay=#

尝试联系管理服务器之间等待的秒数

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

--connect-string=connection-string,-c connection_string

与 --ndb-connectstring 相同

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

--core-file

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

移除:8.0.31

--database=db_name,-d

表所在数据库的名称

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

--defaults-extra-file=path

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

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

--defaults-file=path

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

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

--defaults-group-suffix=string

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

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

--delay=#

设置循环之间的延迟时间(秒)

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

--help,-?

显示帮助文本并退出

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

--login-path=path

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

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

--loops=#,-l

设置执行选择操作的次数

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

--ndb-connectstring=connection-string,-c

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

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

--ndb-mgmd-host=connection-string,-c

与 --ndb-connectstring 相同

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

--ndb-nodeid=#

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

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

--no-defaults

不要从登录文件以外的任何选项文件中读取默认选项

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

--ndb-optimized-node-selection

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

移除:8.0.31

--parallelism=#,-p

设置并行度

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

--print-defaults

打印程序参数列表并退出

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

--usage,-?

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

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

--version,-V

显示版本信息并退出

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

格式

描述

添加、弃用或移除

  • --character-sets-dir 命令行格式--character-sets-dir=path移除8.0.31包含字符集的目录。
  • --core-file 命令行格式--core-file移除8.0.31在错误时写入核心文件;用于调试。
  • --connect-retries 命令行格式--connect-retries=#类型整数默认值12最小值0最大值12在放弃之前重试连接的次数。
  • --connect-retry-delay 命令行格式--connect-retry-delay=#类型整数默认值5最小值0最大值5尝试联系管理服务器之间等待的秒数。
  • --connect-string 命令行格式--connect-string=connection-string类型字符串默认值[none]--ndb-connectstring 相同。
  • --defaults-extra-file 命令行格式--defaults-extra-file=path类型字符串默认值[none]在全局文件读取后读取给定文件。
  • --defaults-file 命令行格式--defaults-file=path类型字符串默认值[none]仅从给定文件中读取默认选项。
  • --defaults-group-suffix 命令行格式--defaults-group-suffix=string类型字符串默认值[none]同时读取使用 concat(group, suffix) 的组。
  • --delay=seconds`` 命令行格式--delay=#类型数字默认值5最小值0最大值MAX_INT此选项设置执行循环之间等待的秒数。如果 --loops 设置为 0 或 1,则无效。
  • --help 命令行格式--help显示帮助文本并退出。
  • --login-path 命令行格式--login-path=path类型字符串默认值[none]从登录文件中读取给定路径。
  • --loops=number``, -l *number* 命令行格式--loops=#类型数字默认值1最小值0最大值MAX_INT此选项设置执行选择的次数。使用 --delay 设置循环之间的时间。
  • --ndb-connectstring 命令行格式--ndb-connectstring=connection-string类型字符串默认值[none]设置用于连接到 ndb_mgmd 的连接字符串。语法:“[nodeid=id;][host=]hostname[:port]”。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目。
  • --ndb-mgmd-host 命令行格式--ndb-mgmd-host=connection-string类型字符串默认值[none]--ndb-connectstring 相同。
  • --ndb-nodeid 命令行格式--ndb-nodeid=#类型整数默认值[无]为此节点设置节点 ID,覆盖–ndb-connectstring 设置的任何 ID。
  • --ndb-optimized-node-selection 命令行格式--ndb-optimized-node-selection移除8.0.31启用节点选择优化以进行事务。默认情况下启用;使用--skip-ndb-optimized-node-selection来禁用。
  • --no-defaults 命令行格式--no-defaults不要从除登录文件之外的任何选项文件中读取默认选项。
  • --print-defaults 命令行格式--print-defaults打印程序参数列表并退出。
  • --usage 命令行格式--usage显示帮助文本并退出;与–help 相同。
  • --version 命令行格式--version显示版本信息并退出。

ndbinfo_select_all 无法读取以下表格:

  • arbitrator_validity_detail
  • arbitrator_validity_summary
  • cluster_locks
  • cluster_operations
  • cluster_transactions
  • disk_write_speed_aggregate_node
  • locks_per_fragment
  • memory_per_fragment
  • memoryusage
  • operations_per_fragment
  • server_locks
  • server_operations
  • server_transactions
  • table_info

25.5.3 ndbmtd — 多线程的 NDB 集群数据节点守护程序

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndbmtd.html

ndbmtdndbd的多线程版本,用于处理使用NDBCLUSTER存储引擎的所有表中的数据的进程。ndbmtd旨在用于具有多个 CPU 核心的主机计算机。除非另有说明,否则ndbmtd的功能方式与ndbd相同;因此,在本节中,我们重点关注ndbmtdndbd的区别,并且您应该参考第 25.5.1 节,“ndbd — NDB 集群数据节点守护程序”,获取有关运行适用于数据节点进程的单线程和多线程版本的 NDB 集群数据节点的附加信息。

ndbd一起使用的命令行选项和配置参数也适用于ndbmtd。有关这些选项和参数的更多信息,请参见第 25.5.1 节,“ndbd — NDB 集群数据节点守护程序”和第 25.4.3.6 节,“定义 NDB 集群数据节点”。

ndbmtd") 也与ndbd兼容文件系统。换句话说,运行ndbd的数据节点可以停止,用ndbmtd")替换二进制文件,然后重新启动而不会丢失任何数据。(但是,在执行此操作时,如果希望ndbmtd")以多线程方式运行,则必须在重新启动节点之前确保MaxNoOfExecutionThreads设置为适当的值。)同样,可以通过停止节点然后在多线程二进制文件位置启动ndbd来简单地用ndbmtd")替换ndbmtd")二进制文件。在切换两者之间时,不需要使用--initial启动数据节点二进制文件。

使用ndbmtd")与使用ndbd有两个关键区别:

  1. 因为ndbmtd")默认以单线程模式运行(即,它的行为类似于ndbd),所以必须配置它以使用多个线程。可以通过在config.ini文件中为MaxNoOfExecutionThreads配置参数或ThreadConfig配置参数设置适当的值来实现。使用MaxNoOfExecutionThreads更简单,但ThreadConfig提供更多灵活性。有关这些配置参数及其用法的更多信息,请参阅多线程配置参数(ndbmtd)。
  2. 由于ndbmtd")进程中的关键错误,跟ndbd失败生成的跟踪文件有些许不同。这些差异将在接下来的几段中详细讨论。

ndbd类似,ndbmtd")生成一组日志文件,这些文件放置在config.ini配置文件中指定的目录中,即DataDir。除了跟踪文件外,这些文件以与ndbd生成方式相同的方式生成,并具有与ndbd生成的文件相同的名称。

在发生关键错误时,ndbmtd")会生成描述错误发生前发生的情况的跟踪文件。这些文件可以在数据节点的DataDir中找到,对于 NDB Cluster 开发和支持团队来说,这些文件对问题分析非常有用。每个ndbmtd")线程都会生成一个跟踪文件。这些文件的命名模式如下:

代码语言:javascript复制
ndb_*node_id*_trace.log.*trace_id*_t*thread_id*,

在这个模式中,*node_id代表集群中数据节点的唯一节点 ID,trace_id是一个跟踪序列号,thread_id*是线程 ID。例如,如果作为 NDB Cluster 数据节点运行的ndbmtd")进程失败,节点 ID 为 3,并且MaxNoOfExecutionThreads等于 4,那么在数据节点的数据目录中会生成四个跟踪文件。如果这是该节点第一次失败,那么这些文件的名称将是ndb_3_trace.log.1_t1ndb_3_trace.log.1_t2ndb_3_trace.log.1_t3ndb_3_trace.log.1_t4。在内部,这些跟踪文件遵循与ndbd跟踪文件相同的格式。

ndbd退出代码和消息是在数据节点进程意外关闭时生成的,也被ndbmtd")使用。请参阅数据节点错误消息,以查看这些消息的列表。

注意

可以在同一 NDB 集群中的不同数据节点上同时使用ndbdndbmtd")。然而,这样的配置并未经过广泛测试;因此,我们目前不建议在生产环境中这样做。

25.5.4 ndb_mgmd — NDB 集群管理服务器守护程序

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-mgmd.html

管理服务器是读取集群配置文件并将此信息分发给请求的集群中的所有节点的进程。它还维护着集群活动的日志。管理客户端可以连接到管理服务器并检查集群的状态。

所有可用于ndb_mgmd的选项均列在下表中。表后面会有额外的描述。

表 25.26 与程序 ndb_mgmd 一起使用的命令行选项

格式

描述

添加、弃用或移除

--bind-address=host

本地绑定地址

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

--character-sets-dir=path

包含字符集的目录

移除:8.0.31

--cluster-config-suffix=name

在读取 my.cnf 文件中的 cluster_config 部分时覆盖默认组后缀;用于测试

添加:8.0.24

[--config-cache[=TRUE|FALSE]](mysql-cluster-programs-ndb-mgmd.html#option_ndb_mgmd_config-cache)

启用管理服务器配置缓存;默认为 true

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

--config-file=file,-f file

指定集群配置文件;还要指定–reload 或–initial 以覆盖存在的配置缓存

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

--configdir=directory,--config-dir=directory

指定集群管理服务器配置缓存目录

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

--connect-retries=#

放弃之前重试连接的次数

移除:8.0.31

--connect-retry-delay=#

尝试联系管理服务器之间等待的秒数

移除:8.0.31

--connect-string=connection_string,-c connection_string

与–ndb-connectstring 相同

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

--core-file

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

已移除:8.0.31

--daemon,-d

以守护进程模式运行 ndb_mgmd(默认)

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

--defaults-extra-file=path

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

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

--defaults-file=path

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

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

--defaults-group-suffix=string

还读取连接(group,suffix)

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

--help,-?

显示帮助文本并退出

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

--initial

导致管理服务器从配置文件重新加载配置数据,绕过配置缓存

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

[--install[=name]](mysql-cluster-programs-ndb-mgmd.html#option_ndb_mgmd_install)

用于将管理服务器进程安装为 Windows 服务;不适用于其他平台

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

--interactive

以交互模式运行 ndb_mgmd(在生产中不受官方支持;仅用于测试目的)

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

--log-name=name

写入适用于此节点的集群日志消息时使用的名称

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

--login-path=path

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

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

--mycnf

从 my.cnf 文件中读取集群配置数据

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

--ndb-connectstring=connection_string,-c connection_string

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

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

--ndb-mgmd-host=connection_string,-c connection_string

与 --ndb-connectstring 相同

(适用于基于 MySQL 8.0 的所有 NDB 版本)

--ndb-nodeid=#

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

(适用于基于 MySQL 8.0 的所有 NDB 版本)

--ndb-optimized-node-selection

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

已移除:8.0.31

--no-defaults

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

(适用于基于 MySQL 8.0 的所有 NDB 版本)

--no-nodeid-checks

不执行任何节点 ID 检查

(适用于基于 MySQL 8.0 的所有 NDB 版本)

--nodaemon

不以守护进程方式运行 ndb_mgmd

(适用于基于 MySQL 8.0 的所有 NDB 版本)

--nowait-nodes=list

在启动此管理服务器时不等待指定的管理节点;需要 --ndb-nodeid 选项

(适用于基于 MySQL 8.0 的所有 NDB 版本)

--print-defaults

打印程序参数列表并退出

(适用于基于 MySQL 8.0 的所��� NDB 版本)

--print-full-config,-P

打印完整配置并退出

(适用于基于 MySQL 8.0 的所有 NDB 版本)

--reload

导致管理服务器将配置文件与配置缓存进行比较

(适用于基于 MySQL 8.0 的所有 NDB 版本)

[--remove[=name]](mysql-cluster-programs-ndb-mgmd.html#option_ndb_mgmd_remove)

用于删除先前安装为 Windows 服务的管理服务器进程,可选择指定要删除的服务名称;不适用于其他平台

(适用于基于 MySQL 8.0 的所有 NDB 版本)

--skip-config-file

不使用配置文件

(适用于基于 MySQL 8.0 的所有 NDB 版本)

--usage,-?

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

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

--verbose,-v

写入额外信息到日志

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

--version,-V

显示版本信息并退出

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

格式

描述

添加、弃用或移除

--bind-address=*host*

命令行格式

--bind-address=host

类型

字符串

默认值

[none]

导致管理服务器绑定到特定网络接口(主机名或 IP 地址)。此选项没有默认值。

--character-sets-dir

命令行格式

--character-sets-dir=path

移除版本

8.0.31

包含字符集的目录。

cluster-config-suffix

命令行格式

--cluster-config-suffix=name

引入版本

8.0.24

类型

字符串

默认值

[none]

在读取my.cnf中的集群配置部分时覆盖默认组后缀;用于测试。

--config-cache

命令行格式

--config-cache[=TRUE|FALSE]

类型

布尔值

默认值

TRUE

此选项的默认值为1(或TRUE,或ON),可用于禁用管理服务器的配置缓存,使其每次启动时从config.ini读取配置(参见第 25.4.3 节,“NDB 集群配置文件”)。您可以通过以下任一选项启动ndb_mgmd进程来实现:

  • --config-cache=0
  • --config-cache=FALSE
  • --config-cache=OFF
  • --skip-config-cache

仅当管理服务器在启动时没有存储配置时,才能有效使用上述选项之一。如果管理服务器发现任何配置缓存文件,则--config-cache选项或--skip-config-cache选项将被忽略。因此,要禁用配置缓存,应该在管理服务器第一次启动时使用该选项。否则,即如果您希望为已经创建配置缓存的管理服务器禁用配置缓存,您必须停止管理服务器,手动删除任何现有的配置缓存文件,然后使用--skip-config-cache(或将--config-cache设置为 0、OFFFALSE)重新启动管理服务器。

配置缓存文件通常在安装目录下的名为mysql-cluster的目录中创建(除非使用--configdir选项覆盖了此位置)。每次管理服务器更新其配置数据时,都会写入一个新的缓存文件。这些文件按照创建顺序顺序命名,格式如下:

代码语言:javascript复制
ndb_*node-id*_config.bin.*seq-number*

node-id 是管理服务器的节点 ID;seq-number 是一个从 1 开始的序列号。例如,如果管理服务器的节点 ID 是 5,则创建前三个配置缓存文件时,它们的名称将分别为ndb_5_config.bin.1ndb_5_config.bin.2ndb_5_config.bin.3

如果您的意图是在不实际禁用缓存的情况下清除或重新加载配置缓存,您应该使用--reload--initial选项之一,而不是使用--skip-config-cache来启动ndb_mgmd

要重新启用配置缓存,只需重新启动管理服务器,但不使用之前用于禁用配置缓存的--config-cache--skip-config-cache选项。

ndb_mgmd 在使用--skip-config-cache时不会检查配置目录(--configdir),也不会尝试创建配置目录。(Bug #13428853)

--config-file=*filename*-f *filename*

命令行格式

--config-file=file

禁用方式

skip-config-file

类型

文件名

默认值

[无]

指示管理服务器应使用哪个文件作为其配置文件。默认情况下,管理服务器在与ndb_mgmd可执行文件相同目录中查找名为config.ini的文件;否则,��须显式指定文件名和位置。

此选项没有默认值,除非管理服务器被迫读取配置文件,要么因为ndb_mgmd是使用--reload--initial选项启动的,要么因为管理服务器找不到任何配置缓存。从 NDB 8.0.26 开始,ndb_mgmd 如果指定了--config-file而没有指定--initial--reload,则拒绝启动。

如果ndb_mgmd是使用--config-cache=OFF启动的,则还会读取--config-file选项。有关更多信息,请参见第 25.4.3 节,“NDB 集群配置文件”。

--configdir=*dir_name*

命令行格式

--configdir=directory``--config-dir=directory

类型

文件名

默认值

$INSTALLDIR/mysql-cluster

指定集群管理服务器的配置缓存目录。--config-dir 是此选项的别名。

在 NDB 8.0.27 及更高版本中,这必须是绝对路径。否则,管理服务器将拒绝启动。

--connect-retries

命令行格式

--connect-retries=#

移除

8.0.31

类型

整数

默认值

12

最小值

0

最大值

12

在放弃之前重试连接的次数。

--connect-retry-delay

命令行格式

--connect-retry-delay=#

移除

8.0.31

类型

整数

默认值

5

最小值

0

最大值

5

尝试联系管理服务器之间等待的秒数。

--connect-string

命令行格式

--connect-string=connection_string

类型

字符串

默认值

[none]

与–ndb-connectstring 相同。

--core-file

命令行格式

--core-file

已移除

8.0.31

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

--daemon, -d

命令行格式

--daemon

指示ndb_mgmd以守护进程方式启动。这是默认行为。

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

--defaults-extra-file

命令行格式

--defaults-extra-file=path

类型

字符串

默认值

[none]

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

--defaults-file

命令行格式

--defaults-file=path

类型

字符串

默认值

[none]

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

--defaults-group-suffix

命令行格式

--defaults-group-suffix=string

类型

字符串

默认值

[none]

也可以使用 concat(group, suffix) 读取组。

--help

命令行格式

--help

显示帮助文本并退出。

--initial

命令行格式

--initial

配置数据在内部缓存,而不是每次启动管理服务器时从集群全局配置文件中读取(请参阅第 25.4.3 节,“NDB 集群配置文件”)。使用--initial选项会覆盖此行为,强制管理服务器删除任何现有的缓存文件,然后从集群配置文件中重新读取配置数据并构建新的缓存。

这与--reload选项有两种不同之处。首先,--reload���制服务器检查配置文件与缓存的差异,并仅在文件内容与缓存不同时重新加载数据。其次,--reload不会删除任何现有的缓存文件。

如果使用--initial调用ndb_mgmd但找不到全局配置文件,则管理服务器无法启动。

当管理服务器启动时,它会检查同一 NDB Cluster 中是否有另一个管理服务器,并尝试使用另一个管理服务器的配置数据。在执行具有多个管理节点的 NDB Cluster 的滚动重启时,此行为会产生影响。有关更多信息,请参见第 25.6.5 节,“执行 NDB Cluster 的滚动重启”。

--config-file选项一起使用时,仅在实际找到配置文件时才清除缓存。

--install[=*name*]

命令行格式

--install[=name]

平台特定

Windows

类型

字符串

默认值

ndb_mgmd

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

通常不建议将此选项与--initial选项一起使用,因为这会导致配置缓存在每次停止和启动服务时被清除并重建。如果您打算使用任何其他影响管理服务器启动的ndb_mgmd选项,应格外小心,并确保您充分理解并允许可能产生的任何后果。

--install 选项在非 Windows 平台上没有任何效果。

--interactive

命令行格式

--interactive

以交互模式启动ndb_mgmd;也就是说,一旦管理服务器运行,就会启动一个ndb_mgm客户端会话。此选项不会启动任何其他 NDB Cluster 节点。

--log-name=*name*

命令行格式

--log-name=name

类型

字符串

默认值

MgmtSrvr

为此节点在集群日志中使用的名称。

--login-path

命令行格式

--login-path=path

类型

字符串

默认值

[none]

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

--mycnf

命令行格式

--mycnf

my.cnf文件中读取配置数据。

--ndb-connectstring

命令行格式

--ndb-connectstring=connection_string

类型

字符串

默认值

[none]

设���连接字符串。语法:[nodeid=*id*;][host=]*hostname*[:*port*]。覆盖NDB_CONNECTSTRINGmy.cnf中的条目。如果指定了--config-file,则忽略;从 NDB 8.0.27 开始,当同时使用两个选项时会发出警告。

--ndb-mgmd-host

命令行格式

--ndb-mgmd-host=connection_string

类型

字符串

默认值

[none]

与–ndb-connectstring 相同。

--ndb-nodeid

命令行格式

--ndb-nodeid=#

类型

整数

默认值

[none]

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

--ndb-optimized-node-selection

命令行格式

--ndb-optimized-node-selection

已移除

8.0.31

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

--no-nodeid-checks

命令行格式

--no-nodeid-checks

不执行任何节点 ID 的检查。

--nodaemon

命令行格式

--nodaemon

指示ndb_mgmd不作为守护进程启动。

在 Windows 上,ndb_mgmd的默认行为是在前台运行,因此在 Windows 平台上不需要此选项。

--no-defaults

命令行格式

--no-defaults

不从登录文件以外的任何选项文件中读取默认选项。

--nowait-nodes

命令行格式

--nowait-nodes=list

类型

数字

默认值

[none]

最小值

1

最大值

255

当启动配置为具有两个管理节点的 NDB Cluster 时,每个管理服务器通常会检查另一个ndb_mgmd是否也正在运行,并且另一个管理服务器的配置是否与其相同。但是,有时希望仅使用一个管理节点启动集群(并且可能稍后启动另一个ndb_mgmd)。此选项使管理节点绕过传递给此选项的任何其他管理节点的任何检查,允许集群启动,就好像配置为仅使用已启动的管理节点。

为了举例说明,考虑config.ini文件的以下部分(我们省略了与此示例无关的大部分配置参数):

代码语言:javascript复制
[ndbd]
NodeId = 1
HostName = 198.51.100.101

[ndbd]
NodeId = 2
HostName = 198.51.100.102

[ndbd]
NodeId = 3
HostName = 198.51.100.103

[ndbd]
NodeId = 4
HostName = 198.51.100.104

[ndb_mgmd]
NodeId = 10
HostName = 198.51.100.150

[ndb_mgmd]
NodeId = 11
HostName = 198.51.100.151

[api]
NodeId = 20
HostName = 198.51.100.200

[api]
NodeId = 21
HostName = 198.51.100.201

假设您希望仅使用具有节点 ID 10 并在具有 IP 地址 198.51.100.150 的主机上运行的管理服务器启动此集群。(例如,假设您打算的主机计算机由于硬件故障暂时不可用,并且您正在等待修复。)要以这种方式启动集群,请在位于 198.51.100.150 的计算机上使用命令行输入以下命令:

代码语言:javascript复制
$> ndb_mgmd --ndb-nodeid=10 --nowait-nodes=11

如前面的示例所示,当使用--nowait-nodes时,您还必须使用--ndb-nodeid选项来指定此ndb_mgmd进程的节点 ID。

然后,您可以按照通常的方式启动集群的每个数据节点。如果您希望在稍后的某个时间启动并使用第二个管理服务器而无需重新启动数据节点,则必须使用引用两个管理服务器的连接字符串启动每个数据节点,如下所示:

代码语言:javascript复制
$> ndbd -c 198.51.100.150,198.51.100.151

与希望作为连接到此集群的 NDB Cluster SQL 节点启动的任何mysqld进程使用的连接字符串相同。有关更多信息,请参见 Section 25.4.3.3, “NDB Cluster Connection Strings”。

当与ndb_mgmd一起使用时,此选项仅影响管理节点与其他管理节点的行为。不要将其与与ndbdndbmtd")一起使用的--nowait-nodes选项混淆,以允许集群在少于其完整数据节点数量的情况下启动;当与数据节点一起使用时,此选项仅影响它们与其他数据节点的行为。

可以将多个管理节点 ID 作为逗号分隔的列表传递给此选项。每个节点 ID 必须不小于 1 且不大于 255。实际上,对于同一 NDB 集群使用多个管理服务器(或有任何这样做的需要)是非常罕见的;在大多数情况下,您只需要将不希望在启动集群时使用的单个节点 ID 传递给此选项。

注意

当您稍后启动“丢失”的管理服务器时,其配置必须与集群中已经使用的管理服务器的配置相匹配。否则,它将无法通过现有管理服务器执行的配置检查,并且无法启动。

--print-defaults

命令行格式

--print-defaults

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

--print-full-config, -P

命令行格式

--print-full-config

显示有关集群配置的扩展信息。使用此选项在命令行上,ndb_mgmd进程会打印有关集群设置的信息,包括集群配置部分的广泛列表以及参数及其值。通常与--config-file (-f)选项一起使用。

--reload

命令行格式

--reload

NDB 集群配置数据是存储在内部而不是每次启动管理服务器时从集群全局配置文件中读取的(请参阅第 25.4.3 节,“NDB 集群配置文件”)。使用此选项会强制管理服务器检查其内部数据存储与集群配置文件的匹配情况,并在发现配置文件与缓存不匹配时重新加载配置。现有的配置缓存文件会被保留,但不会被使用。

这与--initial选项有两点不同。首先,--initial会导致删除所有缓存文件。其次,--initial会强制管理服务器重新读取全局配置文件并构建新的缓存。

如果管理服务器找不到全局配置文件,则--reload选项将被忽略。

当使用--reload时,管理服务器必须能够与数据节点和集群中的任何其他管理服务器通信,然后才能尝试读取全局配置文件;否则,管理服务器将无法启动。这可能是由于网络环境的更改,例如节点的新 IP 地址或防火墙配置的更改。在这种情况下,您必须使用--initial来强制丢弃现有的缓存配置并从文件重新加载。有关更多信息,请参见第 25.6.5 节,“执行 NDB 集群的滚动重启”。

--remove[=name]

命令行格式

--remove[=name]

特定平台

Windows

类型

字符串

默认值

ndb_mgmd

删除已安装为 Windows 服务的管理服务器进程,可选择指定要删除的服务名称。仅适用于 Windows 平台。

--skip-config-file

命令行格式

--skip-config-file

不读取集群配置文件;如果指定了--initial--reload选项,则忽略。

--usage

命令行格式

--usage

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

--verbose, -v

命令行格式

--verbose

删除已安装为 Windows 服务的管理服务器进程,可选择指定要删除的服务名称。仅适用于 Windows 平台。

--version

命令行格式

--version

显示版本信息并退出。

在启动管理服务器时,不一定需要指定连接字符串。但是,如果您使用多个管理服务器,则应提供连接字符串,并且集群中的每个节点都应明确指定其节点 ID。

有关使用连接字符串的信息,请参见第 25.4.3.3 节“NDB 集群连接字符串”。第 25.5.4 节“ndb_mgmd — The NDB Cluster Management Server Daemon”描述了ndb_mgmd的其他选项。

以下文件由ndb_mgmd在其启动目录中创建或使用,并根据 config.ini 配置文件中指定的 DataDir 放置。在下面的列表中,node_id 是唯一的节点标识符。

  • config.ini 是整个集群的配置文件。此文件由用户创建并由管理服务器读取。第 25.4 节“NDB 集群配置”讨论了如何设置此文件。
  • ndb_*node_id*_cluster.log 是集群事件日志文件。此类事件的示例包括检查点启动和完成、节点启动事件、节点故障以及内存使用级别。可以在第 25.6 节“NDB 集群管理”中找到带有描述的完整集群事件列表。 默认情况下,当集群日志大小达到一百万字节时,文件将重命名为 ndb_*node_id*_cluster.log.*seq_id*,其中 seq_id 是集群日志文件的序列号。(例如:如果已经存在序列号为 1、2 和 3 的文件,则下一个日志文件将使用编号 4。)您可以使用 LogDestination 配置参数更改集群日志的大小、文件数量和其他特性。
  • ndb_*node_id*_out.log 是在将管理服务器作为守护进程运行时用于 stdoutstderr 的文件。
  • ndb_*node_id*.pid 是在将管理服务器作为守护进程运行时使用的进程 ID 文件。

0 人点赞