原文:
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 连接,必须至少包含参数NodeId1
和NodeId2
,以及任何要覆盖的连接参数。
也可以通过在[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)此参数默认情况下处于禁用状态。当启用时(设置为Y
或1
),所有消息在放入发送缓冲区之前都会计算校验和。此功能确保消息在等待发送缓冲区或通过传输机制时不会损坏。 -
Group
当启用ndb_optimized_node_selection
时,节点的接近程度在某些情况下用于选择要连接的节点。可以通过将此参数设置为较低值来影响接近程度,较低值被解释为“更近”。有关更多信息,请参阅系统变量的描述。 -
HostName1
版本(或更高)NDB 8.0.13类型或单位名称或 IP 地址默认[…]范围…重启类型节点重启: 需要对集群进行滚动重启。(NDB 8.0.13)HostName1
和HostName2
参数可用于指定两个节点之间的 TCP 连接所使用的特定网络接口。这些参数的值可以是主机名或 IP 地址。 -
HostName2
版本(或更高)NDB 8.0.13类型或单位名称或 IP 地址默认[…]范围…重启类型节点重启: 需要对集群进行滚动重启。(NDB 8.0.13)HostName1
和HostName2
参数可用于指定两个节点之间的 TCP 连接所使用的特定网络接口。这些参数的值可以是主机名或 IP 地址。 -
NodeId1
版本(或更高)NDB 8.0.13类型或单位数字默认[none]范围1 - 255重启类型节点重启: 需要对集群进行滚动重启。(NDB 8.0.13)要识别两个节点之间的连接,需要在配置文件的[tcp]
部分中提供它们的节点 ID 作为NodeId1
和NodeId2
的值。这些值是每个节点的唯一Id
值,如第 25.4.3.7 节,“在 NDB 集群中定义 SQL 和其他 API 节点”中所述。 -
NodeId2
版本(或更高)NDB 8.0.13类型或单位数��默认[none]范围1 - 255重启类型节点重启: 需要对集群进行滚动重启。(NDB 8.0.13)要识别两个节点之间的连接,需要在配置文件的[tcp]
部分提供它们的节点 ID 作为NodeId1
和NodeId2
的值。这些是每个节点的相同唯一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
将此参数设置为TRUE
或1
将绑定IP_ADDR_ANY
,以便可以从任何地方进行连接(用于自动生成的连接)。默认值为FALSE
(0
)。 -
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 地址直接通信,如下所示:
# 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
只有在指定直接连接时才使用 HostName1
和 HostName2
参数。
使用数据节点之间的直接 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
设置为相同值。 - 通过在集群配置文件中使用包含
NodeId1
和NodeId2
设置的[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 集群中,托管了所示节点类型的主机名:
-
10.0.0.0
:管理服务器 -
10.0.0.1
:一个数据节点和一个 SQL 节点 -
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]
部分中按连接覆盖。每个这样的部分必须使用 NodeId1
和 NodeId2
关联给定 SHM 连接的节点 ID;也可以使用 HostName1
和 HostName2
通过主机名标识节点,但这些参数不是必需的。
对于未设置主机名的 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)HostName1
和HostName2
参数可用于指定用于两个节点之间给定 SHM 连接的特定网络接口。这些参数的值可以是主机名或 IP 地址。 -
HostName2
版本(或更高版本)NDB 8.0.13类型或单位名称或 IP 地址默认值[…]范围…重启类型节点重启: 需要进行滚动重启(NDB 8.0.13)HostName1
和HostName2
参数可用于指定用于两个节点之间给定 SHM 连接的特定网络接口。这些参数的值可以是主机名或 IP 地址。 -
NodeId1
版本(或更高版本)NDB 8.0.13类型或单位数字默认值[无]范围1 - 255重启类型节点重启: 需要进行滚动重启(NDB 8.0.13)要识别两个节点之间的连接,需要为每个节点提供节点标识符,如NodeId1
和NodeId2
。 -
NodeId2
版本(或更高版本)NDB 8.0.13类型或单位数字默认值[无]范围1 - 255重启类型节点重启: 需要进行滚动重启(NDB 8.0.13)要识别两个节点之间的连接,需要为每个节点提供节点标识符,如NodeId1
和NodeId2
。 -
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
) - 作业缓冲区
- 发送缓冲区(
SendBufferMemory
,TotalSendBufferMemory
,ExtraSendBufferMemory
) - 磁盘数据记录页缓存(
DiskPageBufferMemory
,DiskPageBufferEntries
) - 事务内存(
TransactionMemory
) - 查询内存
- 磁盘访问记录
- 文件缓冲区
每个资源都设置了一个保留内存区域和一个最大内存区域。保留内存区域只能被其保留的资源使用,不能与其他资源共享;给定资源永远不能分配超过为其允许的最大内存的内存。没有最大内存的资源可以扩展使用内存管理器中的所有共享内存。
这些资源的全局共享内存大小由SharedGlobalMemory
配���参数控制(默认值:128 MB)。
数据内存始终保留,从共享内存中不获取任何内存。它使用DataMemory
配置参数进行控制,其最大值为 16384 GB。DataMemory
是记录存储的地方,包括哈希索引(每行约 15 字节)、有序索引(每个索引每行 10-12 字节)和行头(每行 16-32 字节)。
重做日志缓冲区也仅使用保留内存;这由RedoBuffer
配置参数控制,该参数设置每个 LDM 线程的重做日志缓冲区大小。这意味着实际使用的内存量是此参数值乘以数据节点中的 LDM 线程数。
作业缓冲区仅使用保留内存;此内存的大小由NDB
根据各种类型线程的数量计算而得。
发送缓冲区有一个保留部分,但也可以分配额外的共享全局内存的 25%。发送缓冲区的保留大小分两步计算:
- 使用
TotalSendBufferMemory
配置参数的值(无默认值)或所有单个连接到数据节点的单个连接使用的所有单个发送缓冲区的总和。数据节点连接到所有其他数据节点,所有 API 节点和所有管理节点。这意味着,在具有 2 个数据节点,2 个管理节点和每个数据节点连接到 10 个 API 节点的集群中,每个数据节点有 13 个节点连接。由于数据节点连接的SendBufferMemory
的默认值为 2 兆字节,因此总计为 26 MB。 - 要获取发送缓冲区的总保留大小,需要将
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
时,上述配置参数都不用于计算内存大小。此外,参数MaxNoOfConcurrentIndexOperations
、MaxNoOfFiredTriggers
、MaxNoOfLocalOperations
和MaxNoOfLocalScans
与TransactionMemory
不兼容,不能与之同时设置;如果在config.ini
配置文件中设置了TransactionMemory
并且这四个参数中的任何一个也被设置,管理服务器将无法启动。注意:在 NDB 8.0.29 之前,对于MaxNoOfFiredTriggers
、MaxNoOfLocalScans
或MaxNoOfLocalOperations
,这个限制并未强制执行(Bug #102509,Bug #32474988)。
MaxNoOfConcurrentIndexOperations
、MaxNoOfFiredTriggers
、MaxNoOfLocalOperations
和MaxNoOfLocalScans
参数在 NDB 8.0 中已弃用;您应该期望它们在将来的 MySQL NDB Cluster 版本中被移除。
在 NDB 8.0.29 之前,不可能同时设置MaxNoOfConcurrentTransactions
、MaxNoOfConcurrentOperations
或MaxNoOfConcurrentScans
与TransactionMemory
。
事务内存资源包含大量内存池。每个内存池代表一个对象类型,并包含一组对象;每个池在启动时包括一个分配给池的保留部分;这些保留内存永远不会返回到共享全局内存。使用仅具有单个级别的数据结构来查找保留记录,以便快速检索,这意味着每个池中应该保留一定数量的记录。每个池中保留的记录数量对性能和保留内存分配有一定影响,但通常只在某些非常高级的用例中需要显式设置保留大小。
可通过设置以下配置参数来控制池的保留部分的大小:
-
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 |
---|
指示ndbd或ndbmtd")作为守护进程执行。这是默认行为。--nodaemon
可用于阻止进程作为守护进程运行。
在 Windows 平台上运行ndbd或ndbmtd")时,此选项无效。
--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 |
通过stdin
、tty
或my.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 |
---|
导致ndbd或ndbmtd")作为前台进程执行,主要用于调试目的。此选项意味着--nodaemon
选项。
在 Windows 平台上运行ndbd或ndbmtd")时,此选项不起作用。
--help
命令行格式 | --help |
---|
显示帮助文本并退出。
--initial
命令行格式 | --initial |
---|
指示ndbd执行初始启动。初始启动会擦除早期实例的恢复目的创建的任何文件,并重新创建恢复日志文件。在某些操作系统上,此过程可能需要相当长的时间。
只有在非常特殊的情况下才应使用--initial
启动,因为此选项会导致从 NDB 集群文件系统中删除所有文件并重新创建所有重做日志文件。这些情况列在这里:
- 在执行更改了任何文件内容的软件升级时。
- 在使用新版本的ndbd重新启动节点时。
- 作为最后一招的措施,当由于某种原因节点重新启动或系统重启反复失败时。在这种情况下,请注意由于数据文件的破坏,此节点将不再能用于恢复数据。
警告
为避免最终可能发生的数据丢失,建议您不要将--initial
选项与StopOnError = 0
一起使用。相反,在集群启动后,只需在config.ini
中将StopOnError
设置为 0,然后正常重新启动数据节点,即不使用--initial
选项。有关此问题的详细说明,请参阅StopOnError
参数的描述。(Bug #24945638)
使用此选项会阻止StartPartialTimeout
和StartPartitionedTimeout
配置参数产生任何效果。
重要
此选项不会影响已由受影响节点创建的备份文件。
在 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.ini
或my.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 |
---|
防止ndbd或ndbmtd")作为守护进程执行。此选项覆盖--daemon
选项。在调试二进制文件时,将输出重定向到屏幕非常有用。
在 Windows 上,ndbd和ndbmtd")的默认行为是在前台运行,使得此选项在 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 ON
和NODELOG DEBUG OFF
来启用和禁用此额外的日志记录。
--version
命令行格式 | --version |
---|
显示版本信息并退出。
ndbd生成一组日志文件,这些文件放置在config.ini
配置文件中的DataDir
指定的目录中。
下面列出了这些日志文件。*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 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
内部表的信息,包括 tables
和 columns
元数据表。
要使用 ndbinfo_select_all 从一个或多个 ndbinfo
表中选择,需要在调用程序时提供表的名称,如下所示:
$> 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
ndbmtd是ndbd的多线程版本,用于处理使用NDBCLUSTER
存储引擎的所有表中的数据的进程。ndbmtd旨在用于具有多个 CPU 核心的主机计算机。除非另有说明,否则ndbmtd的功能方式与ndbd相同;因此,在本节中,我们重点关注ndbmtd与ndbd的区别,并且您应该参考第 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有两个关键区别:
- 因为ndbmtd")默认以单线程模式运行(即,它的行为类似于ndbd),所以必须配置它以使用多个线程。可以通过在
config.ini
文件中为MaxNoOfExecutionThreads
配置参数或ThreadConfig
配置参数设置适当的值来实现。使用MaxNoOfExecutionThreads
更简单,但ThreadConfig
提供更多灵活性。有关这些配置参数及其用法的更多信息,请参阅多线程配置参数(ndbmtd)。 - 由于ndbmtd")进程中的关键错误,跟ndbd失败生成的跟踪文件有些许不同。这些差异将在接下来的几段中详细讨论。
与ndbd类似,ndbmtd")生成一组日志文件,这些文件放置在config.ini
配置文件中指定的目录中,即DataDir
。除了跟踪文件外,这些文件以与ndbd生成方式相同的方式生成,并具有与ndbd生成的文件相同的名称。
在发生关键错误时,ndbmtd")会生成描述错误发生前发生的情况的跟踪文件。这些文件可以在数据节点的DataDir
中找到,对于 NDB Cluster 开发和支持团队来说,这些文件对问题分析非常有用。每个ndbmtd")线程都会生成一个跟踪文件。这些文件的命名模式如下:
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_t1
,ndb_3_trace.log.1_t2
,ndb_3_trace.log.1_t3
和ndb_3_trace.log.1_t4
。在内部,这些跟踪文件遵循与ndbd跟踪文件相同的格式。
ndbd退出代码和消息是在数据节点进程意外关闭时生成的,也被ndbmtd")使用。请参阅数据节点错误消息,以查看这些消息的列表。
注意
可以在同一 NDB 集群中的不同数据节点上同时使用ndbd和ndbmtd")。然而,这样的配置并未经过广泛测试;因此,我们目前不建议在生产环境中这样做。
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、OFF
或FALSE
)重新启动管理服务器。
配置缓存文件通常在安装目录下的名为mysql-cluster
的目录中创建(除非使用--configdir
选项覆盖了此位置)。每次管理服务器更新其配置数据时,都会写入一个新的缓存文件。这些文件按照创建顺序顺序命名,格式如下:
ndb_*node-id*_config.bin.*seq-number*
node-id
是管理服务器的节点 ID;seq-number
是一个从 1 开始的序列号。例如,如果管理服务器的节点 ID 是 5,则创建前三个配置缓存文件时,它们的名称将分别为ndb_5_config.bin.1
、ndb_5_config.bin.2
和ndb_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.ini
或my.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_CONNECTSTRING
和my.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
文件的以下部分(我们省略了与此示例无关的大部分配置参数):
[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 的计算机上使用命令行输入以下命令:
$> 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一起使用时,此选项仅影响管理节点与其他管理节点的行为。不要将其与与ndbd或ndbmtd")一起使用的--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
是在将管理服务器作为守护进程运行时用于stdout
和stderr
的文件。 -
ndb_*
node_id*.pid
是在将管理服务器作为守护进程运行时使用的进程 ID 文件。