原文:docs.oracle.com/javase/tutorial/reallybigindex.html
原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-tcp-setting.html
25.4.3.10 NDB 集群 TCP/IP 连接
TCP/IP 是NDB 集群中所有节点之间连接的默认传输机制。通常,您不需要定义TCP/IP 连接。 MySQL Cluster 会自动为所有数据节点、管理节点以及SQL 或API 节点配置这些连接。
消息
有关此规则的例外情况,请参见第25.4.3.11 节“使用Direct Connect 的MySQL 集群TCP/IP 连接”。
要覆盖默认连接参数,请使用config.ini 文件中的一个或多个[tcp] 部分定义连接。每个[tcp] 部分显式定义两个MySQL 集群节点之间的TCP/IP 连接,并且必须至少包含参数NodeId1 和NodeId2 以及任何被覆盖的连接参数。
您还可以通过在[tcp default]部分中设置默认值来更改这些参数的默认值。
重要的
config.ini 文件中的[tcp] 部分必须列在所有其他部分之后。但是,[tcp default] 部分不需要这样做。这是MySQL 集群管理服务器如何读取config.ini 文件的一个已知问题。
可以在config.ini 文件的[tcp] 和[tcp default] 部分中设置的连接参数为:
允许未解析的主机名
版本(或更高版本) NDB 8.0.22 类型或单位Boolean 默认值false 范围true、false NDB 8.0.22 添加重启类型节点重启:需要集群的滚动重启。 (NDB 8.0.13) 默认情况下,如果受管节点在连接时无法解析主机名,则会发生致命错误。可以通过在全局配置文件(通常名为config.ini)的[tcp default] 部分中将AllowUnresolvedHostNames 设置为true 来覆盖此行为。在这种情况下,主机名解析失败将被视为警告,并且ndb_mgmd 会继续启动。被打断了。
校验和
版本(或更高版本) NDB 8.0.13 类型或单位Boolean 默认值false 范围true、false 重启类型节点重启:需要集群滚动重启。 (NDB 8.0.13) 默认情况下禁用此参数。启用后(设置为Y 或1),所有消息在放入发送缓冲区之前都会进行校验和。此功能可确保消息在发送缓冲区中等待或通过传输机制时不会被损坏。
团体
如果启用ndb_optimized_node_selection,则可以使用节点邻近度来选择要连接的节点。将此参数设置为较低的值可能会影响接近度,这被解释为“更接近”。有关详细信息,请参阅系统变量说明。
主机名1
版本(或更高版本) NDB 8.0.13 类型或单元名称或IP 地址默认[.] 范围. 重新启动类型节点重新启动:需要集群的滚动重新启动。 (NDB 8.0.13) 您可以使用HostName1 和HostName2 参数指定用于两个节点之间的TCP 连接的特定网络接口。这些参数的值可以是主机名或IP地址。
主机名2
版本(或更高版本) NDB 8.0.13 类型或单元名称或IP 地址默认[.] 范围. 重新启动类型节点重新启动:需要集群的滚动重新启动。 (NDB 8.0.13) 您可以使用HostName1 和HostName2 参数指定用于两个节点之间的TCP 连接的特定网络接口。这些参数的值可以是主机名或IP地址。
节点ID1
版本(或更高版本) NDB 8.0.13 类型或单元号默认值[无] 范围1-255 重新启动类型节点重新启动:需要集群的滚动重新启动。 (NDB 8.0.13) 要标识两个节点之间的连接,必须将节点ID 指定为配置文件的[tcp] 部分中的NodeId1 和NodeId2 值。这些值是每个节点的唯一ID 值,如定义MySQL 集群中的SQL 和其他API 节点中所述。
节点ID2
版本(或更高版本) NDB 8.0.13 单元类型或编号默认值[无] 范围1-255 重新启动类型节点重新启动:需要集群的滚动重新启动。 (NDB 8.0.13) 要标识两个节点之间的连接,必须将节点ID 指定为配置文件的[tcp] 部分中的NodeId1 和NodeId2 值。这些与每个节点的唯一ID 值相同,如第25.4.3.7 节“在MySQL 集群中定义SQL 和其他API 节点”中所述。
节点ID 服务器
版本(或更高版本) NDB 8.0.13 类型或单位值默认值[无] 范围1-63 重新启动类型节点重新启动:需要集群的滚动重新启动。 (NDB 8.0.13) 配置TCP 连接的服务器端。
过载限制
版本(或更高版本) NDB 8.0.13 类型或单位字节默认0 范围0 到4294967039 (0xFFFFFEFF) 重新启动类型节点重新启动:需要集群的滚动重新启动。 (NDB 8.0.13) 如果发送缓冲区的未发送字节数超过此数量,则认为连接过载。
此参数允许您确定在连接被视为过载之前必须存在的未发送数据量。有关更多信息,请参见第25.4.3.14节“配置MySQL集群发送缓冲区参数”。
优先选择IP版本
版本(或更高版本) NDB 8.0.26 类型或单位枚举默认4 范围4, 6 NDB 8.0.26 添加重新启动类型初始系统重新启动:干净集群关闭,从备份中擦除和恢复集群文件系统,然后重新启动集群。 (NDB 8.0.13) 确定IP 版本4 或版本6 DNS 解析设置。 MySQL Cluster使用的配置检索机制要求所有连接使用相同的设置,因此必须在config.ini全局配置文件中将该参数设置为[tcp default]。
预发送校验和
版本(或更高版本) NDB 8.0.13 类型或单位Boolean 默认false 范围true、false 重启类型节点重启:需要集群滚动重启。 (NDB 8.0.13) 如果启用此参数和校验和,则会执行传输前校验和检查以检查节点之间的所有TCP 信号是否有错误。如果未启用校验和,则不会产生任何影响。
代理人
版本(或更高版本) NDB 8.0.13 类型或单位字符串默认[.] 范围. 重启类型节点重启:需要集群的滚动重启。 (NDB 8.0.13) 为TCP 连接配置代理。
接收缓冲存储器
版本(或更高版本) NDB 8.0.13 类型或单位字节默认值2M 范围16K – 4294967039 (0xFFFFFEFF) 重启类型节点重启:需要集群滚动重启。 (NDB 8.0.13) 指定从TCP/IP 套接字接收数据时使用的缓冲区大小。
该参数的默认值为2MB。最小可能值为16KB,理论最大值为4GB。
发送缓冲存储器
版本(或更高版本) NDB 8.0.13 类型或单位无符号默认2M 范围256K – 4294967039 (0xFFFFFEFF) 重新启动类型节点重新启动:需要集群的滚动重新启动。 (NDB 8.0.13) TCP 传输在向操作系统发出发送调用之前使用缓冲区来存储所有消息。当该缓冲区的内容达到64KB 时将被发送。当执行一系列消息时也会发送。您还可以定义更大的发送缓冲区来处理临时过载情况。
如果显式设置此参数,则内存不会专门分配给每个发送器,但使用的值表示一个发送器可以使用的内存硬限制(即可用的TotalSendBufferMemory)作为总内存的一部分。有关在MySQL 集群中配置动态发送器发送缓冲区内存分配的更多信息,请参阅第25.4.3.14 节“配置MySQL 集群的发送缓冲区参数”。
发送缓冲区的默认大小为2MB,在大多数情况下建议使用该大小。最小大小为64KB,理论最大大小为4GB。
发送信号ID
版本(或更高版本) NDB 8.0.13 类型或单位Boolean 默认false(调试版本为true) 范围true、false 重新启动类型节点重新启动:需要集群的滚动重新启动。 (NDB 8.0.13) 为了能够跟踪分布式消息数据报,必须识别每条消息。将此参数设置为Y 会导致消息ID 通过网络发送。默认情况下,此功能在生产版本中禁用,并在-debug 版本中启用。
TcpBind_INADDR_ANY
将此参数设置为TRUE 或1 会绑定IP_ADDR_ANY 并允许来自任何地方的连接(对于自动生成的连接)。默认值为FALSE (0)。
TCP 旋转时间
版本(或更高版本) 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 MySQL集群重启类型
符号重新启动类型描述N 节点可以使用滚动重新启动来更新此参数(请参见第25.6.5 节,“执行MySQL 集群的滚动重新启动”) S 系统要更改此参数: 所有集群节点必须正常关闭并重新启动I 初始数据节点必须使用–initial 选项重新启动
原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-tcp-setting-direct.html
25.4.3.11 NDB 集群使用直接连接的 TCP/IP 连接
要设置数据节点之间直接连接的集群,必须在集群config.ini 文件的[tcp] 部分中显式指定所连接数据节点的跨IP 地址。
以下示例假设集群至少具有四台主机:一台用于管理服务器,一台用于SQL 节点,两台用于数据节点。整个集群位于LAN 的172.23.72.* 子网上。除了常规网络连接外,两个数据节点还使用标准交叉电缆直接连接,并使用1.1.0.* 地址范围内的IP 地址直接通信:
#管理服务器
[ndb_mgmd]
ID=1
主机名=172.23.72.20
#SQLNode
[mysqld]
ID=2
主机名=172.23.72.21
#数据节点
[ndbd]
ID=3
主机名=172.23.72.22
[ndbd]
ID=4
主机名=172.23.72.23
TCP/IP 连接数
[TCP]
节点ID1=3
节点ID2=4
主机名1=1.1.0.1
主机名2=1.1.0.2
仅当指定直接连接时才使用HostName1 和HostName2 参数。
在数据节点之间使用直接TCP 连接允许数据节点绕过交换机、集线器和路由器等以太网设备,从而提高集群的整体效率并减少集群延迟。
消息
要充分利用这种直接连接,如果您有三个或更多数据节点,则必须在同一节点组中的每个数据节点之间建立直接连接。
原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-shm-setting.html
25.4.3.12 NDB 集群共享内存连接
NDB 集群节点之间的通信通常使用TCP/IP 进行处理。共享内存(SHM) 发送器的特点是将信号写入内存而不是通过套接字发送信号。当API 节点(通常是SQL 节点)和数据节点在同一主机上一起运行时,共享内存传输器(SHM) 可以将TCP 连接所需的开销减少多达20%,从而提高性能。可以通过以下两种方式之一启用共享内存连接:
将数据节点配置参数UseShm设置为1,并将数据节点HostName和API节点HostName设置为相同的值。
使用包含NodeId1 和NodeId2 设置的集群配置文件的[shm] 部分。本节稍后将更详细地讨论此方法。
假设一个集群在同一台IP 地址为10.0.0.1 的主机上运行节点ID 为1 的数据节点和节点ID 为51 的SQL 节点。要启用这两个节点之间的SHM 连接,只需确保集群配置文件包含以下内容:入口:
[ndbd]
节点ID=1
主机名=10.0.0.1
使用Shm=1
[mysqld]
节点ID=51
主机名=10.0.0.1
重要提示
此处显示的两个条目是对集群内任何其他必需条目和参数设置的补充。本节稍后将显示更完整的示例。
在启动使用SHM连接的数据节点之前,还必须确保托管此类数据节点的每台计算机的操作系统为共享内存段分配足够的内存。有关此信息,请参阅您的操作平台文档。在多个主机分别运行一个数据节点和一个API 节点的设置中,您可以通过在配置文件的[ndbd default] 部分中设置UseShm 来在所有主机上启用共享内存。本节稍后将提供一个示例。
尽管不是严格要求,但可以通过在集群配置(config.ini) 文件的[shm default] 部分中设置以下一个或多个参数来调整集群中的所有SHM 连接:
ShmSize:共享内存大小
ShmSpinTime:睡觉前旋转的时间(以微秒为单位)
SendBufferMemory:从此节点发送的信号的缓冲区大小(以字节为单位)。
SendSignalId:表示通过发射器发送的每个信号都包含一个信号ID。
校验和:表示通过发射器发送的每个信号都包含校验和。
PreSendChecksum:在发送信号之前执行校验和检查。此功能还需要启用校验和。
此示例显示了使用托管指定节点类型主机名的三台计算机在列出的NDB 集群中的多个主机上定义的SHM 连接的简单设置。
10.0.0.0:管理服务器
10.0.0.1:1个数据节点和1个SQL节点
10.0.0.2:1个数据节点和1个SQL节点
在这种情况下,每个数据节点使用TCP传输与管理服务器和其他数据节点进行通信。每个SQL 节点使用共享内存传输与本地数据节点通信,并使用TCP 传输与远程数据节点通信。反映此设置的基本配置由config.ini 文件启用。其内容如下:
[ndbd默认]
DataDir=*/路径/到/datadir*
使用Shm=1
[shm默认]
内存大小=8M
Shm旋转时间=200
发送缓冲内存=4M
[TCP 默认]
发送缓冲内存=8M
[ndb_mgmd]
节点ID=49
主机名=10.0.0.0
DataDir=*/路径/到/datadir*
[ndbd]
节点ID=1
主机名=10.0.0.1
DataDir=*/路径/到/datadir*
[ndbd]
节点ID=2
主机名=10.0.0.2
DataDir=*/路径/到/datadir*
[mysqld]
节点ID=51
主机名=10.0.0.1
[mysqld]
节点ID=52
主机名=10.0.0.2
[API]
[API]
影响所有共享内存传输的参数在[shmdefault] 部分中设置。这些可以在一个或多个[shm] 部分中的每个连接中被覆盖。每个此类部分必须使用NodeId1 和NodeId2 来关联特定SHM 连接的节点ID。 HostName1 和HostName2 也可用于通过主机名来标识节点,但这些参数不是必需的。
对于未配置主机名的API 节点,TCP 传输用于与数据节点通信,无论从哪个主机调用它们。应用配置文件的[tcp default]部分中设置的参数和值。集群中的所有TCP 传输。
为了获得最佳性能,您可以定义SHM 发射器旋转时间(ShmSpinTime 参数)。这会影响NDB中的数据节点接收线程和轮询所有者(接收线程或用户线程)。
校验和
版本(或更高版本) NDB 8.0.13 类型或单位Boolean 默认true 范围true、false 重启类型节点重启:需要滚动重启。 (NDB 8.0.13) 此参数是布尔(Y/N) 参数,默认情况下禁用。启用后,将在将每条消息放入发送缓冲区之前计算校验和。
此功能可防止消息在发送缓冲区中等待时被损坏。它还可以用作检查数据在传输过程中是否损坏。
团体
版本(或更高版本) NDB 8.0.13 类型或单位无符号默认35 范围0-200 重启类型节点重启:需要滚动重启来确定组邻近度(NDB 8.0.13),从较小的值解释为更接近。大多数情况下默认值就足够了。
主机名1
版本(或更高版本) NDB 8.0.13 类型或单元名称或IP 地址默认[.] 范围. 重新启动类型节点重新启动:需要滚动重新启动(NDB 8.0.13) 都可以使用HostName1 和HostName2 参数指定。用于节点之间特定SHM 连接的网络接口。这些参数的值可以是主机名或IP地址。
主机名2
版本(或更高版本) NDB 8.0.13 类型或单元名称或IP 地址默认[.] 范围. 重新启动类型节点重新启动:需要滚动重新启动(NDB 8.0.13) 都可以使用HostName1 和HostName2 参数指定。用于节点之间特定SHM 连接的网络接口。这些参数的值可以是主机名或IP地址。
节点ID1
版本(或更高版本) NDB 8.0.13 类型或1 位默认值[无] 范围1 到255 重启类型节点重启:滚动重启所需(NDB 8.0.13) 标识两个节点之间的连接指定节点标识符,例如每个节点都需要NodeId1 和NodeId2。
节点ID2
版本(或更高版本) NDB 8.0.13 类型或1 位默认值[无] 范围1 到255 重启类型节点重启:滚动重启所需(NDB 8.0.13) 标识两个节点之间的连接指定节点标识符,例如每个节点都需要NodeId1 和NodeId2。
节点ID 服务器
版本(或更高版本) NDB 8.0.13 类型或1 位默认值[无] 范围1-63 重启类型节点重启:需要滚动重启。 (NDB 8.0.13) 标识共享内存连接的服务器端。默认情况下,这是数据节点的节点ID。
过载限制
版本(或更高版本) NDB 8.0.13 类型或单位字节默认值0 范围0 到4294967039 (0xFFFFFEFF) 重新启动类型节点重新启动:需要滚动重新启动。 (NDB 8.0.13) 如果发送缓冲区的未发送字节数超过此数量,则认为连接过载。有关更多信息,请参见第25.4.3.14节“配置MySQL集群发送缓冲区参数”和第25.6.16.65节“ndbinfo传输器表”。
预发送校验和
版本(或更高版本) NDB 8.0.13 类型或单位Boolean 默认值False 范围True、False 重启类型节点重启:需要滚动重启。 (NDB 8.0.13) 如果启用此参数和校验和,则执行传输前校验和以检查所有节点之间的所有SHM 信号是否有错误。如果未启用校验和,则不会产生任何影响。
发送缓冲存储器
版本(或更高版本) NDB 8.0.13 类型或单位整数默认值2M 范围256K – 4294967039 (0xFFFFFEFF) 重启类型节点重启:需要滚动重启。 (NDB 8.0.13) 使用共享内存连接从该节点发送的信号的共享内存缓冲区大小(以字节为单位)。
发送信号ID
版本(或更高版本) NDB 8.0.13 类型或单位Boolean 默认值False 范围True、False 重启类型节点重启:需要滚动重启。 (NDB 8.0.13) 要跟踪分发消息的路径,您必须为每条消息提供唯一的标识符。当此参数设置为Y 时,这些消息ID 也会通过网络发送。默认情况下,此功能在生产版本中禁用,并在-debug 版本中启用。
快捷键
版本(或更高版本) NDB 8.0.13 类型或单位无符号默认值0 范围0 到4294967039 (0xFFFFFEFF) 重启类型节点重启:需要滚动重启。 (NDB 8.0.13) 配置共享内存段时,使用整数节点ID 来唯一标识用于通信的共享内存段。没有默认值。当UseShm启用时,共享内存密钥由NDB自动计算。
什穆尺寸
版本(或更高版本) NDB 8.0.13 类型或单位字节默认4M 范围64K – 4294967039 (0xFFFFFEFF) 重启类型节点重启:需要滚动重启。 (NDB 8.0.13) 每个SHM 连接都有一个共享内存段,发送者在其中放置消息,阅读者在其中读取消息。该段的大小由ShmSize 定义。默认值为4MB。
旋转时间
版本(或更高版本) NDB 8.0.13 类型或单位整数默认0 范围0-2000 重启类型节点重启:需要滚动重启。 (NDB 8.0.13) 接收时的休眠时间(以微秒为单位)。
签名
版本(或更高版本) NDB 8.0.13 类型或单位无符号默认值[.] 范围0 – 4294967039 (0xFFFFFEFF) 已弃用是(对于NDB 7.6) 重新启动类型节点重新启动:需要滚动重新启动。 (NDB 8.0.13) 该参数以前用于覆盖操作系统信号号,但在NDB 8.0 中不再使用,并且其设置被忽略。
重启类型。 下表提供了本节参数描述中使用的重启类型信息。
表25.22 MySQL集群重启类型
符号重启类型描述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:
$> 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。
$> 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*] […]
例如:
$> 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。
然后,您可以按照通常的方式启动集群的每个数据节点。如果您希望在稍后的某个时间启动并使用第二个管理服务器而无需重新启动数据节点,则必须使用引用两个管理服务器的连接字符串启动每个数据节点,如下所示:
$> 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
命令行格式–reloadNDB 集群配置数据是存储在内部而不是每次启动管理服务器时从集群全局配置文件中读取的(请参阅第 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 文件。
#以上关于MySQL8 中文参考(八十九)的相关内容来源网络仅供参考,相关信息请以官方公告为准!
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92162.html