[ndbd]
和 [ndbd default]
部分用于配置集群数据节点的行为。
无论您是使用 ndbd 还是 ndbmtd 二进制文件作为数据节点进程,[ndbd]
和 [ndbd default]
始终用作部分名称。
有许多参数可以控制缓冲区大小、池大小、超时等等。唯一必需的参数是 ExecuteOnComputer
;这必须在本地 [ndbd]
部分中定义。
参数 NoOfReplicas
应该在 [ndbd default]
部分中定义,因为它对所有集群数据节点都是通用的。设置 NoOfReplicas
并非严格必要,但明确设置它是一种良好的做法。
大多数数据节点参数都在 [ndbd default]
部分中设置。只有那些明确说明能够设置本地值的参数才允许在 [ndbd]
部分中更改。如果存在,HostName
和 NodeId
必须 在本地 [ndbd]
部分中定义,而不是在 config.ini
的任何其他部分中定义。换句话说,这些参数的设置特定于一个数据节点。
对于那些影响内存使用量或缓冲区大小的参数,可以使用 K
、M
或 G
作为后缀来表示 1024、1024×1024 或 1024×1024×1024 的单位。(例如,100K
表示 100 × 1024 = 102400。)
参数名称和值不区分大小写,除非在 MySQL 服务器 my.cnf
或 my.ini
文件中使用,在这种情况下它们区分大小写。
有关 NDB 集群磁盘数据表特有的配置参数的信息可以在本节后面找到(请参阅磁盘数据配置参数)。
所有这些参数也适用于 ndbmtd(ndbd 的多线程版本)。还有三个数据节点配置参数——MaxNoOfExecutionThreads
、ThreadConfig
和 NoOfFragmentLogParts
——仅适用于 ndbmtd;这些参数在与 ndbd 一起使用时无效。有关更多信息,请参阅多线程配置参数 (ndbmtd)。另请参阅第 25.5.3 节,“ndbmtd — NDB 集群数据节点守护进程(多线程)”。
识别数据节点。 NodeId
或 Id
值(即数据节点标识符)可以在节点启动时在命令行上分配,也可以在配置文件中分配。
-
版本(或更高版本) NDB 类型或单位 无符号 默认值 [...] 范围 1 - 144 重启类型 初始系统重启:需要完全关闭集群,从备份中擦除并恢复集群文件系统,然后重新启动集群。
唯一的节点 ID 用作所有集群内部消息的节点地址。对于数据节点,这是一个介于 1 到 144 之间的整数。集群中的每个节点都必须具有唯一的标识符。
NodeId
是识别数据节点时唯一支持的参数名称。 -
这指的是在
[computer]
部分中定义的一台计算机的Id
设置。重要此参数已弃用,并将在未来的版本中删除。请改用
HostName
参数。 此节点的节点 ID 只能提供给明确请求它的连接。请求 “任何” 节点 ID 的管理服务器不能使用此 ID。当在同一主机上运行多个管理服务器,并且
HostName
不足以区分进程时,可以使用此参数。旨在用于测试。-
版本(或更高版本) NDB 类型或单位 名称或 IP 地址 默认值 localhost 范围 ... 重启类型 节点重启:需要对集群进行滚动重启。
指定此参数可定义数据节点所在计算机的主机名。使用
HostName
指定localhost
以外的主机名。 -
集群中的每个节点都使用一个端口来连接到其他节点。默认情况下,此端口是动态分配的,以确保同一主机上的两个节点不会收到相同的端口号,因此通常不需要为此参数指定值。
但是,如果您需要能够在防火墙中打开特定端口以允许数据节点和 API 节点(包括 SQL 节点)之间进行通信,则可以在
[ndbd]
部分或(如果您需要为多个数据节点执行此操作)config.ini
文件的[ndbd default]
部分中将此参数设置为所需端口的编号,然后打开该编号的端口以接收来自 SQL 节点、API 节点或两者的传入连接。注意从数据节点到管理节点的连接是使用 ndb_mgmd 管理端口(管理服务器的
PortNumber
)完成的,因此应始终允许从任何数据节点到该端口的传出连接。 将此参数设置为
TRUE
或1
将绑定IP_ADDR_ANY
,以便可以从任何地方进行连接(对于自动生成的连接)。默认值为FALSE
(0
)。-
版本(或更高版本) NDB 类型或单位 无符号 默认值 [...] 范围 0 - 65536 重启类型 初始系统重启:需要完全关闭集群,从备份中擦除并恢复集群文件系统,然后重新启动集群。
此参数可用于将数据节点分配给特定的节点组。它仅在集群首次启动时读取,不能用于在线将数据节点重新分配到不同的节点组。通常不希望在
config.ini
文件的[ndbd default]
部分中使用此参数,并且必须注意不要以将无效数量的节点分配给任何节点组的方式将节点分配给节点组。NodeGroup
参数主要用于在运行的 NDB 集群中添加新的节点组,而无需执行滚动重启。为此,您应将其设置为 65536(最大值)。您不需要为所有集群数据节点设置NodeGroup
值,只需为那些将在以后启动并作为新节点组添加到集群的节点设置即可。有关更多信息,请参阅第 25.6.7.3 节,“在线添加 NDB 集群数据节点:详细示例”。 -
将数据节点分配给云中的特定可用性域(也称为可用区)。通过通知
NDB
哪些节点位于哪些可用性域中,可以在云环境中通过以下方式提高性能如果在同一节点上找不到请求的数据,则可以将读取操作定向到同一可用性域中的另一个节点。
保证不同可用性域中的节点之间的通信使用
NDB
传输器的 WAN 支持,而无需任何进一步的手动干预。传输器的组号可以基于使用的可用性域,这样 SQL 和其他 API 节点也可以尽可能地与同一可用性域中的本地数据节点通信。
仲裁器可以从不存在数据节点的可用性域中选择,或者,如果找不到这样的可用性域,则从第三个可用性域中选择。
LocationDomainId
采用 0 到 16 之间的整数值,其中 0 为默认值;使用 0 与不设置参数相同。 -
版本(或更高版本) NDB 类型或单位 整数 默认值 2 范围 1 - 4 重启类型 初始系统重启:需要完全关闭集群,从备份中擦除并恢复集群文件系统,然后重新启动集群。
此全局参数只能在
[ndbd default]
部分中设置,并定义存储在集群中的每个表的片段副本数。此参数还指定节点组的大小。节点组是一组存储相同信息的所有节点。节点组是隐式形成的。第一个节点组由具有最低节点 ID 的一组数据节点组成,下一个节点组由具有次低节点 ID 的一组节点组成,依此类推。例如,假设我们有 4 个数据节点,并且
NoOfReplicas
设置为 2。这四个数据节点的节点 ID 分别为 2、3、4 和 5。那么第一个节点组由节点 2 和 3 组成,第二个节点组由节点 4 和 5 组成。配置集群时,请务必确保同一节点组中的节点不在同一台计算机上,因为这样会导致单点硬件故障导致整个集群故障。如果没有提供节点 ID,则数据节点的顺序是决定节点组的因素。无论是否进行显式分配,都可以在管理客户端
SHOW
命令的输出中查看它们。NoOfReplicas
的默认值为 2。这是大多数生产环境的建议值。也支持将此参数的值设置为 3 或 4。警告将
NoOfReplicas
设置为 1 意味着所有集群数据只有一份副本;在这种情况下,丢失单个数据节点会导致集群故障,因为没有存储在该节点上的数据的其他副本。集群中数据节点的数量必须可以被此参数的值整除。例如,如果有两个数据节点,则
NoOfReplicas
必须等于 1 或 2,因为 2/3 和 2/4 都产生小数值;如果有四个数据节点,则NoOfReplicas
必须等于 1、2 或 4。 -
此参数指定放置跟踪文件、日志文件、pid 文件和错误日志的目录。
默认值为数据节点进程工作目录。
-
此参数指定放置为元数据、REDO 日志、UNDO 日志(对于磁盘数据表)和数据文件创建的所有文件的目录。默认值为
DataDir
指定的目录。注意必须先创建此目录,然后才能启动 ndbd 进程。
NDB 集群的建议目录层次结构包括
/var/lib/mysql-cluster
,将在其下为节点的文件系统创建一个目录。此子目录的名称包含节点 ID。例如,如果节点 ID 为 2,则此子目录名为ndb_2_fs
。 -
此参数指定放置备份的目录。
重要字符串 '
/BACKUP
' 始终附加到此值。例如,如果将BackupDataDir
的值设置为/var/lib/cluster-data
,则所有备份都存储在/var/lib/cluster-data/BACKUP
下。这也意味着有效默认备份位置是由FileSystemPath
参数指定的位置下的名为BACKUP
的目录。
数据内存、索引内存和字符串内存
DataMemory
和 IndexMemory
是 [ndbd]
参数,用于指定用于存储实际记录及其索引的内存段的大小。在设置这些值时,了解 DataMemory
的使用方式非常重要,因为它通常需要更新以反映集群的实际使用情况。
IndexMemory
已弃用,并将在未来版本的 NDB 集群中删除。有关更多信息,请参阅以下说明。
-
版本(或更高版本) NDB 类型或单位 字节 默认值 98M 范围 1M - 16T 重启类型 节点重启:需要对集群进行滚动重启。
此参数定义可用于存储数据库记录的空间量(以字节为单位)。此值指定的全部数量都在内存中分配,因此计算机必须具有足够的物理内存来容纳它,这一点非常重要。
由
DataMemory
分配的内存用于存储实际记录和索引。每条记录有 16 个字节的开销;由于每条记录都存储在一个 32KB 的页面中,并且页面开销为 128 个字节(请参见下文),因此每条记录都会产生额外的开销。由于每条记录只存储在一个页面中,因此每个页面也会浪费少量空间。对于可变大小的表属性,数据存储在单独的数据页面上,这些页面是从
DataMemory
分配的。可变长度记录使用固定大小的部分,并带有 4 个字节的额外开销来引用可变大小的部分。可变大小的部分有 2 个字节的开销,每个属性还有 2 个字节。最大记录大小为 30000 字节。
分配给
DataMemory
的资源用于存储所有数据和索引。(配置为IndexMemory
的任何内存都会自动添加到DataMemory
使用的内存中,以形成一个公共资源池。)DataMemory
分配的内存空间由 32KB 的页面组成,这些页面分配给表片段。每个表通常被划分为与集群中数据节点数量相同的片段。因此,对于每个节点,片段数量与NoOfReplicas
中设置的数量相同。分配页面后,目前无法将其返回到空闲页面池,除非删除该表。(这也意味着一旦将
DataMemory
页面分配给某个表,其他表就无法使用该页面。)执行数据节点恢复也会压缩分区,因为所有记录都是从其他活动节点插入到空分区中的。DataMemory
内存空间还包含 UNDO 信息:对于每次更新,都会在DataMemory
中分配未更改记录的副本。在有序表索引中也有对每个副本的引用。只有在更新唯一索引列时才会更新唯一哈希索引,在这种情况下,会在索引表中插入一个新条目,并在提交时删除旧条目。因此,还需要分配足够的内存来处理使用集群的应用程序执行的最大事务。在任何情况下,执行几个大型事务与使用许多较小的事务相比没有任何优势,原因如下:大型事务并不比小型事务快
大型事务会增加在事务失败时丢失并必须重复的操作的数量
大型事务使用更多内存
DataMemory
的默认值为 98MB。最小值为 1MB。没有最大大小,但实际上必须调整最大大小,以便在达到限制时进程不会开始交换。此限制由机器上可用的物理 RAM 量以及操作系统可以提交给任何一个进程的内存量决定。32 位操作系统的每个进程通常限制为 2-4GB;64 位操作系统可以使用更多内存。对于大型数据库,出于这个原因,最好使用 64 位操作系统。 -
版本(或更高版本) NDB 类型或单位 字节 默认值 0 范围 1M - 1T 已弃用 是(在 NDB 7.6 中) 重启类型 节点重启:需要对集群进行滚动重启。
IndexMemory
参数已弃用(并将在未来版本中删除);分配给IndexMemory
的任何内存都将分配给与DataMemory
相同的池,DataMemory
负责存储内存中数据和索引所需的所有资源。在 NDB 9.0 中,在集群配置文件中使用IndexMemory
会触发来自管理服务器的警告。可以使用以下公式估算哈希索引的大小
size = ( (fragments * 32K) + (rows * 18) ) * fragment_replicas
fragments
是片段数,fragment_replicas
是片段副本数(通常为 2),rows
是行数。如果一个表有一百万行、八个片段和两个片段副本,则预期的索引内存使用量计算如下所示((8 * 32K) + (1000000 * 18)) * 2 = ((8 * 32768) + (1000000 * 18)) * 2 = (262144 + 18000000) * 2 = 18262144 * 2 = 36524288 bytes = ~35MB
有序索引的索引统计信息(如果已启用)存储在
mysql.ndb_index_stat_sample
表中。由于此表具有哈希索引,因此会增加索引内存的使用量。可以使用以下公式计算给定有序索引的行数上限sample_size= key_size + ((key_attributes + 1) * 4) sample_rows = IndexStatSaveSize * ((0.01 * IndexStatSaveScale * log2(rows * sample_size)) + 1) / sample_size
在前面的公式中,
key_size
是有序索引键的大小(以字节为单位),key_attributes
是有序索引键中的属性数,rows
是基表中的行数。假设表
t1
有一百万行,并在两个四字节整数上有一个名为ix1
的有序索引。此外,假设IndexStatSaveSize
和IndexStatSaveScale
设置为其默认值(分别为 32K 和 100)。使用前面的两个公式,我们可以计算如下:sample_size = 8 + ((1 + 2) * 4) = 20 bytes sample_rows = 32K * ((0.01 * 100 * log2(1000000*20)) + 1) / 20 = 32768 * ( (1 * ~16.811) +1) / 20 = 32768 * ~17.811 / 20 = ~29182 rows
因此,预期的索引内存使用量为 2 * 18 * 29182 = ~1050550 字节。
此参数的最小值和默认值为 0(零)。
-
此参数确定为表名等字符串分配多少内存,并在
config.ini
文件的[ndbd]
或[ndbd default]
部分中指定。0 到 100(含)之间的值解释为最大默认值的百分比,最大默认值是根据许多因素计算得出的,包括表数、最大表名大小、.FRM
文件的最大大小、MaxNoOfTriggers
、最大列名大小和最大默认列值。大于
100
的值将解释为字节数。默认值为 25,即默认最大值的 25%。
在大多数情况下,默认值应该足够了,但是当您有大量
NDB
表(1000 个或更多)时,可能会出现错误 773 字符串内存不足,请修改 StringMemory 配置参数:永久性错误:架构错误,在这种情况下,您应该增加此值。25
(25%)并不过分,并且应该可以防止此错误在除最极端情况以外的所有情况下再次发生。
以下示例说明了表如何使用内存。请考虑以下表定义:
CREATE TABLE example (
a INT NOT NULL,
b INT NOT NULL,
c INT NOT NULL,
PRIMARY KEY(a),
UNIQUE(b)
) ENGINE=NDBCLUSTER;
对于每条记录,有 12 个字节的数据加上 12 个字节的开销。没有可为空的列可以节省 4 个字节的开销。此外,我们在 a
和 b
列上有两个有序索引,每条记录大约消耗 10 个字节。基表上有一个主键哈希索引,每条记录大约使用 29 个字节。唯一约束由一个单独的表实现,该表以 b
作为主键,以 a
作为列。此表在 示例
表中每条记录额外消耗 29 个字节的索引内存,以及 8 个字节的记录数据和 12 个字节的开销。
因此,对于一百万条记录,我们需要 58MB 的索引内存来处理主键和唯一约束的哈希索引。我们还需要 64MB 来存储基表和唯一索引表的记录,以及两个有序索引表。
您可以看到哈希索引占用了相当大的内存空间;但是,它们提供了对数据的快速访问。它们还用于 NDB 集群中以处理唯一性约束。
目前,唯一的划分算法是散列,并且有序索引对于每个节点都是本地的。因此,在一般情况下,有序索引不能用于处理唯一性约束。
IndexMemory
和 DataMemory
的一个要点是,总数据库大小是每个节点组的所有数据内存和所有索引内存的总和。每个节点组都用于存储复制的信息,因此如果有四个节点具有两个片段副本,则有两个节点组。因此,每个数据节点可用的总数据内存为 2 × DataMemory
。
强烈建议为所有节点将 DataMemory
和 IndexMemory
设置为相同的值。数据分布在集群中的所有节点上是均匀的,因此任何节点可用的最大空间不能大于集群中最小的节点的空间。
可以更改 DataMemory
,但减少它可能会带来风险;这样做很容易导致节点甚至整个 NDB 集群由于内存空间不足而无法重启。增加这些值应该是可以接受的,但建议以与软件升级相同的方式执行此类升级,首先更新配置文件,然后重启管理服务器,然后依次重启每个数据节点。
MinFreePct. 数据节点资源(包括 DataMemory
)的一部分(默认情况下为 5%)保留下来,以确保数据节点在执行重启时不会耗尽其内存。这可以使用 MinFreePct
数据节点配置参数(默认值为 5)进行调整。
版本(或更高版本) | NDB |
---|---|
类型或单位 | 无符号 |
默认值 | 5 |
范围 | 0 - 100 |
重启类型 | 节点重启:需要对集群进行滚动重启。 |
更新不会增加使用的索引内存量。插入立即生效;但是,在提交事务之前,行实际上不会被删除。
事务参数. 我们接下来讨论的几个 [ndbd]
参数非常重要,因为它们会影响并行事务的数量以及系统可以处理的事务的大小。MaxNoOfConcurrentTransactions
设置节点中可能的并行事务数。MaxNoOfConcurrentOperations
设置可以同时处于更新阶段或锁定的记录数。
这两个参数(尤其是 MaxNoOfConcurrentOperations
)很可能是用户设置特定值而不是使用默认值的目標。默认值是为使用小事务的系统设置的,以确保它们不会使用过多的内存。
MaxDMLOperationsPerTransaction
设置在给定事务中可以执行的最大 DML 操作数。
-
版本(或更高版本) NDB 类型或单位 整数 默认值 4096 范围 32 - 4294967039 (0xFFFFFEFF) 已弃用 是(在 NDB 8.0 中) 重启类型 节点重启:需要对集群进行滚动重启。
每个集群数据节点都需要为集群中的每个活动事务提供一个事务记录。协调事务的任务分布在所有数据节点之间。集群中的事务记录总数是任何给定节点中的事务数乘以集群中的节点数。
事务记录分配给各个 MySQL 服务器。与 MySQL 服务器的每个连接至少需要一个事务记录,以及由该连接访问的每个表需要一个额外的事务对象。这意味着集群中事务总数的合理最小值可以表示为
TotalNoOfConcurrentTransactions = (maximum number of tables accessed in any single transaction + 1) * number of SQL nodes
假设有 10 个 SQL 节点正在使用集群。涉及 10 个表的单个联接需要 11 个事务记录;如果一个事务中有 10 个这样的联接,则每个 MySQL 服务器需要 10 * 11 = 110 个事务记录,总共需要 110 * 10 = 1100 个事务记录。可以预期每个数据节点将处理 TotalNoOfConcurrentTransactions / 数据节点数。对于具有 4 个数据节点的 NDB 集群,这意味着在每个数据节点上将
MaxNoOfConcurrentTransactions
设置为 1100 / 4 = 275。此外,您应该通过确保单个节点组可以容纳所有并发事务来提供故障恢复;换句话说,每个数据节点的 MaxNoOfConcurrentTransactions 都足以覆盖等于 TotalNoOfConcurrentTransactions / 节点组数的事务数。如果此集群只有一个节点组,则应将MaxNoOfConcurrentTransactions
设置为 1100(与整个集群的并发事务总数相同)。此外,每个事务至少涉及一项操作;因此,为
MaxNoOfConcurrentTransactions
设置的值应始终不超过MaxNoOfConcurrentOperations
的值。必须为所有集群数据节点将此参数设置为相同的值。这是因为,当数据节点发生故障时,存活时间最长的节点会重新创建在故障节点中正在进行的所有事务的事务状态。
可以使用滚动重启来更改此值,但是集群上的流量必须在执行此操作时不超过旧级别和新级别中较低者的数量。
默认值为 4096。
-
版本(或更高版本) NDB 类型或单位 整数 默认值 32K 范围 32 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
根据事务的大小和数量调整此参数的值是一个好主意。当执行仅涉及少量操作和记录的事务时,此参数的默认值通常就足够了。执行涉及许多记录的大型事务通常需要您增加其值。
在事务协调器和执行实际更新的节点中,都会为更新集群数据的每个事务保留记录。这些记录包含查找回滚的 UNDO 记录、锁定队列和其他目的所需的状态信息。
此参数应至少设置为要同时更新的事务中的记录数除以集群数据节点数。例如,在一个具有四个数据节点且预计将使用事务处理一百万个并发更新的集群中,您应该将此值设置为 1000000 / 4 = 250000。为了帮助提供针对故障的弹性,建议您将此参数设置为足够高的值,以允许单个数据节点处理其节点组的负载。换句话说,您应该将该值设置为等于
并发操作总数 / 节点组数
。(在只有一个节点组的情况下,这与整个集群的并发操作总数相同。)因为每个事务始终至少涉及一项操作,所以
MaxNoOfConcurrentOperations
的值应始终大于或等于MaxNoOfConcurrentTransactions
的值。设置锁的读取查询也会导致创建操作记录。在各个节点内分配了一些额外的空间,以适应分布在节点上不完美的情况。
当查询使用唯一哈希索引时,事务中每条记录实际使用两个操作记录。第一条记录表示索引表中的读取,第二条记录处理基表上的操作。
默认值为 32768。
此参数实际上处理可以单独配置的两个值。第一个指定要放置在事务协调器中的操作记录的数量。第二部分指定要本地化到数据库的操作记录的数量。
在八节点集群上执行的非常大的事务在事务协调器中需要的操作记录数与其涉及的读取、更新和删除操作一样多。但是,操作记录分布在所有八个节点上。因此,如果需要为一个非常大的事务配置系统,最好单独配置这两个部分。
MaxNoOfConcurrentOperations
始终用于计算节点事务协调器部分中的操作记录数。了解操作记录的内存需求也很重要。它们每条记录消耗大约 1KB。
-
版本(或更高版本) NDB 类型或单位 整数 默认值 未定义 范围 32 - 4294967039 (0xFFFFFEFF) 已弃用 是(在 NDB 8.0 中) 重启类型 节点重启:需要对集群进行滚动重启。
默认情况下,此参数计算为 1.1 ×
MaxNoOfConcurrentOperations
。这适用于具有许多并发事务的系统,而这些事务都不是非常大。如果需要一次处理一个非常大的事务并且有许多节点,最好通过显式指定此参数来覆盖默认值。此参数已弃用,并将在未来的 NDB 集群版本中删除。此外,此参数与
TransactionMemory
参数不兼容;如果您尝试在集群配置文件(config.ini
)中为这两个参数设置值,则管理服务器将拒绝启动。 MaxDMLOperationsPerTransaction
版本(或更高版本) NDB 类型或单位 操作 (DML) 默认值 4294967295 范围 32 - 4294967295 重启类型 节点重启:需要对集群进行滚动重启。
此参数限制事务的大小。如果事务需要超过此数量的 DML 操作,则该事务将中止。
此参数的值不能超过为
MaxNoOfConcurrentOperations
设置的值。
事务临时存储. 下一组 [ndbd]
参数用于在执行作为集群事务一部分的语句时确定临时存储。当语句完成并且集群正在等待提交或回滚时,将释放所有记录。
这些参数的默认值适用于大多数情况。但是,需要支持涉及大量行或操作的事务的用户可能需要增加这些值,以便在系统中实现更好的并行性,而应用程序需要相对较小的事务的用户可以减少这些值以节省内存。
MaxNoOfConcurrentIndexOperations
版本(或更高版本) NDB 类型或单位 整数 默认值 8K 范围 0 - 4294967039 (0xFFFFFEFF) 已弃用 是(在 NDB 8.0 中) 重启类型 节点重启:需要对集群进行滚动重启。
对于使用唯一哈希索引的查询,在查询的执行阶段会使用另一组临时的操作记录。此参数设置该记录池的大小。因此,此记录仅在执行查询的一部分时分配。一旦执行完此部分,就会释放该记录。处理中止和提交所需的状态由正常的操作记录处理,其中池大小由参数
MaxNoOfConcurrentOperations
设置。此参数的默认值为 8192。只有在使用唯一哈希索引的极高并行度的情况下,才需要增加此值。如果 DBA 确定集群不需要高度并行性,则可以使用较小的值,并且可以节省内存。
此参数已弃用,并将在未来的 NDB 集群版本中删除。此外,此参数与
TransactionMemory
参数不兼容;如果您尝试在集群配置文件(config.ini
)中为这两个参数设置值,则管理服务器将拒绝启动。-
版本(或更高版本) NDB 类型或单位 整数 默认值 4000 范围 0 - 4294967039 (0xFFFFFEFF) 已弃用 是(在 NDB 8.0 中) 重启类型 节点重启:需要对集群进行滚动重启。
MaxNoOfFiredTriggers
的默认值为 4000,这对于大多数情况来说已经足够了。在某些情况下,如果 DBA 确定集群中对并行性的需求不高,甚至可以减少它。当执行影响唯一哈希索引的操作时,会创建一个记录。在具有唯一哈希索引的表中插入或删除记录,或更新作为唯一哈希索引一部分的列,会在索引表中触发插入或删除。生成的记录用于表示此索引表操作,同时等待触发它的原始操作完成。此操作是短暂的,但在包含一组唯一哈希索引的基本表上进行许多并行写入操作的情况下,仍然需要在其池中保留大量记录。
此参数已弃用,并将在未来的 NDB 集群版本中删除。此外,此参数与
TransactionMemory
参数不兼容;如果您尝试在集群配置文件(config.ini
)中为这两个参数设置值,则管理服务器将拒绝启动。 -
版本(或更高版本) NDB 类型或单位 字节 默认值 1M 范围 1K - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
受此参数影响的内存用于跟踪更新索引表和读取唯一索引时触发的操作。此内存用于存储这些操作的键和列信息。很少需要更改此参数的默认值。
TransactionBufferMemory
的默认值为 1MB。正常的读写操作使用类似的缓冲区,其使用寿命更短。编译时参数
ZATTRBUF_FILESIZE
(位于ndb/src/kernel/blocks/Dbtc/Dbtc.hpp
中)设置为 4000 × 128 字节(500KB)。用于密钥信息的类似缓冲区,ZDATABUF_FILESIZE
(也在Dbtc.hpp
中)包含 4000 × 16 = 62.5KB 的缓冲区空间。Dbtc
是处理事务协调的模块。
事务资源分配参数。 以下列表中的参数用于在事务协调器(DBTC
)中分配事务资源。将其中任何一个设置为默认值 (0),将为相应资源分配估计数据节点总使用量的 25% 的事务内存。这些参数的实际最大可能值通常受限于数据节点可用的内存量;设置它们不会影响分配给数据节点的内存总量。此外,您应该记住,它们控制着为数据节点保留的内部记录数,与 MaxDMLOperationsPerTransaction
、MaxNoOfConcurrentIndexOperations
、MaxNoOfConcurrentOperations
、MaxNoOfConcurrentScans
、MaxNoOfConcurrentTransactions
、MaxNoOfFiredTriggers
、MaxNoOfLocalScans
或 TransactionBufferMemory
的任何设置无关(请参阅 事务参数 和 事务临时存储)。
ReservedConcurrentIndexOperations
版本(或更高版本) NDB 类型或单位 数字 默认值 0 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
在一个数据节点上具有专用资源的并发索引操作的数量。
-
版本(或更高版本) NDB 类型或单位 数字 默认值 0 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
在一个数据节点上的事务协调器中具有专用资源的并发操作的数量。
-
版本(或更高版本) NDB 类型或单位 数字 默认值 0 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
在一个数据节点上具有专用资源的并发扫描的数量。
ReservedConcurrentTransactions
版本(或更高版本) NDB 类型或单位 数字 默认值 0 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
在一个数据节点上具有专用资源的并发事务的数量。
-
版本(或更高版本) NDB 类型或单位 数字 默认值 0 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
在一个 ndbd(DB) 节点上具有专用资源的触发器的数量。
-
版本(或更高版本) NDB 类型或单位 数字 默认值 0 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
在一个数据节点上具有专用资源的并发片段扫描的数量。
ReservedTransactionBufferMemory
版本(或更高版本) NDB 类型或单位 数字 默认值 0 范围 0 - 4294967039 (0xFFFFFEFF) 已弃用 是(在 NDB 8.0 中) 重启类型 节点重启:需要对集群进行滚动重启。
分配给每个数据节点的密钥和属性数据的动态缓冲区空间(以字节为单位)。
-
版本(或更高版本) NDB 类型或单位 字节 默认值 0 范围 0 - 16384G 重启类型 节点重启:需要对集群进行滚动重启。
重要许多配置参数与
TransactionMemory
不兼容;无法将任何这些参数与TransactionMemory
并发设置,如果您尝试这样做,管理服务器将无法启动(请参阅 与 TransactionMemory 不兼容的参数)。此参数确定为每个数据节点上的事务分配的内存(以字节为单位)。事务内存的设置按如下方式处理
如果设置了
TransactionMemory
,则此值用于确定事务内存。否则,事务内存的计算方式与 NDB 8.0 之前相同。
与 TransactionMemory 不兼容的参数。 以下参数不能与
TransactionMemory
并发使用,因此已弃用在集群配置文件(
config.ini
)中还设置了TransactionMemory
时显式设置上面列出的任何参数,都会阻止管理节点启动。有关 NDB Cluster 数据节点中资源分配的更多信息,请参阅 第 25.4.3.13 节,“数据节点内存管理”。
扫描和缓冲。 Dblqh
模块(位于 ndb/src/kernel/blocks/Dblqh/Dblqh.hpp
中)中还有其他 [ndbd]
参数会影响读取和更新。其中包括 ZATTRINBUF_FILESIZE
,默认设置为 10000 × 128 字节(1250KB),以及 ZDATABUF_FILE_SIZE
,默认设置为 10000*16 字节(大约 156KB)的缓冲区空间。迄今为止,无论是来自用户的报告还是我们自己进行的广泛测试结果,都没有表明应该增加这两个编译时限制中的任何一个。
-
版本(或更高版本) NDB 类型或单位 整数 默认值 256 范围 1 - 992 已弃用 是(在 NDB 8.0 中) 重启类型 节点重启:需要对集群进行滚动重启。
此参数用于计算用于处理并发扫描操作的锁记录的数量。
已弃用。
BatchSizePerLocalScan
与 SQL 节点中定义的BatchSize
有很强的联系。 -
版本(或更高版本) NDB 类型或单位 字节 默认值 64M 范围 512K - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
这是用于在单个节点内以及节点之间传递消息的内部缓冲区。默认值为 64MB。
此参数很少需要更改默认值。
-
版本(或更高版本) NDB 类型或单位 整数 默认值 64 范围 16 - 512 重启类型 节点重启:需要对集群进行滚动重启。
用于构建外键的最大扫描批处理大小。增加为此参数设置的值可能会加快外键构建的速度,但会对正在进行的流量产生更大的影响。
-
版本(或更高版本) NDB 类型或单位 整数 默认值 256 范围 2 - 500 重启类型 节点重启:需要对集群进行滚动重启。
此参数用于控制可以在集群中执行的并行扫描的数量。每个事务协调器都可以处理为此参数定义的并行扫描数量。每个扫描查询都是通过并行扫描所有分区来执行的。每个分区扫描在分区所在的节点中使用一个扫描记录,记录的数量是此参数的值乘以节点的数量。集群应该能够同时承受来自集群中所有节点的
MaxNoOfConcurrentScans
个扫描。扫描实际上在两种情况下执行。第一种情况是在没有哈希索引或有序索引来处理查询时发生的,在这种情况下,查询是通过执行全表扫描来执行的。第二种情况是在没有哈希索引来支持查询但有有序索引时遇到的。使用有序索引意味着执行并行范围扫描。顺序仅保留在本地分区上,因此有必要对所有分区执行索引扫描。
MaxNoOfConcurrentScans
的默认值为 256。最大值为 500。 -
版本(或更高版本) NDB 类型或单位 整数 默认值 4 * MaxNoOfConcurrentScans * [数据节点数量] + 2 范围 32 - 4294967039 (0xFFFFFEFF) 已弃用 是(在 NDB 8.0 中) 重启类型 节点重启:需要对集群进行滚动重启。
如果许多扫描未完全并行化,则指定本地扫描记录的数量。如果未提供本地扫描记录的数量,则按如下所示计算
4 * MaxNoOfConcurrentScans * [# data nodes] + 2
此参数已弃用,并将在未来的 NDB 集群版本中删除。此外,此参数与
TransactionMemory
参数不兼容;如果您尝试在集群配置文件(config.ini
)中为这两个参数设置值,则管理服务器将拒绝启动。 -
版本(或更高版本) NDB 类型或单位 整数 默认值 0 范围 0 - 64 重启类型 节点重启:需要对集群进行滚动重启。
此参数设置在节点重新启动或系统重新启动的复制阶段使用的并行度,当当前刚启动的节点通过从已更新的节点复制任何已更改的记录来与已具有当前数据的节点同步时。因为在这种情况下完全并行会导致过载情况,所以
MaxParallelCopyInstances
提供了一种减少并行度的方法。此参数的默认值为 0。此值表示有效并行度等于刚启动的节点以及正在更新它的节点中的 LDM 实例数。 -
版本(或更高版本) NDB 类型或单位 字节 默认值 256 范围 1 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
可以配置在开始排队进行串行处理之前允许的并行扫描(
TUP
扫描和TUX
扫描)的最大数量。您可以增加此值,以便在并行执行大量扫描时利用任何未使用的 CPU,并提高其性能。 -
版本(或更高版本) NDB 类型或单位 整数 默认值 64 范围 16 - 512 重启类型 节点重启:需要对集群进行滚动重启。
用于重新组织表分区的最大扫描批处理大小。增加为此参数设置的值可能会加快重新组织的速度,但代价是对正在进行的流量产生更大的影响。
-
版本(或更高版本) NDB 类型或单位 整数 默认值 64 范围 16 - 512 重启类型 节点重启:需要对集群进行滚动重启。
用于构建唯一键的最大扫描批处理大小。增加为此参数设置的值可能会加快此类构建的速度,但代价是对正在进行的流量产生更大的影响。
内存分配
版本(或更高版本) | NDB |
---|---|
类型或单位 | 无符号 |
默认值 | 32M |
范围 | 1M - 1G |
已弃用 | 是(在 NDB 8.0 中) |
重启类型 | 节点重启:需要对集群进行滚动重启。 |
此参数在旧版本的 NDB Cluster 中使用,但在 NDB 9.0 中无效。它已被弃用,并将在未来版本中删除。
多个传输器
NDB
为数据节点对之间的通信分配多个传输器。通过为该版本中引入的 NodeGroupTransporters
参数设置适当的值,可以影响分配的传输器数量。
版本(或更高版本) | NDB |
---|---|
类型或单位 | 整数 |
默认值 | 0 |
范围 | 0 - 32 |
重启类型 | 节点重启:需要对集群进行滚动重启。 |
此参数确定同一节点组中节点之间使用的传输器数量。默认值 (0) 表示使用的传输器数量与节点中 LDM 的数量相同。这对于大多数用例来说应该足够了;因此,很少需要更改此默认值。
将 NodeGroupTransporters
设置为大于 LDM 线程数或 TC 线程数(以较大者为准)的数字,会导致 NDB
使用这两个线程数中的最大值。这意味着大于此值的值实际上将被忽略。
哈希表大小
版本(或更高版本) | NDB |
---|---|
类型或单位 | LDM 线程 |
默认值 | 240 |
范围 | 0 - 3840 |
重启类型 | 节点重启:需要对集群进行滚动重启。 |
此参数最初的预期用途是促进从默认哈希表大小不同的非常旧版本升级和降级(特别是降级)。从 NDB Cluster 7.3(或更高版本)升级到更高版本时,这不是问题。
当前不支持在使用 DefaultHashMapSize
等于 3840 创建或修改任何表后在线减少此参数。
日志记录和检查点。 以下 [ndbd]
参数控制日志和检查点行为。
-
设置此参数可以直接控制重做日志文件的大小。这在 NDB Cluster 在高负载下运行并且无法在尝试打开新文件之前足够快地关闭片段日志文件时非常有用(一次只能打开 2 个片段日志文件);增加片段日志文件的大小可以让集群有更多时间来打开每个新的片段日志文件。此参数的默认值为 16M。
有关片段日志文件的更多信息,请参阅
NoOfFragmentLogFiles
的说明。 -
版本(或更高版本) NDB 类型或单位 文件 默认值 27 范围 20 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
此参数设置要为打开的文件分配的初始内部线程数。
默认值为 27。
-
默认情况下,在执行数据节点的初始启动时,片段日志文件是稀疏创建的,也就是说,根据所使用的操作系统和文件系统,不一定会将所有字节都写入磁盘。但是,可以通过此参数覆盖此行为,并强制写入所有字节,而不管使用的平台和文件系统类型如何。
InitFragmentLogFiles
接受以下两个值之一SPARSE
。片段日志文件是稀疏创建的。这是默认值。FULL
。强制将片段日志文件的所有字节写入磁盘。
根据您的操作系统和文件系统,设置
InitFragmentLogFiles=FULL
可能有助于消除写入重做日志时的 I/O 错误。 -
版本(或更高版本) NDB 类型或单位 布尔值 默认值 true 范围 ... 重启类型 节点重启:需要对集群进行滚动重启。
如果为
true
,则启用部分本地检查点:这意味着每个 LCP 仅记录完整数据库的一部分,以及包含自上次 LCP 以来已更改行的任何记录;如果没有行发生更改,则 LCP 仅更新 LCP 控制文件,而不更新任何数据文件。如果禁用
EnablePartialLcp
(false
),则每个 LCP 仅使用一个文件并写入一个完整的检查点;这需要最少的 LCP 磁盘空间,但会增加每个 LCP 的写入负载。默认值为启用 (true
)。可以通过RecoveryWork
配置参数的设置来修改部分 LCPS 使用的空间比例。有关完整和部分 LCP 使用的文件和目录的更多信息,请参阅 NDB Cluster 数据节点文件系统目录。
将此参数设置为
false
还会禁用自适应 LCP 控制机制使用的磁盘写入速度计算。 -
版本(或更高版本) NDB 类型或单位 秒 默认值 180 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
本地检查点片段扫描看门狗会定期检查作为本地检查点一部分执行的每个片段扫描是否没有进度,并在经过给定时间后没有进度时关闭节点。可以使用
LcpScanProgressTimeout
数据节点配置参数设置此时间间隔,该参数设置在 LCP 片段扫描看门狗关闭节点之前本地检查点可以停滞的最大时间。默认值为 60 秒(提供与先前版本的兼容性)。将此参数设置为 0 将完全禁用 LCP 片段扫描看门狗。
-
版本(或更高版本) NDB 类型或单位 无符号 默认值 0 范围 20 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
此参数设置要为打开的文件分配的最大内部线程数。 任何需要更改此参数的情况都应报告为错误。
默认值为 0。但是,此参数可以设置的最小值为 20。
-
版本(或更高版本) NDB 类型或单位 整数 默认值 25 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
此参数设置错误日志中写入的错误消息的最大数量,以及在覆盖现有跟踪文件之前保留的跟踪文件的最大数量。当节点因任何原因崩溃时,会生成跟踪文件。
默认值为 25,这会将这些最大值设置为 25 条错误消息和 25 个跟踪文件。
-
版本(或更高版本) NDB 类型或单位 秒 默认值 0 范围 0 - 600 重启类型 节点重启:需要对集群进行滚动重启。
在并行数据节点恢复中,实际上只有表数据是并行复制和同步的;元数据(如字典和检查点信息)的同步是以串行方式完成的。此外,字典和检查点信息的恢复不能与执行本地检查点并行执行。这意味着,当并发启动或重新启动许多数据节点时,数据节点可能会被迫等待本地检查点的执行,这会导致更长的节点恢复时间。
可以强制延迟本地检查点,以允许更多(甚至可能所有)数据节点完成元数据同步;一旦每个数据节点的元数据同步完成,即使在执行本地检查点时,所有数据节点也可以并行恢复表数据。要强制执行此类延迟,请设置
MaxLCPStartDelay
,它确定集群在数据节点继续同步元数据时可以等待开始本地检查点的秒数。应在config.ini
文件的[ndbd default]
部分中设置此参数,以便所有数据节点都使用相同的参数。最大值为 600;默认值为 0。 -
此参数设置节点的 REDO 日志文件数,从而设置分配给 REDO 日志记录的空间量。由于 REDO 日志文件以环形组织,因此集合中的第一个和最后一个日志文件(有时分别称为““头””和““尾””日志文件)不要相遇,这一点非常重要。当它们彼此之间的距离太近时,由于缺少新日志记录的空间,节点将开始中止包含更新的所有事务。
在自插入该日志记录以来已完成所需的本地检查点之前,不会删除
REDO
日志记录。检查点的频率由本章其他地方讨论的一组配置参数确定。默认参数值为 16,默认情况下,这意味着 16 组 4 个 16MB 文件,总共 1024MB。可以使用
FragmentLogFileSize
参数配置单个日志文件的大小。在需要大量更新的情况下,可能需要将NoOfFragmentLogFiles
的值设置为 300 或更高,以便为 REDO 日志提供足够的空间。如果检查点速度很慢,并且对数据库的写入操作太多,导致日志文件已满,并且无法在不危及恢复的情况下截断日志尾部,则所有更新事务都将中止,并显示内部错误代码 410(
日志文件空间暂时不足
)。这种情况将一直持续到检查点完成并且日志尾部可以向前移动。重要此参数不能““动态””更改;您必须使用
--initial
重新启动节点。如果要更改正在运行的集群中所有数据节点的此值,可以使用滚动节点重新启动来完成(在启动每个数据节点时使用--initial
)。 -
版本(或更高版本) NDB 类型或单位 整数 默认值 60 范围 25 - 100 重启类型 节点重启:需要对集群进行滚动重启。
LCP 文件的存储开销百分比。此参数仅在
EnablePartialLcp
为 true 时有效,也就是说,仅在启用部分本地检查点时有效。值越高意味着每个 LCP 写入的记录更少,LCP 使用更多空间
重启期间需要更多工作
RecoveryWork
的值越低意味着在每个 LCP 期间写入更多记录,但 LCP 在磁盘上需要的空间更少。
在重启期间工作量减少,因此重启速度更快,但代价是在正常操作期间工作量增加
例如,将
RecoveryWork
设置为 60 意味着 LCP 的总大小大约是需要检查点数据大小的 1 + 0.6 = 1.6 倍。这意味着与使用完整检查点的重启相比,重启的恢复阶段需要多 60% 的工作量。(这在重启的其他阶段得到了补偿,因此与使用完整 LCP 相比,使用部分 LCP 时,整个重启速度仍然更快。)为了不填满重做日志,需要以 1 + (1 /RecoveryWork
) 倍于检查点期间数据更改的速率进行写入,因此,当RecoveryWork
= 60 时,需要以大约 1 + (1 / 0.6) = 2.67 倍于更改速率进行写入。换句话说,如果更改以每秒 10 MB 的速度写入,则检查点需要以大约每秒 26.7 MB 的速度写入。将
RecoveryWork
设置为 40 意味着只需要 1.4 倍的总 LCP 大小(因此恢复阶段所需时间减少 10% 到 15%)。在这种情况下,检查点写入速率是更改速率的 3.5 倍。NDB 源代码发行版包含一个用于模拟 LCP 的测试程序。
lcp_simulator.cc
可以在storage/ndb/src/kernel/blocks/backup/
中找到。要在 Unix 平台上编译和运行它,请执行此处显示的命令$> gcc lcp_simulator.cc $> ./a.out
除了
stdio.h
之外,此程序没有其他依赖项,并且不需要连接到 NDB 集群或 MySQL 服务器。默认情况下,它会模拟 300 个 LCP(三组 100 个 LCP,每组依次包含插入、更新和删除),并在每个 LCP 之后报告其大小。您可以通过更改源代码中recovery_work
、insert_work
和delete_work
的值并重新编译来更改模拟。有关更多信息,请参阅程序的源代码。 -
版本(或更高版本) NDB 类型或单位 整数 默认值 40 范围 0 - 70 重启类型 节点重启:需要对集群进行滚动重启。
用于插入行的
RecoveryWork
的百分比。值越高,本地检查点期间的写入次数越多,LCP 的总大小越小。值越低,LCP 期间的写入次数越少,但会导致 LCP 使用更多空间,这意味着恢复时间更长。仅当EnablePartialLcp
为 true(即,仅当启用部分本地检查点时)时,此参数才会生效。 -
版本(或更高版本) NDB 类型或单位 布尔值 默认值 true 范围 ... 重启类型 节点重启:需要对集群进行滚动重启。
启用自适应检查点速度以控制重做日志的使用。
启用后(默认),
EnableRedoControl
允许数据节点在将 LCP 写入磁盘的速率方面具有更大的灵活性。更具体地说,启用此参数意味着可以使用更高的写入速率,以便 LCP 可以更快地完成并修剪重做日志,从而减少恢复时间和磁盘空间需求。此功能允许数据节点更好地利用现代固态存储设备和协议(例如使用非易失性内存快速 (NVMe) 的固态硬盘 (SSD))提供的更高的 I/O 速率和更大的带宽。当
NDB
部署在 I/O 或带宽相对于采用固态技术的系统(例如使用传统硬盘 (HDD) 的系统)受限的系统上时,EnableRedoControl
机制很容易导致 I/O 子系统饱和,从而增加数据节点输入和输出的等待时间。特别是,这可能会导致 NDB 磁盘数据表出现问题,这些表的空间或日志文件组与数据节点 LCP 和重做日志文件共享受限的 I/O 子系统;此类问题可能包括由于 GCP 停止错误导致的节点或集群故障。在这种情况 下,请将EnableRedoControl
设置为false
以禁用它。将EnablePartialLcp
设置为false
也会禁用自适应计算。
元数据对象。 下一组 [ndbd]
参数定义了元数据对象的池大小,用于定义集群之间索引、事件和复制使用的最大属性、表、索引和触发器对象数。
这些只是对集群的“建议”,任何未指定的参数都将恢复为显示的默认值。
-
版本(或更高版本) NDB 类型或单位 整数 默认值 1000 范围 32 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
此参数设置了可在集群中定义的最大属性数的建议值;与
MaxNoOfTables
一样,它不打算作为硬性上限。(在较旧的 NDB 集群版本中,此参数有时被视为某些操作的硬性限制。这会导致 NDB 集群复制出现问题,因为可以创建比可复制的表更多的表,并且有时会导致混淆,因为可以(或不能,具体取决于情况)创建超过
MaxNoOfAttributes
个属性。)默认值为 1000,最小值为 32。最大值为 4294967039。由于所有元数据都在服务器上完全复制,因此每个属性在每个节点上大约消耗 200 字节的存储空间。
设置
MaxNoOfAttributes
时,务必提前准备好将来可能要执行的任何ALTER TABLE
语句。这是因为在集群表上执行ALTER TABLE
期间,使用的属性数量是原始表中的 3 倍,最佳做法是允许此数量的两倍。例如,如果属性数量最多的 NDB 集群表(greatest_number_of_attributes
)有 100 个属性,那么MaxNoOfAttributes
值的良好起点是6 *
。greatest_number_of_attributes
= 600您还应该估计每个表的平均属性数,并将其乘以
MaxNoOfTables
。如果此值大于上一段中获得的值,则应改用较大的值。假设您可以毫无问题地创建所有所需的表,那么在配置参数后,您还应该尝试实际的
ALTER TABLE
来验证此数字是否足够。如果这不成功,请将MaxNoOfAttributes
再增加MaxNoOfTables
的倍数,然后再次对其进行测试。 -
版本(或更高版本) NDB 类型或单位 整数 默认值 128 范围 8 - 20320 重启类型 节点重启:需要对集群进行滚动重启。
为集群中的每个表和每个唯一哈希索引分配一个表对象。此参数为整个集群设置建议的最大表对象数;与
MaxNoOfAttributes
一样,它不打算作为硬性上限。(在较旧的 NDB 集群版本中,此参数有时被视为某些操作的硬性限制。这会导致 NDB 集群复制出现问题,因为可以创建比可复制的表更多的表,并且有时会导致混淆,因为可以(或不能,具体取决于情况)创建超过
MaxNoOfTables
个表。)对于具有
BLOB
数据类型的每个属性,都会使用一个额外的表来存储大部分BLOB
数据。在定义表总数时,还必须考虑到这些表。此参数的默认值为 128。最小值为 8,最大值为 20320。每个表对象在每个节点上大约消耗 20KB。
注意MaxNoOfTables
、MaxNoOfOrderedIndexes
和MaxNoOfUniqueHashIndexes
的总和不得超过232 − 2
(4294967294)。 -
版本(或更高版本) NDB 类型或单位 整数 默认值 128 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
对于集群中的每个有序索引,都会分配一个对象来描述正在索引的内容及其存储段。默认情况下,如此定义的每个索引还会定义一个有序索引。每个唯一索引和主键都有一个有序索引和一个哈希索引。
MaxNoOfOrderedIndexes
设置系统中任何时候可以使用的有序索引总数。此参数的默认值为 128。每个索引对象在每个节点上大约消耗 10KB 的数据。
注意MaxNoOfTables
、MaxNoOfOrderedIndexes
和MaxNoOfUniqueHashIndexes
的总和不得超过232 − 2
(4294967294)。 -
版本(或更高版本) NDB 类型或单位 整数 默认值 64 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
对于不是主键的每个唯一索引,都会分配一个特殊表,用于将唯一键映射到索引表的主键。默认情况下,还会为每个唯一索引定义一个有序索引。要防止这种情况,您必须在定义唯一索引时指定
USING HASH
选项。默认值为 64。每个索引在每个节点上大约消耗 15KB。
注意MaxNoOfTables
、MaxNoOfOrderedIndexes
和MaxNoOfUniqueHashIndexes
的总和不得超过232 − 2
(4294967294)。 -
版本(或更高版本) NDB 类型或单位 整数 默认值 768 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
为每个唯一哈希索引分配内部更新、插入和删除触发器。(这意味着为每个唯一哈希索引创建三个触发器。)但是,有序索引只需要一个触发器对象。备份还会为集群中的每个普通表使用三个触发器对象。
集群之间的复制也会使用内部触发器。
此参数设置集群中的最大触发器对象数。
默认值为 768。
-
版本(或更高版本) NDB 类型或单位 无符号 默认值 0 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
NDB 集群中的每个
NDB
表都需要在 NDB 内核中有一个订阅。对于某些 NDB API 应用程序,可能需要或希望更改此参数。但是,对于将 MySQL 服务器作为 SQL 节点的正常使用,无需这样做。MaxNoOfSubscriptions
的默认值为 0,这被视为等于MaxNoOfTables
。每个订阅消耗 108 字节。 -
版本(或更高版本) NDB 类型或单位 无符号 默认值 0 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
此参数仅在使用 NDB Cluster 复制时有效。默认值为 0。它被视为
2 * MaxNoOfTables + 2 * [API 节点数]
。每个 MySQL 服务器(一个充当复制源,另一个充当副本)的每个NDB
表都有一个订阅。每个订阅使用 16 个字节的内存。使用循环复制、多源复制以及涉及 2 个以上 MySQL 服务器的其他复制设置时,应将此参数增加到包含在复制中的 mysqld 进程数(这通常与集群数相同,但不总是如此)。例如,如果您有一个使用三个 NDB 集群的循环复制设置,每个集群连接一个 mysqld,并且每个 mysqld 进程都充当源和副本,则应将
MaxNoOfSubscribers
设置为等于3 * MaxNoOfTables
。有关更多信息,请参阅第 25.7 节 “NDB 集群复制”。
MaxNoOfConcurrentSubOperations
版本(或更高版本) NDB 类型或单位 无符号 默认值 256 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
此参数设置了集群中所有 API 节点一次可以执行的操作数上限。默认值 (256) 足以满足正常操作,并且可能只需要在许多 API 节点同时执行大量操作的情况下进行调整。
布尔参数。 数据节点的行为也会受到一组采用布尔值的 [ndbd]
参数的影响。这些参数可以通过将它们设置为等于 1
或 Y
来指定为 TRUE
,并通过将它们设置为等于 0
或 N
来指定为 FALSE
。
-
版本(或更高版本) NDB 类型或单位 布尔值 默认值 false 范围 true,false 重启类型 节点重启:需要对集群进行滚动重启。
将此参数设置为
1
会导致本地检查点文件被压缩。使用的压缩等效于 gzip --fast,可以节省数据节点上存储未压缩检查点文件所需空间的 50% 或更多。可以为单个数据节点或所有数据节点启用压缩 LCP(通过在config.ini
文件的[ndbd default]
部分中设置此参数)。重要您无法将压缩的本地检查点还原到运行不支持此功能的 MySQL 版本的集群。
默认值为
0
(禁用)。 -
版本(或更高版本) NDB 类型或单位 布尔值 默认值 true 范围 true,false 重启类型 节点重启:需要对集群进行滚动重启。
启用此参数时(默认),只要遇到损坏的元组,它就会强制数据节点关闭。
-
版本(或更高版本) NDB 类型或单位 true|false (1|0) 默认值 false 范围 true,false 重启类型 初始系统重启:需要完全关闭集群,从备份中擦除并恢复集群文件系统,然后重新启动集群。
可以将 NDB Cluster 表指定为无盘,这意味着表不会被检查点到磁盘,并且不会发生日志记录。此类表仅存在于主内存中。使用无盘表的后果是,表和这些表中的记录在崩溃后都无法幸免。但是,在无盘模式下运行时,可以在无盘计算机上运行 ndbd。
重要此功能会导致整个 集群在无盘模式下运行。
启用此功能后,将禁用 NDB Cluster 在线备份。此外,无法部分启动集群。
默认情况下,
Diskless
被禁用。 -
加密 LCP 和表空间文件,包括撤消日志和重做日志。默认情况下禁用(
0
);设置为1
以启用。重要启用文件系统加密后,必须在启动每个数据节点时使用选项
--filesystem-password
或--filesystem-password-from-stdin
为其提供密码。否则,数据节点将无法启动。有关更多信息,请参阅第 25.6.14 节 “NDB 集群的文件系统加密”。
-
版本(或更高版本) NDB 类型或单位 数字 默认值 1 范围 0 - 1 重启类型 节点重启:需要对集群进行滚动重启。
在建立与管理服务器的连接后,为此数据节点分配内存。默认情况下启用。
-
版本(或更高版本) NDB 类型或单位 数字 默认值 0 范围 0 - 2 重启类型 节点重启:需要对集群进行滚动重启。
对于许多操作系统,包括 Solaris 和 Linux,可以将进程锁定在内存中,从而避免任何磁盘交换。这可以用来帮助保证集群的实时特性。
此参数采用整数值
0
、1
或2
之一,其作用如下所示0
:禁用锁定。这是默认值。1
:在为进程分配内存后执行锁定。2
:在为进程分配内存之前执行锁定。
如果操作系统未配置为允许非特权用户锁定页面,则可能必须以系统 root 用户身份运行使用此参数的数据节点进程。(
LockPagesInMainMemory
使用mlockall
函数。从 Linux 内核 2.6.9 开始,非特权用户可以锁定受max locked memory
限制的内存。有关更多信息,请参阅 ulimit -l 和 http://linux.die.net/man/2/mlock)。注意在旧的 NDB Cluster 版本中,此参数是一个布尔值。
0
或false
是默认设置,并且禁用锁定。1
或true
在分配内存后启用进程锁定。NDB Cluster 9.0 将此参数的值true
或false
视为错误。重要从
glibc
2.10 开始,glibc
使用每线程竞技场来减少对共享池的锁争用,这会消耗实际内存。通常,数据节点进程不需要每线程竞技场,因为它在启动后不执行任何内存分配。(分配器的这种差异似乎不会显着影响性能。)glibc
行为旨在通过MALLOC_ARENA_MAX
环境变量进行配置,但在glibc
2.16 之前的版本中,此机制存在一个错误,这意味着该变量不能设置为小于 8,因此无法回收浪费的内存。(错误 #15907219;有关此问题的更多信息,另请参阅 http://sourceware.org/bugzilla/show_bug.cgi?id=13137)。解决此问题的一种可能方法是使用
LD_PRELOAD
环境变量预加载jemalloc
内存分配库,以取代glibc
提供的库。 -
版本(或更高版本) NDB 类型或单位 布尔值 默认值 false 范围 true,false 重启类型 节点重启:需要对集群进行滚动重启。
启用此参数会导致
NDB
尝试对 LCP、备份和重做日志使用O_DIRECT
写入,通常会降低 kswapd 和 CPU 使用率。在 Linux 上使用 NDB Cluster 时,如果使用的是 2.6 或更高版本的内核,请启用ODirect
。默认情况下,
ODirect
被禁用。 -
版本(或更高版本) NDB 类型或单位 布尔值 默认值 false 范围 true,false 重启类型 节点重启:需要对集群进行滚动重启。
启用此参数后,将执行重做日志写入,以便将每个完成的文件系统写入作为对
fsync
的调用来处理。如果满足以下至少一个条件,则将忽略此参数的设置ODirect
未启用。InitFragmentLogFiles
设置为SPARSE
。
默认情况下禁用。
-
版本(或更高版本) NDB 类型或单位 布尔值 默认值 false 范围 ... 重启类型 节点重启:需要对集群进行滚动重启。
如果此参数设置为
true
,则数据节点会在 TLS 搜索路径中查找密钥和有效且最新的证书,如果找不到,则无法启动。 -
版本(或更高版本) NDB 类型或单位 布尔值 默认值 false 范围 ... 重启类型 节点重启:需要对集群进行滚动重启。
如果此参数设置为
true
,则必须使用 TLS 对与此数据节点的连接进行身份验证。 -
版本(或更高版本) NDB 类型或单位 错误代码 默认值 2 范围 0 - 4 重启类型 节点重启:需要对集群进行滚动重启。
此功能仅在构建调试版本时可用,在调试版本中,可以将错误插入到各个代码块的执行中作为测试的一部分。
默认情况下,此功能处于禁用状态。
-
版本(或更高版本) NDB 类型或单位 布尔值 默认值 1 范围 0, 1 重启类型 节点重启:需要对集群进行滚动重启。
此参数指定数据节点进程在遇到错误情况时是应退出还是执行自动重启。
此参数的默认值为 1;这意味着默认情况下,错误会导致数据节点进程停止。
当遇到错误并且
StopOnError
为 0 时,数据节点进程将重新启动。MySQL Cluster Manager 的用户应注意,当
StopOnError
等于 1 时,这将阻止 MySQL Cluster Manager 代理在其执行自己的重启和恢复后重启任何数据节点。有关更多信息,请参阅在 Linux 上启动和停止代理。 -
版本(或更高版本) NDB 类型或单位 布尔值 默认值 false 范围 true,false 重启类型 节点重启:需要对集群进行滚动重启。
在此数据节点和也在此主机上运行的 API 节点之间启用共享内存连接。设置为 1 以启用。
控制超时、间隔和磁盘分页
有许多 [ndbd]
参数指定集群数据节点中各种操作之间的超时和间隔。大多数超时值以毫秒为单位指定。任何例外情况将在适用的地方提及。
-
版本(或更高版本) NDB 类型或单位 毫秒 默认值 6000 范围 70 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
为了防止主线程在某个时刻陷入无限循环,一个“看门狗” 线程会检查主线程。此参数指定检查之间的毫秒数。如果进程在三次检查后保持相同状态,则看门狗线程将终止它。
为了实验目的或适应当地条件,可以轻松更改此参数。它可以针对每个节点指定,尽管似乎没有什么理由这样做。
默认超时为 6000 毫秒(6 秒)。
TimeBetweenWatchDogCheckInitial
版本(或更高版本) NDB 类型或单位 毫秒 默认值 6000 范围 70 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
这与
TimeBetweenWatchDogCheck
参数类似,不同之处在于TimeBetweenWatchDogCheckInitial
控制在分配内存的早期启动阶段,存储节点内执行检查之间的时间量。默认超时为 6000 毫秒(6 秒)。
-
版本(或更高版本) NDB 类型或单位 毫秒 默认值 30000 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
此参数指定在调用集群初始化例程之前,集群等待所有数据节点启动的时间。此超时用于尽可能避免部分集群启动。
执行集群的初始启动或初始重启时,此参数将被覆盖。
默认值为 30000 毫秒(30 秒)。0 表示禁用超时,在这种情况下,只有在所有节点都可用时,集群才会启动。
-
版本(或更高版本) NDB 类型或单位 毫秒 默认值 0 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
如果集群在等待
StartPartialTimeout
毫秒后准备好启动,但仍可能处于分区状态,则集群会等待,直到此超时也已过。如果StartPartitionedTimeout
设置为 0,则集群将无限期地等待(232−1 毫秒,或大约 49.71 天)。执行集群的初始启动或初始重启时,此参数将被覆盖。
-
版本(或更高版本) NDB 类型或单位 毫秒 默认值 0 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
如果数据节点未在此参数指定的时间内完成其启动顺序,则节点启动失败。将此参数设置为 0(默认值)意味着不应用数据节点超时。
对于非零值,此参数以毫秒为单位进行测量。对于包含大量数据的数据节点,应增加此参数。例如,对于包含数 GB 数据的数据节点,执行节点重启可能需要长达 10-15 分钟(即 600000 到 1000000 毫秒)的时间。
-
版本(或更高版本) NDB 类型或单位 毫秒 默认值 15000 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
当数据节点配置为
Nodegroup = 65536
时,则视为未分配给任何节点组。在这种情况下,集群将等待StartNoNodegroupTimeout
毫秒,然后将此类节点视为已添加到传递给--nowait-nodes
选项的列表中,并开始启动。默认值为15000
(即管理服务器等待 15 秒)。将此参数设置为0
意味着集群将无限期地等待。StartNoNodegroupTimeout
对于集群中的所有数据节点必须相同;因此,您应该始终在config.ini
文件的[ndbd default]
部分中设置它,而不是为各个数据节点设置。有关更多信息,请参见 第 25.6.7 节“在线添加 NDB 集群数据节点”。
-
版本(或更高版本) NDB 类型或单位 毫秒 默认值 5000 范围 10 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
发现故障节点的主要方法之一是使用心跳。此参数说明发送心跳信号的频率以及预期接收心跳信号的频率。心跳不能被禁用。
连续丢失四个心跳间隔后,该节点将被声明为失效。因此,通过心跳机制发现故障的最长时间是心跳间隔的五倍。
默认心跳间隔为 5000 毫秒(5 秒)。此参数不得大幅更改,并且在节点之间不应有很大差异。如果一个节点使用 5000 毫秒,而监视它的节点使用 1000 毫秒,则该节点显然会很快被声明为失效。此参数可以在在线软件升级期间更改,但只能以很小的幅度更改。
另请参阅 网络通信和延迟,以及
ConnectCheckIntervalDelay
配置参数的说明。 -
版本(或更高版本) NDB 类型或单位 毫秒 默认值 1500 范围 100 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
每个数据节点都会向每个 MySQL 服务器(SQL 节点)发送心跳信号,以确保其保持连接。如果 MySQL 服务器未及时发送心跳,则会被声明为“失效”,在这种情况下,所有正在进行的事务都将完成,并且所有资源都将释放。在由上一个 MySQL 实例启动的所有活动都已完成之前,SQL 节点无法重新连接。此确定的三个心跳条件与
HeartbeatIntervalDbDb
中描述的相同。默认间隔为 1500 毫秒(1.5 秒)。此间隔在各个数据节点之间可能会有所不同,因为每个数据节点都会独立于所有其他数据节点监视连接到它的 MySQL 服务器。
有关更多信息,请参见 网络通信和延迟。
-
数据节点以循环方式相互发送心跳,每个数据节点监视前一个节点。如果给定数据节点未检测到心跳,则此节点将循环中的前一个数据节点声明为“失效”(即,集群无法再访问该节点)。数据节点失效的确定是全局完成的;换句话说,一旦数据节点被声明为失效,集群中的所有节点都会将其视为失效。
驻留在不同主机上的数据节点之间的心跳可能会比其他节点对之间的心跳慢(例如,由于心跳间隔非常低或临时连接问题),以至于数据节点会被声明为失效,即使该节点仍然可以作为集群的一部分正常工作。 .
在这种情况下,数据节点之间传输心跳的顺序可能会影响特定数据节点是否被声明为失效。如果不必要地进行此声明,则可能导致不必要地丢失节点组,从而导致集群故障。
假设有一个设置,其中有 4 个数据节点 A、B、C 和 D 在 2 台主机
host1
和host2
上运行,并且这些数据节点组成 2 个节点组,如下表所示表 25.9 四个数据节点 A、B、C、D 在两台主机 host1、host2 上运行;每个数据节点都属于两个节点组之一。
节点组 在 host1
上运行的节点在 host2
上运行的节点节点组 0 节点 A 节点 B 节点组 1 节点 C 节点 D 假设心跳按 A->B->C->D->A 的顺序传输。在这种情况下,主机之间的心跳丢失会导致节点 B 将节点 A 声明为失效,节点 C 将节点 B 声明为失效。这会导致节点组 0 丢失,因此集群会失败。另一方面,如果传输顺序为 A->B->D->C->A(并且所有其他条件保持不变),则心跳丢失会导致节点 A 和 D 被声明为失效;在这种情况下,每个节点组都有一个幸存节点,并且集群仍然存活。
HeartbeatOrder
配置参数使心跳传输顺序可由用户配置。HeartbeatOrder
的默认值为零;允许在所有数据节点上使用默认值会导致心跳传输顺序由NDB
确定。如果使用此参数,则必须为集群中的每个数据节点将其设置为非零值(最大值 65535),并且此值对于每个数据节点必须唯一;这会导致心跳传输按其HeartbeatOrder
值从最低到最高的顺序从一个数据节点到另一个数据节点进行(然后直接从具有最高HeartbeatOrder
的数据节点到具有最低值的数据节点,以完成循环)。这些值不必是连续的。例如,要在前面概述的场景中强制执行心跳传输顺序 A->B->D->C->A,可以如下所示设置HeartbeatOrder
值要使用此参数更改正在运行的 NDB 集群中的心跳传输顺序,您必须首先在全局配置文件(
config.ini
)(或多个文件)中为集群中的每个数据节点设置HeartbeatOrder
。要使更改生效,您必须执行以下任一操作完全关闭并重新启动整个集群。
连续两次滚动重启集群。 必须在两次滚动重启中以相同的顺序重启所有节点。
您可以使用
DUMP 908
来观察此参数在数据节点日志中的效果。 -
版本(或更高版本) NDB 类型或单位 毫秒 默认值 0 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
在其中一个数据节点的心跳检查失败 5 个间隔(最多
HeartbeatIntervalDbDb
毫秒)后,此参数启用数据节点之间的连接检查。如果此类数据节点在
ConnectCheckIntervalDelay
毫秒的间隔内进一步无法响应,则会被视为可疑,并在两个这样的间隔后被视为失效。这在已知存在延迟问题的设置中很有用。此参数的默认值为 0(禁用)。
-
版本(或更高版本) NDB 类型或单位 4 字节字数,以 2 为底的对数 默认值 20 范围 0 - 31 重启类型 节点重启:需要对集群进行滚动重启。
此参数是一个例外,因为它没有指定在开始新的本地检查点之前要等待的时间;相反,它用于确保在更新相对较少的集群中不执行本地检查点。在大多数更新率高的集群中,很可能在上一个本地检查点完成后立即启动新的本地检查点。
将添加自上一个本地检查点开始以来执行的所有写操作的大小。此参数的特殊之处还在于它被指定为 4 字节字数的以 2 为底的对数,因此默认值 20 表示 4MB(4 × 220)的写操作,21 表示 8MB,依此类推,直到最大值 31,相当于 8GB 的写操作。
集群中的所有写操作都加在一起。将
TimeBetweenLocalCheckpoints
设置为 6 或更小意味着本地检查点会连续执行,而不会暂停,而与集群的工作负载无关。 -
版本(或更高版本) NDB 类型或单位 毫秒 默认值 2000 范围 20 - 32000 重启类型 节点重启:需要对集群进行滚动重启。
当事务提交时,它会在所有镜像数据的节点上的内存中提交。但是,事务日志记录不会作为提交的一部分刷新到磁盘。这种行为背后的原因是,在至少两台自治主机上安全地提交事务应该满足合理的数据持久性标准。
同样重要的是要确保即使在最坏的情况下(集群完全崩溃)也能得到妥善处理。为了保证这种情况发生,在给定时间间隔内发生的所有事务都会被放入一个全局检查点,可以将其视为已刷新到磁盘的一组已提交事务。换句话说,作为提交过程的一部分,事务被放入全局检查点组中。之后,该组的日志记录被刷新到磁盘,然后整个事务组被安全地提交到集群中所有计算机上的磁盘。
我们建议,当您将固态硬盘(尤其是使用 NVMe 的固态硬盘)与磁盘数据表一起使用时,请减少此值。在这种情况下,您还应确保
MaxDiskDataLatency
设置为适当的级别。此参数定义全局检查点之间的间隔。默认值为 2000 毫秒。
TimeBetweenGlobalCheckpointsTimeout
重启类型 节点重启:需要对集群进行滚动重启。
此参数定义全局检查点之间的最小超时时间。默认值为 120000 毫秒。
-
版本(或更高版本) NDB 类型或单位 毫秒 默认值 100 范围 0 - 32000 重启类型 节点重启:需要对集群进行滚动重启。
此参数定义 NDB 集群复制的同步周期之间的间隔。默认值为 100 毫秒。
TimeBetweenEpochs
是 “微型 GCP” 实现的一部分,可用于提高 NDB 集群复制的性能。 -
版本(或更高版本) NDB 类型或单位 毫秒 默认值 0 范围 0 - 256000 重启类型 节点重启:需要对集群进行滚动重启。
此参数定义 NDB 集群复制的同步周期的超时时间。如果节点未在此参数确定的时间内参与全局检查点,则该节点将关闭。默认值为 0;换句话说,超时被禁用。
TimeBetweenEpochsTimeout
是 “微型 GCP” 实现的一部分,可用于提高 NDB 集群复制的性能。每当 GCP 保存花费超过 1 分钟或 GCP 提交花费超过 10 秒时,此参数的当前值和警告都会写入集群日志。
将此参数设置为零的效果是禁用由保存超时、提交超时或两者引起的 GCP 停止。此参数的最大可能值为 256000 毫秒。
-
版本(或更高版本) NDB 类型或单位 周期 默认值 100 范围 0 - 100000 重启类型 节点重启:需要对集群进行滚动重启。
订阅节点可以落后的未处理周期数。超过此数量会导致落后的订阅者断开连接。
默认值 100 足以满足大多数正常操作。如果订阅节点确实滞后到足以导致断开连接,则通常是由于进程或线程的网络或调度问题。(在极少数情况下,问题可能是由
NDB
客户端中的错误引起的。)当周期较长时,可能需要将值设置得低于默认值。断开连接可以防止客户端问题影响数据节点服务、耗尽内存来缓冲数据并最终关闭。相反,只有客户端会受到断开连接的影响(例如,二进制日志中的间隔事件),从而强制客户端重新连接或重新启动进程。
-
版本(或更高版本) NDB 类型或单位 字节 默认值 26214400 范围 26214400 (0x01900000) - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
此节点为缓冲周期分配的字节总数。
TimeBetweenInactiveTransactionAbortCheck
版本(或更高版本) NDB 类型或单位 毫秒 默认值 1000 范围 1000 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
超时处理是通过为此参数指定的每个间隔检查一次每个事务上的计时器来执行的。因此,如果此参数设置为 1000 毫秒,则每秒检查一次每个事务是否超时。
默认值为 1000 毫秒(1 秒)。
-
版本(或更高版本) NDB 类型或单位 毫秒 默认值 4294967039 (0xFFFFFEFF) 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
此参数说明在中止事务之前,允许在同一事务中的操作之间经过的最长时间。
此参数的默认值为
4G
(也是最大值)。对于需要确保任何事务都不会长时间保持锁定的实时数据库,应将此参数设置为相对较小的值。将其设置为 0 意味着应用程序永远不会超时。单位是毫秒。 TransactionDeadlockDetectionTimeout
版本(或更高版本) NDB 类型或单位 毫秒 默认值 1200 范围 50 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
当节点执行涉及事务的查询时,该节点会等待集群中的其他节点响应后再继续。此参数设置事务在数据节点内执行所花费的时间,即事务协调器等待参与事务的每个数据节点执行请求的时间。
可能由于以下任何原因而无法响应
节点 “死” 了
操作已进入锁定队列
请求执行操作的节点可能负载过重。
此超时参数说明事务协调器在中止事务之前等待另一个节点执行查询的时间,这对于节点故障处理和死锁检测都很重要。
默认超时值为 1200 毫秒(1.2 秒)。
此参数的最小值为 50 毫秒。
-
版本(或更高版本) NDB 类型或单位 字节 默认值 4M 范围 32K - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
这是在将数据刷新到本地检查点文件之前要存储的最大字节数。这样做是为了防止写入缓冲,因为写入缓冲会显着影响性能。此参数 不 旨在替代
TimeBetweenLocalCheckpoints
。注意启用
ODirect
后,无需设置DiskSyncSize
;实际上,在这种情况下,它的值只是被忽略。默认值为 4M(4 兆字节)。
-
当此 NDB 集群中没有发生重启(由此数据节点或任何其他数据节点)时,设置本地检查点和备份操作写入磁盘的最大速率,以每秒字节数为单位。
要设置此数据节点正在重启时允许的磁盘写入最大速率,请使用
MaxDiskWriteSpeedOwnRestart
。要设置其他数据节点正在重启时允许的磁盘写入最大速率,请使用MaxDiskWriteSpeedOtherNodeRestart
。可以通过设置MinDiskWriteSpeed
来调整所有 LCP 和备份操作的磁盘写入最小速度。 MaxDiskWriteSpeedOtherNodeRestart
当此 NDB 集群中的一个或多个数据节点(此节点除外)正在重启时,设置本地检查点和备份操作写入磁盘的最大速率,以每秒字节数为单位。
要设置此数据节点正在重启时允许的磁盘写入最大速率,请使用
MaxDiskWriteSpeedOwnRestart
。要在集群中任何地方都没有数据节点正在重启时设置允许的磁盘写入最大速率,请使用MaxDiskWriteSpeed
。可以通过设置MinDiskWriteSpeed
来调整所有 LCP 和备份操作的磁盘写入最小速度。-
设置此数据节点正在重启时本地检查点和备份操作写入磁盘的最大速率,以每秒字节数为单位。
要设置其他数据节点正在重启时允许的磁盘写入最大速率,请使用
MaxDiskWriteSpeedOtherNodeRestart
。要在集群中任何地方都没有数据节点正在重启时设置允许的磁盘写入最大速率,请使用MaxDiskWriteSpeed
。可以通过设置MinDiskWriteSpeed
来调整所有 LCP 和备份操作的磁盘写入最小速度。 -
设置本地检查点和备份操作写入磁盘的最小速率,以每秒字节数为单位。
在各种条件下,LCP 和备份允许的磁盘写入最大速率可以使用参数
MaxDiskWriteSpeed
、MaxDiskWriteSpeedOwnRestart
和MaxDiskWriteSpeedOtherNodeRestart
进行调整。有关更多信息,请参阅这些参数的说明。 -
版本(或更高版本) NDB 类型或单位 毫秒 默认值 7500 范围 10 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
此参数指定数据节点等待仲裁器对仲裁消息的响应的时间。如果超过此时间,则认为网络已断开。
默认值为 7500 毫秒(7.5 秒)。
-
版本(或更高版本) NDB 类型或单位 枚举 默认值 默认值 范围 Default、Disabled、WaitExternal 重启类型 节点重启:需要对集群进行滚动重启。
Arbitration
参数允许选择仲裁方案,对应于此参数的 3 个可能值之一Default. 这允许根据管理节点和 API 节点的
ArbitrationRank
设置正常进行仲裁。这是默认值。Disabled. 在
config.ini
文件的[ndbd default]
部分中设置Arbitration = Disabled
与在所有管理节点和 API 节点上设置ArbitrationRank
为 0 的效果相同。当以这种方式设置Arbitration
时,任何ArbitrationRank
设置都将被忽略。WaitExternal.
Arbitration
参数还支持以如下方式配置仲裁:集群等待由ArbitrationTimeout
确定的时间过后,让外部集群管理器应用程序执行仲裁,而不是在内部处理仲裁。这可以通过在config.ini
文件的[ndbd default]
部分中设置Arbitration = WaitExternal
来完成。为了在使用WaitExternal
设置时获得最佳结果,建议将ArbitrationTimeout
设置为外部集群管理器执行仲裁所需时间间隔的 2 倍。
重要此参数只能在集群配置文件的
[ndbd default]
部分中使用。如果为各个数据节点将Arbitration
设置为不同的值,则集群的行为是未定义的。 RestartSubscriberConnectTimeout
重启类型 节点重启:需要对集群进行滚动重启。
此参数确定数据节点等待订阅 API 节点连接的时间。一旦此超时到期,任何“缺失”的 API 节点都将与集群断开连接。要禁用此超时,请将
RestartSubscriberConnectTimeout
设置为 0。虽然此参数以毫秒为单位指定,但超时本身会解析为下一个更大的整秒。
-
版本(或更高版本) NDB 类型或单位 整数 默认值 60000 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
您可以通过设置此参数来启用和控制数据节点之间发送的保活信号之间的时间间隔。
KeepAliveSendInterval
的默认值为 60000 毫秒(一分钟);将其设置为 0 将禁用保活信号。介于 1 和 10 之间(含)的值将被视为 10。此参数在监视和断开空闲 TCP 连接的环境中可能很有用,因为在集群空闲时,这可能会导致不必要的数据节点故障。
管理节点和数据节点之间的心跳间隔始终为 100 毫秒,并且不可配置。
缓冲和日志记录。 一些 [ndbd]
配置参数使高级用户可以更好地控制节点进程使用的资源,并根据需要调整各种缓冲区大小。
在将日志记录写入磁盘时,这些缓冲区用作文件系统的前端。如果节点在无盘模式下运行,则可以将这些参数设置为其最小值,而不会因磁盘写入由 NDB
存储引擎的文件系统抽象层“伪造”而受到影响。
-
版本(或更高版本) NDB 类型或单位 无符号 默认值 2M 范围 1M - 4294967039 (0xFFFFFEFF) 已弃用 是(在 NDB 8.0 中) 重启类型 节点重启:需要对集群进行滚动重启。
此参数以前用于设置撤消索引缓冲区的大小,但在当前版本的 NDB 集群中无效。
在集群配置文件中使用此参数会引发弃用警告;您应该预计它将在未来的 NDB 集群版本中被删除。
-
版本(或更高版本) NDB 类型或单位 无符号 默认值 16M 范围 1M - 4294967039 (0xFFFFFEFF) 已弃用 是(在 NDB 8.0 中) 重启类型 节点重启:需要对集群进行滚动重启。
此参数以前用于设置撤消数据缓冲区的大小,但在当前版本的 NDB 集群中无效。
在集群配置文件中使用此参数会引发弃用警告;您应该预计它将在未来的 NDB 集群版本中被删除。
-
版本(或更高版本) NDB 类型或单位 字节 默认值 32M 范围 1M - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
所有更新活动也需要记录。REDO 日志可以在每次系统重新启动时重放这些更新。NDB 恢复算法使用数据的“模糊”检查点以及 UNDO 日志,然后应用 REDO 日志来回放所有更改,直到恢复点。
RedoBuffer
设置写入 REDO 日志的缓冲区的大小。默认值为 32MB;最小值为 1MB。如果此缓冲区太小,则
NDB
存储引擎将发出错误代码 1221 (REDO 日志缓冲区过载)。因此,如果您尝试将RedoBuffer
的值减小作为集群配置在线更改的一部分,则应谨慎操作。ndbmtd 为每个 LDM 线程分配一个单独的缓冲区(请参阅
ThreadConfig
)。例如,使用 4 个 LDM 线程,一个 ndbmtd 数据节点实际上有 4 个缓冲区,并为每个缓冲区分配RedoBuffer
字节,总共4 * RedoBuffer
字节。 -
控制用于数据节点中 NDB 日志事件的循环缓冲区的大小。
控制日志消息。 在管理集群时,能够控制为各种事件类型发送到 stdout
的日志消息数量非常重要。对于每个事件类别,有 16 个可能的事件级别(编号为 0 到 15)。将给定事件类别的事件报告设置为级别 15 表示该类别中的所有事件报告都将发送到 stdout
;将其设置为 0 表示不会生成该类别中的事件报告。
默认情况下,只有启动消息会发送到 stdout
,其余事件报告级别的默认值设置为 0。原因是这些消息也会发送到管理服务器的集群日志。
可以为管理客户端设置一组类似的级别,以确定要在集群日志中记录哪些事件级别。
-
版本(或更高版本) NDB 类型或单位 整数 默认值 1 范围 0 - 15 重启类型 节点重启:需要对集群进行滚动重启。
进程启动期间生成的事件的报告级别。
默认级别为 1。
-
版本(或更高版本) NDB 类型或单位 整数 默认值 0 范围 0 - 15 重启类型 节点重启:需要对集群进行滚动重启。
作为节点正常关闭的一部分生成的事件的报告级别。
默认级别为 0。
-
版本(或更高版本) NDB 类型或单位 整数 默认值 0 范围 0 - 15 重启类型 节点重启:需要对集群进行滚动重启。
统计事件的报告级别,例如主键读取次数、更新次数、插入次数、与缓冲区使用情况相关的信息等。
默认级别为 0。
-
版本(或更高版本) NDB 类型或单位 日志级别 默认值 0 范围 0 - 15 重启类型 节点重启:需要对集群进行滚动重启。
本地和全局检查点生成的事件的报告级别。
默认级别为 0。
-
版本(或更高版本) NDB 类型或单位 整数 默认值 0 范围 0 - 15 重启类型 节点重启:需要对集群进行滚动重启。
节点重新启动期间生成的事件的报告级别。
默认级别为 0。
-
版本(或更高版本) NDB 类型或单位 整数 默认值 0 范围 0 - 15 重启类型 节点重启:需要对集群进行滚动重启。
集群节点之间连接生成的事件的报告级别。
默认级别为 0。
-
版本(或更高版本) NDB 类型或单位 整数 默认值 0 范围 0 - 15 重启类型 节点重启:需要对集群进行滚动重启。
集群整体错误和警告生成的事件的报告级别。这些错误不会导致任何节点故障,但仍然被认为值得报告。
默认级别为 0。
-
版本(或更高版本) NDB 类型或单位 级别 默认值 0 范围 0 - 15 重启类型 节点重启:需要对集群进行滚动重启。
拥塞生成的事件的报告级别。这些错误不会导致节点故障,但仍然被认为值得报告。
默认级别为 0。
-
版本(或更高版本) NDB 类型或单位 整数 默认值 0 范围 0 - 15 重启类型 节点重启:需要对集群进行滚动重启。
有关集群总体状态的信息生成的事件的报告级别。
默认级别为 0。
-
版本(或更高版本) NDB 类型或单位 无符号 默认值 0 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
此参数控制数据节点内存使用情况报告在集群日志中的记录频率;它是一个表示报告之间秒数的整数值。
每个数据节点的数据内存和索引内存使用情况都记录为百分比和 32 KB 页面的
DataMemory
数量,如config.ini
文件中设置的那样。例如,如果DataMemory
等于 100 MB,并且给定数据节点正在使用 50 MB 用于数据内存存储,则集群日志中的相应行可能如下所示2006-12-24 01:18:16 [MgmSrvr] INFO -- Node 2: Data usage is 50%(1280 32K pages of total 2560)
MemReportFrequency
不是必需参数。如果使用,可以为config.ini
的[ndbd default]
部分中的所有集群数据节点设置它,也可以为配置文件中相应[ndbd]
部分中的各个数据节点设置或覆盖它。最小值(也是默认值)为 0,在这种情况下,仅当内存使用率达到特定百分比(80%、90% 和 100%)时才会记录内存报告,如 第 25.6.3.2 节“NDB 集群日志事件” 中对统计事件的讨论中所述。 -
版本(或更高版本) NDB 类型或单位 秒 默认值 0 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
使用
--initial
启动数据节点时,它会在启动阶段 4 初始化重做日志文件(请参阅 第 25.6.4 节“NDB 集群启动阶段摘要”)。如果为NoOfFragmentLogFiles
、FragmentLogFileSize
或两者都设置了非常大的值,则此初始化可能需要很长时间。您可以通过StartupStatusReportFrequency
配置参数强制定期记录此过程的进度报告。在这种情况下,进度会记录在集群日志中,以已初始化的文件数和空间量表示,如下所示2009-06-20 16:39:23 [MgmSrvr] INFO -- Node 1: Local redo log file initialization status: #Total files: 80, Completed: 60 #Total MBytes: 20480, Completed: 15557 2009-06-20 16:39:23 [MgmSrvr] INFO -- Node 2: Local redo log file initialization status: #Total files: 80, Completed: 60 #Total MBytes: 20480, Completed: 15570
在启动阶段 4 期间,每隔
StartupStatusReportFrequency
秒记录一次这些报告。如果StartupStatusReportFrequency
为 0(默认值),则仅在重做日志文件初始化过程开始和完成时才会将报告写入集群日志。
数据节点调试参数
以下参数旨在在数据节点的测试或调试期间使用,而不是在生产环境中使用。
-
版本(或更高版本) NDB 类型或单位 字节 默认值 未定义 范围 0 - 100 重启类型 节点重启:需要对集群进行滚动重启。
可以使用
DictTrace
导致记录由创建和删除表生成的事件的跟踪。此参数仅在调试 NDB 内核代码时有用。DictTrace
接受一个整数值。0 是默认值,表示不执行日志记录;1 启用跟踪日志记录,2 启用其他DBDICT
调试输出的日志记录。 -
版本(或更高版本) NDB 类型或单位 布尔值 默认值 false 范围 true,false 重启类型 节点重启:需要对集群进行滚动重启。
通过启用
WatchdogImmediateKill
数据节点配置参数,您可以使线程在发生 watchdog 问题时立即终止。此参数仅应用于调试或故障排除,以便获取报告执行停止时正在发生的事情的跟踪文件。
备份参数。 本节中讨论的 [ndbd]
参数定义了为执行在线备份而预留的内存缓冲区。
-
版本(或更高版本) NDB 类型或单位 字节 默认值 16M 范围 512K - 4294967039 (0xFFFFFEFF) 已弃用 是(在 NDB 7.6 中) 重启类型 节点重启:需要对集群进行滚动重启。
在创建备份时,有两个缓冲区用于将数据发送到磁盘。备份数据缓冲区用于填充通过扫描节点的表记录的数据。一旦此缓冲区已填充到指定为
BackupWriteSize
的级别,页面就会发送到磁盘。在将数据刷新到磁盘时,备份进程可以继续填充此缓冲区,直到空间不足为止。发生这种情况时,备份进程会暂停扫描并等待一些磁盘写入完成以释放内存,以便扫描可以继续。此参数的默认值为 16MB。最小值为 512KB。
-
版本(或更高版本) NDB 类型或单位 百分比 默认值 50 范围 0 - 90 重启类型 节点重启:需要对集群进行滚动重启。
BackupDiskWriteSpeedPct
仅在备份是单线程时适用;由于 NDB 9.0 支持多线程备份,因此通常不需要调整此参数,该参数在多线程情况下无效。以下讨论特定于单线程备份。在正常操作期间,数据节点会尝试最大化用于本地检查点和备份的磁盘写入速度,同时保持在
MinDiskWriteSpeed
和MaxDiskWriteSpeed
设置的范围内。磁盘写入限制为每个 LDM 线程提供了总预算的相等份额。这允许并行 LCP 在不超过磁盘 I/O 预算的情况下进行。因为备份仅由一个 LDM 线程执行,所以这有效地导致预算削减,导致备份完成时间更长,并且 - 如果更改率足够高 - 当备份日志缓冲区填充率高于可实现的写入速率时,将无法完成备份。可以使用
BackupDiskWriteSpeedPct
配置参数解决此问题,该参数采用 0-90(含)范围内的值,该值解释为节点的最大写入速率预算的百分比,该预算在将剩余预算分配给 LDM 线程用于 LCP 之前保留。运行备份的 LDM 线程接收整个写入速率预算用于备份,以及其(减少的)本地检查点写入速率预算份额。此参数的默认值为 50(解释为 50%)。
-
版本(或更高版本) NDB 类型或单位 字节 默认值 16M 范围 2M - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
备份日志缓冲区的作用类似于备份数据缓冲区的作用,只是它用于生成在备份执行期间进行的所有表写入的日志。写入这些页面的原则与备份数据缓冲区相同,不同之处在于当备份日志缓冲区中没有更多空间时,备份将失败。因此,备份日志缓冲区的大小必须足够大,以处理备份时写入活动导致的负载。请参阅 第 25.6.8.3 节,“NDB 集群备份的配置”。
此参数的默认值应该足以满足大多数应用程序的需求。实际上,备份失败更有可能是由磁盘写入速度不足而不是备份日志缓冲区已满引起的。如果磁盘子系统未针对应用程序导致的写入负载进行配置,则集群不太可能执行所需的操作。
最好以处理器成为瓶颈而不是磁盘或网络连接的方式配置集群节点。
此参数的默认值为 16MB。
-
版本(或更高版本) NDB 类型或单位 字节 默认值 32M 范围 0 - 4294967039 (0xFFFFFEFF) 已弃用 是(在 NDB 7.4 中) 重启类型 节点重启:需要对集群进行滚动重启。
此参数已弃用,将在未来版本的 NDB 集群中删除。对其进行的任何设置都将被忽略。
-
版本(或更高版本) NDB 类型或单位 秒 默认值 0 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
此参数控制在备份期间在管理客户端中发出备份状态报告的频率,以及将此类报告写入集群日志的频率(前提是集群事件日志记录配置为允许它 - 请参阅 日志记录和检查点)。
BackupReportFrequency
表示备份状态报告之间的时间(以秒为单位)。默认值为 0。
-
版本(或更高版本) NDB 类型或单位 字节 默认值 256K 范围 32K - 4294967039 (0xFFFFFEFF) 已弃用 是(在 NDB 7.6 中) 重启类型 节点重启:需要对集群进行滚动重启。
此参数指定由备份日志和备份数据缓冲区写入磁盘的消息的默认大小。
此参数的默认值为 256KB。
-
版本(或更高版本) NDB 类型或单位 字节 默认值 1M 范围 256K - 4294967039 (0xFFFFFEFF) 已弃用 是(在 NDB 7.6 中) 重启类型 节点重启:需要对集群进行滚动重启。
此参数指定由备份日志和备份数据缓冲区写入磁盘的消息的最大大小。
此参数的默认值为 1MB。
-
版本(或更高版本) NDB 类型或单位 布尔值 默认值 false 范围 true,false 重启类型 节点重启:需要对集群进行滚动重启。
启用此参数会导致备份文件被压缩。使用的压缩等效于 gzip --fast,并且可以节省数据节点上存储未压缩备份文件所需空间的 50% 或更多。可以为单个数据节点或所有数据节点启用压缩备份(通过在
config.ini
文件的[ndbd default]
部分中设置此参数)。重要您无法将压缩备份还原到运行不支持此功能的 MySQL 版本的集群。
默认值为
0
(禁用)。 -
版本(或更高版本) NDB 类型或单位 整数 默认值 0 范围 0 - 1 重启类型 节点重启:需要对集群进行滚动重启。
如果设置为 1,则必须对备份进行加密。虽然可以为每个数据节点分别设置此参数,但建议您在
config.ini
全局配置文件的[ndbd default]
部分中设置它。有关执行加密备份的更多信息,请参阅 第 25.6.8.2 节,“使用 NDB 集群管理客户端创建备份”。
备份文件的位置由 BackupDataDir
数据节点配置参数确定。
其他要求。 指定这些参数时,以下关系必须成立。否则,数据节点无法启动。
BackupDataBufferSize >= BackupWriteSize + 188KB
BackupLogBufferSize >= BackupWriteSize + 16KB
BackupMaxWriteSize >= BackupWriteSize
NDB 集群实时性能参数
本节中讨论的 [ndbd]
参数用于在多处理器数据节点主机上调度和锁定特定 CPU 的线程。
要使用这些参数,数据节点进程必须以系统 root 身份运行。
-
版本(或更高版本) NDB 类型或单位 数字 默认值 128 范围 0 - 128 重启类型 节点重启:需要对集群进行滚动重启。
此参数确定在系统或节点启动期间以及运行 ndb_restore
--rebuild-indexes
时重建有序索引时要创建的线程数。仅当每个数据节点的表有多个片段时才支持(例如,当COMMENT="NDB_TABLE=PARTITION_BALANCE=FOR_RA_BY_LDM_X_2"
与CREATE TABLE
一起使用时)。将此参数设置为 0(默认值)将禁用有序索引的多线程构建。
您可以通过将
TwoPassInitialNodeRestartCopy
数据节点配置参数设置为TRUE
来在数据节点初始重启期间启用多线程构建。 -
版本(或更高版本) NDB 类型或单位 CPU ID 集 默认值 0 范围 ... 重启类型 节点重启:需要对集群进行滚动重启。
与 ndbd 一起使用时,此参数(现在是字符串)指定分配给处理
NDBCLUSTER
执行线程的 CPU 的 ID。与 ndbmtd 一起使用时,此参数的值是分配给处理执行线程的 CPU ID 的逗号分隔列表。列表中的每个 CPU ID 都应是 0 到 65535(含)范围内的整数。指定的 ID 数量应与
MaxNoOfExecutionThreads
确定的执行线程数匹配。但是,不能保证在使用此参数时以任何给定顺序将线程分配给 CPU。您可以使用ThreadConfig
获得对此类型的更细粒度控制。LockExecuteThreadToCPU
没有默认值。 -
版本(或更高版本) NDB 类型或单位 CPU ID 默认值 0 范围 0 - 64K 重启类型 节点重启:需要对集群进行滚动重启。
此参数指定分配给处理
NDBCLUSTER
维护线程的 CPU 的 ID。此参数的值是 0 到 65535(含)范围内的整数。 没有默认值。
-
版本(或更高版本) NDB 类型或单位 数字 默认值 1 范围 ... 重启类型 节点重启:需要对集群进行滚动重启。
此参数确定非统一内存访问 (NUMA) 是由操作系统还是由数据节点进程控制的,无论数据节点是使用 ndbd 还是 ndbmtd。默认情况下,
NDB
尝试在主机操作系统提供 NUMA 支持的任何数据节点上使用交错 NUMA 内存分配策略。将
Numa
设置为 0 意味着数据节点进程本身不会尝试设置内存分配策略,而是允许由操作系统确定此行为,而操作系统可能会进一步受单独的 numactl 工具的指导。也就是说,Numa = 0
会产生系统默认行为,可以使用 numactl 进行自定义。对于许多 Linux 系统来说,系统默认行为是在分配时为任何给定进程分配本地套接字内存。这在使用 ndbmtd 时可能会出现问题;这是因为 nbdmtd 在启动时分配所有内存,从而导致不平衡,导致不同套接字的访问速度不同,尤其是在锁定主内存中的页面时。将
Numa
设置为 1 意味着数据节点进程使用libnuma
请求交错内存分配。(这也可以在操作系统级别使用 numactl 手动完成。)使用交错分配实际上是告诉数据节点进程忽略非统一内存访问,但不会尝试利用快速本地内存;相反,数据节点进程会尝试避免由于远程内存速度慢而导致的不平衡。如果不需要交错分配,请将Numa
设置为 0,以便可以在操作系统级别确定所需的行为。Numa
配置参数仅在libnuma.so
可用的 Linux 系统上受支持。 -
版本(或更高版本) NDB 类型或单位 布尔值 默认值 false 范围 true,false 重启类型 节点重启:需要对集群进行滚动重启。
将此参数设置为 1 可启用数据节点线程的实时调度。
默认值为 0(调度已禁用)。
-
版本(或更高版本) NDB 类型或单位 微秒 默认值 50 范围 0 - 11000 重启类型 节点重启:需要对集群进行滚动重启。
此参数指定线程在调度程序中执行并发送之前的時間(以微秒为单位)。将其设置为 0 可最大程度地缩短响应时间;为了获得更高的吞吐量,您可以增加该值,但代价是响应时间会变长。
默认值为 50 微秒,我们的测试表明,这在高负载情况下会略微提高吞吐量,而不会明显延迟请求。
-
版本(或更高版本) NDB 类型或单位 整数 默认值 5 范围 0 - 10 重启类型 节点重启:需要对集群进行滚动重启。
设置
NDB
调度程序中速度和吞吐量之间的平衡。此参数采用一个整数,其值在 0-10 范围内(含),默认值为 5。较高的值相对于吞吐量提供更好的响应时间。较低的值以更长的响应时间为代价提供更高的吞吐量。 -
版本(或更高版本) NDB 类型或单位 微秒 默认值 0 范围 0 - 500 重启类型 节点重启:需要对集群进行滚动重启。
此参数指定线程在调度程序中执行并进入睡眠状态之前的時間(以微秒为单位)。
注意如果设置了
SpinMethod
,则忽略此参数的任何设置。 -
版本(或更高版本) NDB 类型或单位 枚举 默认值 StaticSpinning 范围 CostBasedSpinning、LatencyOptimisedSpinning、DatabaseMachineSpinning、StaticSpinning 重启类型 节点重启:需要对集群进行滚动重启。
此参数提供了一个简单接口来控制数据节点上的自适应旋转,其中四个可能的值为旋转参数值提供了预设,如下列表所示
StaticSpinning
(默认):将EnableAdaptiveSpinning
设置为false
,并将SchedulerSpinTimer
设置为 0。(在这种情况下,SetAllowedSpinOverhead
不相关。)CostBasedSpinning
:将EnableAdaptiveSpinning
设置为true
,将SchedulerSpinTimer
设置为 100,并将SetAllowedSpinOverhead
设置为 200。LatencyOptimisedSpinning
:将EnableAdaptiveSpinning
设置为true
,将SchedulerSpinTimer
设置为 200,并将SetAllowedSpinOverhead
设置为 1000。DatabaseMachineSpinning
:将EnableAdaptiveSpinning
设置为true
,将SchedulerSpinTimer
设置为 500,并将SetAllowedSpinOverhead
设置为 10000。这适用于线程拥有自己的 CPU 的情况。
由
SpinMethod
修改的旋转参数如下所示SchedulerSpinTimer
:这与该名称的数据节点配置参数相同。应用于此参数的SpinMethod
设置会覆盖config.ini
文件中设置的任何值。EnableAdaptiveSpinning
:启用或禁用自适应旋转。禁用它会导致执行旋转而不检查 CPU 资源。此参数不能直接在集群配置文件中设置,并且在大多数情况下不需要这样做,但可以使用DUMP 104004 1
在 ndb_mgm 管理客户端中直接启用,或使用DUMP 104004 0
禁用。SetAllowedSpinOverhead
:设置允许获得延迟的 CPU 时间量。此参数不能直接在config.ini
文件中设置。在大多数情况下,SpinMethod 应用的设置应该是令人满意的,但如果需要直接更改它,可以使用DUMP 104002
来执行此操作,其中overhead
overhead
是 0 到 10000 范围内(含)的值;有关详细信息,请参阅指示的DUMP
命令的说明。
在缺乏可用旋转指令的平台(例如 PowerPC 和某些 SPARC 平台)上,旋转时间在所有情况下都设置为 0,并且
SpinMethod
的StaticSpinning
以外的值将被忽略。 -
版本(或更高版本) NDB 类型或单位 布尔值 默认值 true 范围 true,false 重启类型 节点重启:需要对集群进行滚动重启。
可以通过将此配置参数设置为
true
(默认值)来为数据节点的初始重启启用有序索引的多线程构建,这将在初始节点重启期间启用数据的两阶段复制。您还必须将
BuildIndexThreads
设置为非零值。
多线程配置参数 (ndbmtd)。 ndbmtd 默认情况下作为单线程进程运行,并且必须配置为使用多个线程,使用两种方法之一,这两种方法都需要在 config.ini
文件中设置配置参数。第一种方法是简单地为 MaxNoOfExecutionThreads
配置参数设置一个适当的值。第二种方法可以使用 ThreadConfig
为 ndbmtd 多线程设置更复杂的规则。接下来的几段将提供有关这些参数及其与多线程数据节点一起使用的信息。
使用数据节点上的并行性进行备份要求在进行备份之前,集群中所有数据节点上都使用多个 LDM。有关更多信息,请参阅第 25.6.8.5 节,“使用并行数据节点进行 NDB 备份”,以及 从并行获取的备份中恢复。
-
版本(或更高版本) NDB 类型或单位 布尔值 默认值 false 范围 true,false 重启类型 初始系统重启:需要完全关闭集群,从备份中擦除并恢复集群文件系统,然后重新启动集群。
设置为 1 时,将启用自动线程配置,该配置使用数据节点可用的 CPU 数量,并考虑
taskset
、numactl
、虚拟机、Docker 和其他此类控制哪些 CPU 可用于给定应用程序的方法设置的任何限制(在 Windows 平台上,自动线程配置使用所有联机的 CPU);或者,您可以将NumCPUs
设置为所需的 CPU 数量(最多 1024 个,这是自动线程配置可以处理的最大 CPU 数量)。ThreadConfig
和MaxNoOfExecutionThreads
的任何设置都将被忽略。此外,启用此参数会自动禁用ClassicFragmentation
。 -
版本(或更高版本) NDB 类型或单位 布尔值 默认值 true 范围 true,false 重启类型 节点重启:需要对集群进行滚动重启。
启用后(设置为
true
),NDB
会将片段分布在 LDM 之间,以便每个节点的默认分区数等于每个数据节点的本地数据管理器 (LDM) 线程的最小数量。对于新集群,在首次设置集群时将
ClassicFragmentation
设置为false
更可取;这样做会导致每个节点的分区数等于PartitionsPerNode
的值,从而确保所有分区在所有 LDM 之间均匀分布。此参数和
AutomaticThreadConfig
相互排斥;启用AutomaticThreadConfig
会自动禁用ClassicFragmentation
。 -
版本(或更高版本) NDB 类型或单位 无符号 默认值 1 范围 0 - 1 重启类型 节点重启:需要对集群进行滚动重启。
启用多线程备份。如果每个数据节点至少有 2 个 LDM,则所有 LDM 线程都参与备份,该备份使用每个 LDM 线程一个子目录创建,每个子目录包含
.ctl
、.Data
和.log
备份文件。此参数通常为 ndbmtd 启用(设置为 1)。要强制执行可以使用旧版本的 ndb_restore 轻松恢复的单线程备份,请通过将此参数设置为 0 来禁用多线程备份。必须为集群中的每个数据节点执行此操作。
有关更多信息,请参阅第 25.6.8.5 节,“使用并行数据节点进行 NDB 备份”,以及 从并行获取的备份中恢复。
-
此参数直接控制 ndbmtd 使用的执行线程数,最大值为 72。虽然此参数是在
config.ini
文件的[ndbd]
或[ndbd default]
部分中设置的,但它是 ndbmtd 独有的,不适用于 ndbd。启用
AutomaticThreadConfig
会导致忽略对此参数的任何设置。设置
MaxNoOfExecutionThreads
会根据文件storage/ndb/src/common/mt_thr_config.cpp
中的矩阵确定每种类型的线程数。下表显示了MaxNoOfExecutionThreads
可能值的线程数。表 25.11 MaxNoOfExecutionThreads 值和相应的线程类型线程数(LQH、TC、发送、接收)。
MaxNoOfExecutionThreads
值LDM 线程 TC 线程 发送线程 接收线程 0 .. 3 1 0 0 1 4 .. 6 2 0 0 1 7 .. 8 4 0 0 1 9 4 2 0 1 10 4 2 1 1 11 4 3 1 1 12 6 2 1 1 13 6 3 1 1 14 6 3 1 2 15 6 3 2 2 16 8 3 1 2 17 8 4 1 2 18 8 4 2 2 19 8 5 2 2 20 10 4 2 2 21 10 5 2 2 22 10 5 2 3 23 10 6 2 3 24 12 5 2 3 25 12 6 2 3 26 12 6 3 3 27 12 7 3 3 28 12 7 3 4 29 12 8 3 4 30 12 8 4 4 31 12 9 4 4 32 16 8 3 3 33 16 8 3 4 34 16 8 4 4 35 16 9 4 4 36 16 10 4 4 37 16 10 4 5 38 16 11 4 5 39 16 11 5 5 40 20 10 4 4 41 20 10 4 5 42 20 11 4 5 43 20 11 5 5 44 20 12 5 5 45 20 12 5 6 46 20 13 5 6 47 20 13 6 6 48 24 12 5 5 49 24 12 5 6 50 24 13 5 6 51 24 13 6 6 52 24 14 6 6 53 24 14 6 7 54 24 15 6 7 55 24 15 7 7 56 24 16 7 7 57 24 16 7 8 58 24 17 7 8 59 24 17 8 8 60 24 18 8 8 61 24 18 8 9 62 24 19 8 9 63 24 19 9 9 64 32 16 7 7 65 32 16 7 8 66 32 17 7 8 67 32 17 8 8 68 32 18 8 8 69 32 18 8 9 70 32 19 8 9 71 32 20 8 9 72 32 20 8 10 始终有一个 SUMA(复制)线程。
NoOfFragmentLogParts
应设置为等于 ndbmtd 使用的 LDM 线程数,该线程数由此参数的设置确定。此比例不应大于 4:1;明确禁止出现这种情况的配置。LDM 线程的数量还决定了未显式分区
NDB
表使用的分区数量;这是 LDM 线程数量乘以集群中数据节点数量的结果。(如果在数据节点上使用 ndbd 而不是 ndbmtd,则始终只有一个 LDM 线程;在这种情况下,自动创建的分区数量等于数据节点的数量。有关更多信息,请参见 第 25.2.2 节“NDB 集群节点、节点组、分片副本和分区”。在使用超过默认 LDM 线程数的情况下添加 Disk Data 表的大表空间可能会导致资源和 CPU 使用率出现问题,如果磁盘页面缓冲区不够大;有关更多信息,请参见
DiskPageBufferMemory
配置参数的说明。线程类型将在本节稍后介绍(请参见
ThreadConfig
)。如果将此参数设置在允许值范围之外,则管理服务器将在启动时中止,并显示错误消息 错误行
number
:参数 MaxNoOfExecutionThreads 的值value
非法。对于
MaxNoOfExecutionThreads
,NDB
会在内部将值 0 或 1 舍入为 2,因此 2 被视为该参数的默认值和最小值。MaxNoOfExecutionThreads
通常设置为等于可用的 CPU 线程数,并分配适合典型工作负载数量的每种类型的线程。它不会将特定线程分配给指定的 CPU。如果希望更改提供的设置或将线程绑定到 CPU,则应改用ThreadConfig
,它允许您将每个线程直接分配给所需的类型、CPU 或两者兼而有之。多线程数据节点进程始终至少生成以下列出的线程
1 个本地查询处理程序 (LDM) 线程
1 个接收线程
1 个订阅管理器(SUMA 或复制)线程
MaxNoOfExecutionThreads
值为 8 或更小时,不会创建 TC 线程,而是由主线程执行 TC 处理。更改 LDM 线程的数量通常需要重新启动系统,无论使用此参数还是
ThreadConfig
更改,但如果满足以下两个条件,则可以使用节点初始重新启动(NI)来实现更改每个 LDM 线程最多处理 8 个分片,并且
表分片的总数是 LDM 线程数量的整数倍。
-
版本(或更高版本) NDB 类型或单位 微秒 默认值 0 范围 0 - 11000 重启类型 节点重启:需要对集群进行滚动重启。
此参数可用于使数据节点在将数据发送到 API 节点之前短暂等待;在以下段落中描述的某些情况下,这可以导致更高效地发送更大批量的数据和更高的整体吞吐量。
当有大量 API 节点处于饱和点或接近饱和点时,
MaxSendDelay
可能会很有用,这会导致性能的波动。当数据节点能够相对快速地将结果发送回 API 节点,并且有许多小数据包需要处理时,就会发生这种情况,与大数据包相比,每个字节的处理时间可能更长,从而导致 API 节点速度变慢;之后,数据节点开始再次发送更大的数据包。为了处理这种情况,您可以将
MaxSendDelay
设置为非零值,这有助于确保不会将响应过快地发送回 API 节点。完成此操作后,当没有其他竞争流量时,将立即发送响应,但如果有竞争流量,设置MaxSendDelay
会导致数据节点等待足够长的时间,以确保它们发送更大的数据包。实际上,这会在发送过程中引入一个人为瓶颈,这实际上可以显著提高吞吐量。 -
设置属于此 ndbmtd 的重做日志的日志文件组数。此参数的值应设置为等于 ndbmtd 使用的 LDM 线程数,该线程数由
MaxNoOfExecutionThreads
的设置确定。禁止使用每个 LDM 超过 4 个重做日志部分的配置。有关更多信息,请参见
MaxNoOfExecutionThreads
的说明。 -
版本(或更高版本) NDB 类型或单位 整数 默认值 0 范围 0 - 1024 重启类型 初始系统重启:需要完全关闭集群,从备份中擦除并恢复集群文件系统,然后重新启动集群。
使自动线程配置仅使用这么多 CPU。如果未启用
AutomaticThreadConfig
,则无效。 -
版本(或更高版本) NDB 类型或单位 整数 默认值 2 范围 1 - 32 重启类型 节点重启:需要对集群进行滚动重启。
设置在创建新
NDB
表时每个节点上使用的分区数。这使得在本地数据管理器 (LDM) 数量增加时,可以避免将表拆分为过多的分区。虽然可以在不同的数据节点上将此参数设置为不同的值,并且这样做没有已知问题,但这也不太可能带来任何好处;因此,建议在全局
config.ini
文件的[ndbd default]
部分中为所有数据节点设置一次。如果启用了
ClassicFragmentation
,则会忽略对此参数的任何设置。(请记住,启用AutomaticThreadConfig
会禁用ClassicFragmentation
。) -
此参数与 ndbmtd 一起使用,以将不同类型的线程分配给不同的 CPU。它的值是一个字符串,其格式具有以下语法
ThreadConfig := entry[,entry[,...]] entry := type={param[,param[,...]]} type := ldm | query | recover | main | recv | send | rep | io | tc | watchdog | idxbld param := count=number | cpubind=cpu_list | cpuset=cpu_list | spintime=number | realtime={0|1} | nosend={0|1} | thread_prio={0..10} | cpubind_exclusive=cpu_list | cpuset_exclusive=cpu_list
即使列表中只有一个参数,也需要使用花括号 (
{
...}
) 将参数列表括起来。param
(参数)指定以下任何或所有信息给定类型 (
count
) 的线程数。要将给定类型的线程非独占绑定到的 CPU 集。这由
cpubind
或cpuset
) 中的一个确定。cpubind
导致每个线程(非独占地)绑定到集合中的一个 CPU;cpuset
表示每个线程(非独占地)绑定到指定的 CPU 集。在 Solaris 上,您可以改为指定要将给定类型的线程独占绑定到的 CPU 集。
cpubind_exclusive
导致每个线程独占绑定到集合中的一个 CPU;cpuset_exclsuive
表示每个线程独占绑定到指定的 CPU 集。在单个配置中只能提供
cpubind
、cpuset
、cpubind_exclusive
或cpuset_exclusive
中的一个。spintime
确定线程在进入睡眠状态之前自旋的等待时间(以微秒为单位)。spintime
的默认值是SchedulerSpinTimer
数据节点配置参数的值。spintime
不适用于 I/O 线程、看门狗或离线索引构建线程,因此无法为这些线程类型设置。realtime
可以设置为 0 或 1。如果设置为 1,则线程以实时优先级运行。这也意味着无法设置thread_prio
。realtime
参数默认设置为RealtimeScheduler
数据节点配置参数的值。无法为离线索引构建线程设置
realtime
。通过将
nosend
设置为 1,您可以阻止main
、ldm
、rep
或tc
线程协助发送线程。此参数默认为 0,不能与其他类型的线程一起使用。thread_prio
是一个线程优先级,可以设置为 0 到 10,其中 10 表示最高优先级。默认值为 5。此参数的精确效果取决于平台,将在本节稍后介绍。无法为离线索引构建线程设置线程优先级。
按平台划分的 thread_prio 设置和效果。
thread_prio
的实现因 Linux/FreeBSD、Solaris 和 Windows 而异。在下面的列表中,我们将依次讨论它对这些平台的影响Linux 和 FreeBSD:我们将
thread_prio
映射到要提供给nice
系统调用的值。由于进程的 niceness 值越低,表示进程优先级越高,因此增加thread_prio
会降低nice
值。表 25.12 thread_prio 到 Linux 和 FreeBSD 上的 nice 值的映射
thread_prio
值nice
值0 19 1 16 2 12 3 8 4 4 5 0 6 -4 7 -8 8 -12 9 -16 10 -20 某些操作系统可能会提供最大进程优先级为 20,但这并非所有目标版本都支持;因此,我们选择 19 作为可以设置的最大
nice
值。Solaris:在 Solaris 上设置
thread_prio
会设置 Solaris FX 优先级,映射关系如下表所示表 25.13 Solaris 上 thread_prio 到 FX 优先级的映射
thread_prio
值Solaris FX
优先级0 15 1 20 2 25 3 30 4 35 5 40 6 45 7 50 8 55 9 59 10 60 thread_prio
设置为 9 时,在 Solaris 上映射到特殊的 FX 优先级值 59,这意味着操作系统还会尝试强制线程在其自己的 CPU 核心上单独运行。Windows:我们将
thread_prio
映射到传递给 Windows APISetThreadPriority()
函数的 Windows 线程优先级值。此映射关系如下表所示表 25.14 thread_prio 到 Windows 线程优先级的映射
thread_prio
值Windows 线程优先级 0 - 1 THREAD_PRIORITY_LOWEST
2 - 3 THREAD_PRIORITY_BELOW_NORMAL
4 - 5 THREAD_PRIORITY_NORMAL
6 - 7 THREAD_PRIORITY_ABOVE_NORMAL
8 - 10 THREAD_PRIORITY_HIGHEST
type
属性表示 NDB 线程类型。支持的线程类型以及每种类型允许的count
值范围如下所示ldm
:处理数据的本地查询处理程序(DBLQH
内核块)。使用的 LDM 线程越多,数据分区程度越高。(当
ClassicFragmentation
设置为 0 时,分区数与 LDM 线程数无关,而是取决于PartitionsPerNode
的值。)每个 LDM 线程维护其自己的数据和索引分区集,以及其自己的重做日志。ldm
可以设置为 0 到 332 范围内的任何值。当将其设置为 0 时,main
、rep
和tc
也必须为 0,并且recv
也必须设置为 1;这样做会导致 ndbmtd 模拟 ndbd。每个 LDM 线程通常与 1 个查询线程组合在一起,形成一个 LDM 组。一组 4 到 8 个 LDM 组被分组到一个循环组中。每个 LDM 线程可以由同一个循环组中的任何查询或线程协助执行。
NDB
尝试形成循环组,以便每个循环组中的所有线程都被锁定到连接到同一个 L3 缓存的 CPU,并在循环组大小规定的范围内。更改 LDM 线程数通常需要重新启动系统才能生效并确保集群操作安全;在某些情况下,此要求可以放宽,如本节稍后所述。使用
MaxNoOfExecutionThreads
完成此操作时也是如此。如果
DiskPageBufferMemory
不够大,则在使用超过默认 LDM 数量的情况下添加大型表空间(数百 GB 或更多)用于磁盘数据表可能会导致资源和 CPU 使用率出现问题。如果
ThreadConfig
值字符串中未包含ldm
,则会创建一个ldm
线程。query
:查询线程绑定到 LDM,并与其一起形成 LDM 组;仅对READ COMMITTED
查询起作用。查询线程数必须设置为 LDM 线程数的 0、1、2 或 3 倍。除非通过将query
设置为非零值或启用AutomaticThreadConfig
参数来覆盖,否则不会使用查询线程。查询线程也充当恢复线程(请参阅下一项),但反之则不然。
更改查询线程数需要重新启动节点。
recover
:恢复线程作为 LCP 的一部分从片段恢复数据。更改恢复线程数需要重新启动节点。
tc
:包含正在进行的事务状态的事务协调器线程(DBTC
内核块)。TC 线程的最大数量为 128。理想情况下,每个新事务都可以分配给一个新的 TC 线程。在大多数情况下,每 2 个 LDM 线程 1 个 TC 线程足以保证这种情况发生。如果写入次数相对于读取次数相对较少,则可能只需要每 4 个 LQH 线程 1 个 TC 线程来维护事务状态。相反,在执行大量更新的应用程序中,TC 线程与 LDM 线程的比率可能需要接近 1(例如,3 个 TC 线程对应 4 个 LDM 线程)。
将
tc
设置为 0 会导致 TC 处理由主线程完成。在大多数情况下,这与将其设置为 1 的效果相同。范围:0-64
main
:数据字典和事务协调器(DBDIH
和DBTC
内核块),提供模式管理。也可以指定零个或两个主线程。范围:0-2。
将
main
设置为 0 并将rep
设置为 1 会导致main
块被放置到rep
线程中;组合线程在ndbinfo.threads
表中显示为main_rep
。这与将rep
设置为 1 并将main
设置为 0 的效果相同。也可以将
main
和rep
都设置为 0,在这种情况下,两个线程都被放置在第一个recv
线程中;生成的组合线程在threads
表中名为main_rep_recv
。如果
ThreadConfig
值字符串中省略了main
,则会创建一个main
线程。recv
:接收线程(CMVMI
内核块)。每个接收线程处理一个或多个用于与 NDB 集群中其他节点通信的套接字,每个节点一个套接字。NDB 集群支持多个接收线程;最多 16 个此类线程。范围:1 - 64。
如果
ThreadConfig
值字符串中省略了recv
,则会创建一个recv
线程。send
:发送线程(CMVMI
内核块)。为了提高吞吐量,可以从一个或多个单独的专用线程(最多 8 个)执行发送。使用过多的发送线程可能会对可伸缩性产生负面影响。
以前,所有线程都直接处理自己的发送;仍然可以通过将发送线程数设置为 0 来实现此目的(当
MaxNoOfExecutionThreads
设置为小于 10 时也会发生这种情况)。虽然这样做可能会对吞吐量产生负面影响,但在某些情况下也可以降低延迟。范围
0 - 64
rep
:复制线程(SUMA
内核块)。此线程也可以与主线程组合(请参阅范围信息)。范围:0-1。
将
rep
设置为 0 并将main
设置为 1 会导致rep
块被放置到main
线程中;组合线程在ndbinfo.threads
表中显示为main_rep
。这与将main
设置为 1 并将rep
设置为 0 的效果相同。也可以将
main
和rep
都设置为 0,在这种情况下,两个线程都被放置在第一个recv
线程中;生成的组合线程在threads
表中名为main_rep_recv
。如果
ThreadConfig
值字符串中省略了rep
,则会创建一个rep
线程。io
:文件系统和其他杂项操作。这些都不是苛刻的任务,并且始终由单个专用 I/O 线程作为一个组进行处理。范围:仅限 1。
watchdog
:与此类型关联的参数设置实际上应用于多个线程,每个线程都有特定的用途。这些线程包括从其他节点接收连接设置的SocketServer
线程;尝试设置与其他节点的连接的SocketClient
线程;以及检查线程是否正在进行的线程 watchdog 线程。范围:仅限 1。
idxbld
:离线索引构建线程。与之前列出的其他永久线程类型不同,这些是临时线程,仅在节点或系统重新启动期间或运行 ndb_restore--rebuild-indexes
时创建和使用。它们可以绑定到与绑定到永久线程类型的 CPU 集重叠的 CPU 集。无法为离线索引构建线程设置
thread_prio
、realtime
和spintime
值。此外,此类线程会忽略count
。如果未指定
idxbld
,则默认行为如下如果 I/O 线程未绑定,则离线索引构建线程也不会绑定,并且这些线程使用任何可用的核心。
如果 I/O 线程已绑定,则离线索引构建线程将绑定到整个绑定线程集,因为这些线程应该没有其他任务要执行。
范围:0 - 1。
更改
ThreadCOnfig
通常需要系统初始重新启动,但在某些情况下可以放宽此要求如果更改后 LDM 线程数与以前相同,则只需简单地重新启动节点(滚动重新启动或 N)即可实现更改。
否则(即,如果 LDM 线程数发生更改),如果满足以下两个条件,则仍然可以使用节点初始重新启动(NI)来实现更改
每个 LDM 线程最多处理 8 个分片,并且
表分片的总数是 LDM 线程数量的整数倍。
在任何其他情况下,都需要系统初始重新启动才能更改此参数。
NDB
可以通过以下两个条件区分线程类型线程是否是执行线程。类型为
main
、ldm
、query
、recv
、rep
、tc
和send
的线程是执行线程;io
、recover
、watchdog
和idxbld
线程不被视为执行线程。将线程分配给给定任务是永久性的还是临时的。当前,除
idxbld
之外的所有线程类型都被视为永久性的;idxbld
线程被视为临时线程。
简单示例
# Example 1. ThreadConfig=ldm={count=2,cpubind=1,2},main={cpubind=12},rep={cpubind=11} # Example 2. Threadconfig=main={cpubind=0},ldm={count=4,cpubind=1,2,5,6},io={cpubind=3}
在配置数据节点主机使用的线程数时,通常建议预留一个或多个 CPU 用于操作系统和其他任务。因此,对于拥有 24 个 CPU 的主机,您可能希望使用 20 个 CPU 线程(留下 4 个用于其他用途),其中包括 8 个 LDM 线程、4 个 TC 线程(LDM 线程数的一半)、3 个发送线程、3 个接收线程,以及分别用于模式管理、异步复制和 I/O 操作的 1 个线程。(这与
MaxNoOfExecutionThreads
设置为 20 时使用的线程分布几乎相同。)以下ThreadConfig
设置执行这些分配,并额外将所有这些线程绑定到特定的 CPUThreadConfig=ldm{count=8,cpubind=1,2,3,4,5,6,7,8},main={cpubind=9},io={cpubind=9}, \ rep={cpubind=10},tc{count=4,cpubind=11,12,13,14},recv={count=3,cpubind=15,16,17}, \ send{count=3,cpubind=18,19,20}
在大多数情况下,可以将主(模式管理)线程和 I/O 线程绑定到同一个 CPU,就像我们在刚才的示例中所做的那样。
以下示例结合了使用
cpuset
和cpubind
定义的 CPU 组,以及线程优先级的使用。ThreadConfig=ldm={count=4,cpuset=0-3,thread_prio=8,spintime=200}, \ ldm={count=4,cpubind=4-7,thread_prio=8,spintime=200}, \ tc={count=4,cpuset=8-9,thread_prio=6},send={count=2,thread_prio=10,cpubind=10-11}, \ main={count=1,cpubind=10},rep={count=1,cpubind=11}
在这种情况下,我们创建了两个 LDM 组;第一个使用
cpubind
,第二个使用cpuset
。thread_prio
和spintime
为每个组设置为相同的值。这意味着总共有 8 个 LDM 线程。(您应确保NoOfFragmentLogParts
也设置为 8。)4 个 TC 线程仅使用 2 个 CPU;使用cpuset
时,可以指定少于组中线程数的 CPU。(对于cpubind
,情况并非如此。)发送线程使用两个线程,并使用cpubind
将这些线程绑定到 CPU 10 和 11。主线程和复制线程可以重用这些 CPU。此示例显示了如何在具有超线程的 24 CPU 主机上设置
ThreadConfig
和NoOfFragmentLogParts
,从而使 CPU 10、11、22 和 23 可用于操作系统功能和中断NoOfFragmentLogParts=10 ThreadConfig=ldm={count=10,cpubind=0-4,12-16,thread_prio=9,spintime=200}, \ tc={count=4,cpuset=6-7,18-19,thread_prio=8},send={count=1,cpuset=8}, \ recv={count=1,cpuset=20},main={count=1,cpuset=9,21},rep={count=1,cpuset=9,21}, \ io={count=1,cpuset=9,21,thread_prio=8},watchdog={count=1,cpuset=9,21,thread_prio=9}
接下来的几个示例包含
idxbld
的设置。前两个示例演示了如何将为idxbld
定义的 CPU 集与为其他(永久)线程类型指定的 CPU 集重叠,第一个示例使用cpuset
,第二个示例使用cpubind
ThreadConfig=main,ldm={count=4,cpuset=1-4},tc={count=4,cpuset=5,6,7}, \ io={cpubind=8},idxbld={cpuset=1-8} ThreadConfig=main,ldm={count=1,cpubind=1},idxbld={count=1,cpubind=1}
下一个示例为 I/O 线程指定了一个 CPU,但没有为索引构建线程指定 CPU
ThreadConfig=main,ldm={count=4,cpuset=1-4},tc={count=4,cpuset=5,6,7}, \ io={cpubind=8}
由于刚才显示的
ThreadConfig
设置将线程锁定到编号为 1 到 8 的 8 个核心,因此它等效于此处显示的设置ThreadConfig=main,ldm={count=4,cpuset=1-4},tc={count=4,cpuset=5,6,7}, \ io={cpubind=8},idxbld={cpuset=1,2,3,4,5,6,7,8}
为了利用
ThreadConfig
使用所提供的增强的稳定性,必须确保 CPU 是隔离的,并且它们不受中断的影响,也不受操作系统调度以执行其他任务的影响。在许多 Linux 系统上,您可以通过在/etc/sysconfig/irqbalance
中将IRQBALANCE_BANNED_CPUS
设置为0xFFFFF0
,以及使用grub.conf
中的isolcpus
引擎启动选项来做到这一点。有关具体信息,请参阅您的操作系统或平台文档。
-
重启类型 节点重启:需要对集群进行滚动重启。
这是要分配的页面条目(页面引用)的数量。它在
DiskPageBufferMemory
中指定为 32K 页面的数量。默认值足以满足大多数情况,但如果在磁盘数据表上遇到非常大的事务问题,则可能需要增加此参数的值。每个页面条目大约需要 100 字节。 -
版本(或更高版本) NDB 类型或单位 字节 默认值 64M 范围 4M - 16T 重启类型 节点重启:需要对集群进行滚动重启。
这决定了用于缓存磁盘上页面的空间量(以字节为单位),并在
config.ini
文件的[ndbd]
或[ndbd default]
部分中设置。如果在
ThreadConfig
中使用超过默认数量的 LDM 线程(例如{ldm=6...}
)的情况下,DiskPageBufferMemory
的值设置得太低,则在尝试将大型(例如 500G)数据文件添加到基于磁盘的NDB
表时可能会出现问题,其中该过程会无限期地占用其中一个 CPU 核心。这是因为,作为将数据文件添加到表空间的一部分,范围页面被锁定在额外 PGMAN 工作线程的内存中,以便快速访问元数据。添加大文件时,此工作线程没有足够的内存来存储所有数据文件元数据。在这种情况下,您应该增加
DiskPageBufferMemory
或添加较小的表空间文件。您可能还需要调整DiskPageBufferEntries
。您可以查询
ndbinfo.diskpagebuffer
表,以帮助确定是否应增加此参数的值以最大程度地减少不必要的磁盘查找。有关更多信息,请参见 第 25.6.17.31 节“ndbinfo diskpagebuffer 表”。 -
版本(或更高版本) NDB 类型或单位 字节 默认值 128M 范围 0 - 64T 重启类型 节点重启:需要对集群进行滚动重启。
此参数确定用于日志缓冲区、磁盘操作(例如页面请求和等待队列)以及表空间、日志文件组、
UNDO
文件和数据文件的元数据的内存量。共享全局内存池还提供用于满足CREATE LOGFILE GROUP
和ALTER LOGFILE GROUP
语句中使用的UNDO_BUFFER_SIZE
选项的内存要求的内存,包括InitialLogFileGroup
数据节点配置参数的设置对此选项隐含的任何默认值。SharedGlobalMemory
可以在config.ini
配置文件的[ndbd]
或[ndbd default]
部分中设置,以字节为单位。默认值为
128M
。 -
版本(或更高版本) NDB 类型或单位 线程 默认值 2 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
此参数确定用于磁盘数据文件访问的未绑定线程数。在引入
DiskIOThreadPool
之前,每个磁盘数据文件只生成一个线程,这可能会导致性能问题,尤其是在使用非常大的数据文件时。使用DiskIOThreadPool
,您可以(例如)使用多个并行工作的线程访问单个大型数据文件。此参数仅适用于磁盘数据 I/O 线程。
此参数的最佳值取决于您的硬件和配置,并包括以下因素
磁盘数据文件的物理分布 通过将数据文件、撤消日志文件和数据节点文件系统放在单独的物理磁盘上,可以获得更好的性能。如果对部分或所有这些文件集执行此操作,则可以(并且应该)将
DiskIOThreadPool
设置为更高的值,以使单独的线程能够处理每个磁盘上的文件。当对磁盘数据文件使用一个或多个单独的磁盘时,还应该禁用
DiskDataUsingSameDisk
;这会提高磁盘数据表空间检查点的执行速率。磁盘性能和类型 可以容纳的磁盘数据文件处理线程数还取决于磁盘的速度和吞吐量。更快的磁盘和更高的吞吐量允许更多的磁盘 I/O 线程。我们的测试结果表明,固态硬盘可以处理比传统磁盘多得多的磁盘 I/O 线程,因此
DiskIOThreadPool
的值也更高。在使用固态硬盘时,尤其是在使用 NVMe 的情况下,还建议减少
TimeBetweenGlobalCheckpoints
。另请参见 磁盘数据延迟参数。
此参数的默认值为 2。
磁盘数据文件系统参数 以下列表中的参数使得可以将 NDB 集群磁盘数据文件放置在特定目录中,而无需使用符号链接。
-
如果指定了此参数,则 NDB 集群磁盘数据数据文件和撤消日志文件将放置在指示的目录中。可以通过为
FileSystemPathDataFiles
、FileSystemPathUndoFiles
或两者指定值来覆盖数据文件、撤消日志文件或两者,如对这些参数的说明中所述。还可以通过在用于创建该数据文件的CREATE TABLESPACE
或ALTER TABLESPACE
语句的ADD DATAFILE
子句中指定路径来覆盖数据文件,并通过在用于创建该撤消日志文件的CREATE LOGFILE GROUP
或ALTER LOGFILE GROUP
语句的ADD UNDOFILE
子句中指定路径来覆盖撤消日志文件。如果未指定FileSystemPathDD
,则使用FileSystemPath
。如果为给定数据节点指定了
FileSystemPathDD
目录(包括在config.ini
文件的[ndbd default]
部分中指定参数的情况),则使用--initial
启动该数据节点会导致删除该目录中的所有文件。 -
如果指定了此参数,则 NDB 集群磁盘数据数据文件将放置在指示的目录中。这将覆盖为
FileSystemPathDD
设置的任何值。可以通过在用于创建给定数据文件的CREATE TABLESPACE
或ALTER TABLESPACE
语句的ADD DATAFILE
子句中指定路径来覆盖此参数。如果未指定FileSystemPathDataFiles
,则使用FileSystemPathDD
(如果也未设置FileSystemPathDD
,则使用FileSystemPath
)。如果为给定数据节点指定了
FileSystemPathDataFiles
目录(包括在config.ini
文件的[ndbd default]
部分中指定参数的情况),则使用--initial
启动该数据节点将导致删除该目录中的所有文件。 -
如果指定了此参数,则 NDB Cluster Disk Data 撤消日志文件将放置在指示的目录中。这将覆盖为
FileSystemPathDD
设置的任何值。可以通过在用于创建该数据文件的CREATE LOGFILE GROUP
或ALTER LOGFILE GROUP
语句的ADD UNDO
子句中指定路径来覆盖给定数据文件的此参数。如果未指定FileSystemPathUndoFiles
,则使用FileSystemPathDD
(如果也未设置FileSystemPath
,则使用FileSystemPath
)。如果为给定数据节点指定了
FileSystemPathUndoFiles
目录(包括在config.ini
文件的[ndbd default]
部分中指定参数的情况),则使用--initial
启动该数据节点将导致删除该目录中的所有文件。
有关更多信息,请参见 “第 25.6.11.1 节“NDB 集群磁盘数据对象””。
-
磁盘数据对象创建参数。 以下两个参数使您能够在首次启动集群时,无需使用 SQL 语句即可创建磁盘数据日志文件组、表空间或两者。
-
此参数可用于指定在执行集群的初始启动时创建的日志文件组。
InitialLogFileGroup
的指定方式如下所示InitialLogFileGroup = [name=name;] [undo_buffer_size=size;] file-specification-list file-specification-list: file-specification[; file-specification[; ...]] file-specification: filename:size
日志文件组的
name
是可选的,默认为DEFAULT-LG
。undo_buffer_size
也是可选的;如果省略,则默认为64M
。每个file-specification
对应于一个撤消日志文件,并且在file-specification-list
中必须至少指定一个。撤消日志文件的放置位置取决于为FileSystemPath
、FileSystemPathDD
和FileSystemPathUndoFiles
设置的任何值,就像它们是由于CREATE LOGFILE GROUP
或ALTER LOGFILE GROUP
语句而创建的一样。请考虑以下内容
InitialLogFileGroup = name=LG1; undo_buffer_size=128M; undo1.log:250M; undo2.log:150M
这等效于以下 SQL 语句
CREATE LOGFILE GROUP LG1 ADD UNDOFILE 'undo1.log' INITIAL_SIZE 250M UNDO_BUFFER_SIZE 128M ENGINE NDBCLUSTER; ALTER LOGFILE GROUP LG1 ADD UNDOFILE 'undo2.log' INITIAL_SIZE 150M ENGINE NDBCLUSTER;
使用
--initial
启动数据节点时,将创建此日志文件组。初始日志文件组的资源与
SharedGlobalMemory
值指示的资源一起添加到全局内存池中。如果使用此参数,则应始终在
config.ini
文件的[ndbd default]
部分中设置它。未定义在不同数据节点上设置不同值时 NDB 集群的行为。 -
此参数可用于指定在执行集群的初始启动时创建的 NDB Cluster Disk Data 表空间。
InitialTablespace
的指定方式如下所示InitialTablespace = [name=name;] [extent_size=size;] file-specification-list
表空间的
name
是可选的,默认为DEFAULT-TS
。extent_size
也是可选的;它默认为1M
。file-specification-list
使用与InitialLogfileGroup
参数所示相同的语法,唯一的区别是与InitialTablespace
一起使用的每个file-specification
对应于一个数据文件。在file-specification-list
中必须至少指定一个。数据文件的放置位置取决于为FileSystemPath
、FileSystemPathDD
和FileSystemPathDataFiles
设置的任何值,就像它们是由于CREATE TABLESPACE
或ALTER TABLESPACE
语句而创建的一样。例如,请考虑以下行,该行在
config.ini
文件的[ndbd default]
部分中指定了InitialTablespace
(与InitialLogfileGroup
一样,应始终在[ndbd default]
部分中设置此参数,因为未定义在不同数据节点上设置不同值时 NDB 集群的行为)InitialTablespace = name=TS1; extent_size=8M; data1.dat:2G; data2.dat:4G
这等效于以下 SQL 语句
CREATE TABLESPACE TS1 ADD DATAFILE 'data1.dat' EXTENT_SIZE 8M INITIAL_SIZE 2G ENGINE NDBCLUSTER; ALTER TABLESPACE TS1 ADD DATAFILE 'data2.dat' INITIAL_SIZE 4G ENGINE NDBCLUSTER;
使用
--initial
启动数据节点时,将创建此表空间,并且以后在创建 NDB Cluster Disk Data 表时可以使用它。
-
磁盘数据延迟参数。 此处列出的两个参数可用于改进 NDB Cluster Disk Data 表的延迟问题处理。
-
版本(或更高版本) NDB 类型或单位 毫秒 默认值 0 范围 0 - 8000 重启类型 节点重启:需要对集群进行滚动重启。
此参数控制磁盘访问允许的最大平均延迟(最大 8000 毫秒)。达到此限制时,
NDB
开始中止事务,以减少 Disk Data I/O 子系统上的压力。使用0
可禁用延迟检查。 -
版本(或更高版本) NDB 类型或单位 布尔值 默认值 true 范围 ... 重启类型 节点重启:需要对集群进行滚动重启。
如果您的 Disk Data 表空间使用一个或多个单独的磁盘,请将此参数设置为
false
。这样做允许以比通常在共享磁盘时使用的速率更高的速率对表空间执行检查点。当
DiskDataUsingSameDisk
为true
时,每当内存中检查点正在进行时,NDB
都会降低 Disk Data 检查点的速率,以帮助确保磁盘负载保持恒定。
-
磁盘数据和 GCP 停止错误。 使用 Disk Data 表时遇到的错误(例如 节点 nodeid
终止了此节点,因为检测到 GCP 停止(错误 2303))通常称为 “GCP 停止错误”。当重做日志未足够快地刷新到磁盘时,就会发生此类错误;这通常是由于磁盘速度慢且磁盘吞吐量不足造成的。
您可以通过使用更快的磁盘并将 Disk Data 文件放在与数据节点文件系统不同的磁盘上来帮助防止发生这些错误。减小 TimeBetweenGlobalCheckpoints
的值往往会减少每次全局检查点要写入的数据量,因此在尝试写入全局检查点时可以提供一些针对重做日志缓冲区溢出的保护;但是,减小此值也会减少写入 GCP 的时间,因此必须谨慎操作。
除了前面解释的 DiskPageBufferMemory
的注意事项外,正确设置 DiskIOThreadPool
配置参数也非常重要;将 DiskIOThreadPool
设置得太高很可能会导致 GCP 停止错误(错误 #37227)。
GCP 停止可能是由保存或提交超时引起的;TimeBetweenEpochsTimeout
数据节点配置参数确定提交的超时时间。但是,可以通过将此参数设置为 0 来禁用这两种类型的超时。
用于配置发送缓冲区内存分配的参数。 发送缓冲区内存是从所有传输器之间共享的内存池中动态分配的,这意味着可以根据需要调整发送缓冲区的大小。(以前,NDB 内核为集群中的每个节点使用固定大小的发送缓冲区,该缓冲区在节点启动时分配,并且在节点运行时无法更改。)TotalSendBufferMemory
和 OverLoadLimit
数据节点配置参数允许设置此内存分配的限制。有关使用这些参数(以及 SendBufferMemory
)的更多信息,请参见 “第 25.4.3.14 节“配置 NDB 集群发送缓冲区参数””。
此参数指定除了使用
TotalSendBufferMemory
、SendBufferMemory
或两者设置的任何内存之外,还要分配的传输器发送缓冲区内存量。此参数用于确定要在该节点上为所有已配置传输器之间的共享发送缓冲区内存分配的内存总量。
如果设置了此参数,则其允许的最小值为 256KB;0 表示未设置该参数。有关更详细的信息,请参见 “第 25.4.3.14 节“配置 NDB 集群发送缓冲区参数””。
另请参见 “第 25.6.7 节“在线添加 NDB 集群数据节点””。
重做日志过度提交处理。 可以控制数据节点在将重做日志刷新到磁盘花费太多时间时的操作处理。 当给定重做日志刷新花费的时间超过 RedoOverCommitLimit
秒,超过 RedoOverCommitCounter
次,导致任何待处理的事务被中止时,就会发生这种情况。 发生这种情况时,发送事务的 API 节点可以通过将操作排队并重试,或者根据 DefaultOperationRedoProblemAction
的确定中止操作,来处理应该提交的操作。 以下列表描述了用于设置超时和 API 节点采取此操作之前可能超过超时次数的数据节点配置参数
-
重启类型 节点重启:需要对集群进行滚动重启。
尝试将给定重做日志写入磁盘时,如果超过
RedoOverCommitLimit
的次数达到或超过此次数,则将中止由于此原因而未提交的任何事务,并且这些事务源自的 API 节点将根据其DefaultOperationRedoProblemAction
的值处理构成这些事务的操作(通过将操作排队以重试,或中止它们)。 -
重启类型 节点重启:需要对集群进行滚动重启。
此参数设置在超时之前尝试将给定重做日志写入磁盘的时间上限(以秒为单位)。 数据节点尝试刷新此重做日志但花费的时间超过
RedoOverCommitLimit
的次数将被保留并与RedoOverCommitCounter
进行比较,并且当刷新花费的时间超过该参数值指定的次数时,将中止由于刷新超时而未提交的任何事务。 发生这种情况时,这些事务源自的 API 节点将根据其DefaultOperationRedoProblemAction
设置处理构成这些事务的操作(它会将操作排队以重试,或中止它们)。
控制重启尝试次数。 可以使用 MaxStartFailRetries
和 StartFailRetryDelay
数据节点配置参数,对数据节点在启动失败时的重启尝试次数进行精细控制。
MaxStartFailRetries
限制在放弃启动数据节点之前进行的重试总次数,StartFailRetryDelay
设置重试尝试之间的秒数。 这些参数列举如下
-
版本(或更高版本) NDB 类型或单位 无符号 默认值 0 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
使用此参数设置数据节点在启动失败时重启尝试之间的秒数。 默认值为 0(无延迟)。
除非
StopOnError
等于 0,否则将忽略此参数和MaxStartFailRetries
。 -
版本(或更高版本) NDB 类型或单位 无符号 默认值 3 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启:需要对集群进行滚动重启。
使用此参数限制数据节点在启动失败时进行的重启尝试次数。 默认值为 3 次。
除非
StopOnError
等于 0,否则将忽略此参数和StartFailRetryDelay
。
NDB 索引统计信息参数。 以下列表中的参数与 NDB 索引统计信息生成相关。
-
版本(或更高版本) NDB 类型或单位 整数 默认值 1 范围 0, 1 重启类型 节点重启:需要对集群进行滚动重启。
启用(设置为 1)或禁用(设置为 0)在创建索引时自动收集统计信息。
-
版本(或更高版本) NDB 类型或单位 整数 默认值 1 范围 0, 1 重启类型 节点重启:需要对集群进行滚动重启。
启用(设置为 1)或禁用(设置为 0)对索引更改的监控,并在检测到更改时触发自动统计信息更新。 触发更新所需的更改程度由
IndexStatTriggerPct
和IndexStatTriggerScale
选项的设置确定。 -
NDB
系统表和 mysqld 内存缓存中任何给定索引的已保存统计信息允许的最大空间(以字节为单位)。无论任何大小限制如何,始终至少生成一个样本。 此大小按
IndexStatSaveScale
进行缩放。IndexStatSaveSize
指定的大小按大型索引的IndexStatTriggerPct
值乘以 0.01 进行缩放。 然后再乘以索引大小的对数(以 2 为底)。 将IndexStatTriggerPct
设置为 0 将禁用缩放效果。 -
IndexStatSaveSize
指定的大小按大型索引的IndexStatTriggerPct
值乘以 0.01 进行缩放。 然后再乘以索引大小的对数(以 2 为底)。 将IndexStatTriggerPct
设置为 0 将禁用缩放效果。 -
触发索引统计信息更新的更新百分比变化。 该值按
IndexStatTriggerScale
进行缩放。 可以通过将IndexStatTriggerPct
设置为 0 来完全禁用此触发器。 -
将大型索引的
IndexStatTriggerPct
缩放此数量乘以 0.01。 值 0 将禁用缩放。 -
给定索引的自动索引统计信息更新之间的最小延迟(以秒为单位)。 将此变量设置为 0 将禁用任何延迟。 默认值为 60 秒。
重启类型。 下表显示了有关本节中参数说明使用的重启类型的信息
表 25.15 NDB 集群重启类型
符号 | 重启类型 | 描述 |
---|---|---|
N | 节点 | 可以使用滚动重启更新参数(请参阅 第 25.6.5 节 “执行 NDB 集群的滚动重启”) |
S | 系统 | 必须完全关闭所有集群节点,然后重新启动,才能使此参数的更改生效 |
I | 初始 | 必须使用 --initial 选项重新启动数据节点 |