定义NDB群集数据节点
在[ndbd]
与[ndbd default]
部分用于配置簇数据节点的行为。
[ndbd]
[ndbd default]
无论您是对数据节点进程使用ndbd还是ndbmtd二进制文件,并且始终用作节名称。
有许多参数可控制缓冲区大小,池大小,超时等。唯一的强制性的参数是的任一个ExecuteOnComputer
或HostName
;这必须在本地[ndbd]
部分中定义。
该参数NoOfReplicas
应在本[ndbd default]
节中定义,因为它是所有群集数据节点所共有的。设置不是严格必需的NoOfReplicas
,但是最好进行显式设置。
大多数数据节点参数在该[ndbd default]
部分中设置。在本[ndbd]
节中仅允许更改那些明确声明可以设置局部值的参数。如果存在,HostName
,NodeId
并ExecuteOnComputer
必须在本地进行定义[ndbd]
部分,而不是在其他任何部分config.ini
。换句话说,这些参数的设置特定于一个数据节点。
对于影响存储器利用率或缓冲器大小这些参数,有可能使用K
,M
或G
作为后缀来表示的1024单位,1024×1024,或1024×1024×1024。(例如,100K
表示100×1024 =102400。)
参数名称和值不区分大小写,除非在MySQL Server my.cnf
或my.ini
文件中使用,在这种情况下,它们区分大小写。
有关特定于NDB群集磁盘数据表的配置参数的信息,可以在本节的后面部分找到(请参阅磁盘数据配置参数)。
所有这些参数也适用于ndbmtd(ndbd的多线程版本)。三个附加的数据节点的配置参数-MaxNoOfExecutionThreads
,ThreadConfig
和NoOfFragmentLogParts
-apply到ndbmtd仅;与ndbd一起使用时,这些无效。有关更多信息,请参见多线程配置参数(ndbmtd)。另请参见第22.4.3节“ndbmtd-NDB群集数据节点守护程序(多线程)”。
识别数据节点。的NodeId
或Id
值(即,数据节点标识符)可以当启动节点在配置文件中的命令行上进行分配。
NodeId
该表提供了NodeId数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 未签名 默认 [没有] 范围 1-48 重新启动类型 是 版本(或更高版本) NDB 8.0.18 类型或单位 未签名 默认 [没有] 范围 1-144 重新启动类型 是 唯一的节点ID用作所有群集内部消息的节点地址。对于数据节点,这是1到144(含)范围内的整数。(在NDB 8.0.17及更早版本中,此值包括1到48。)群集中的每个节点必须具有唯一的标识符。
NodeId
是标识数据节点时唯一使用的受支持参数名称。ExecuteOnComputer
该表提供了ExecuteOnComputer数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 名称 默认 [没有] 范围 ... 重新启动类型 小号 这是指
Id
在一[computer]
节中定义的其中一台计算机的集合。重要
不建议使用此参数,并且在将来的版本中可能会删除该参数。请改用
HostName
参数。HostName
该表提供了主机名数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 名称或IP地址 默认 本地主机 范围 ... 重新启动类型 ñ 指定此参数定义了数据节点将驻留在其上的计算机的主机名。要指定除以外的主机名
localhost
,此参数或ExecuteOnComputer
必需。ServerPort
该表提供了ServerPort数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 未签名 默认 [没有] 范围 1-64K 重新启动类型 小号 群集中的每个节点都使用端口连接到其他节点。默认情况下,此端口是动态分配的,以确保同一主机上没有两个节点接收相同的端口号,因此通常不必为此参数指定值。
但是,如果需要能够在防火墙中打开特定端口以允许数据节点和API节点(包括SQL节点)之间进行通信,则可以将此参数设置为
[ndbd]
段中所需端口的编号,或者(如果需要(对多个数据节点执行此操作)文件[ndbd default]
部分config.ini
,然后打开具有该编号的端口以用于来自SQL节点,API节点或两者的传入连接。注意
从数据节点到管理节点的连接是使用ndb_mgmd管理端口(管理服务器的端口
PortNumber
)完成的,因此应始终允许从任何数据节点到该端口的传出连接。TcpBind_INADDR_ANY
将此参数设置为
TRUE
或1
绑定,IP_ADDR_ANY
以便可以从任何地方建立连接(对于自动生成的连接)。默认值为FALSE
(0
)。NodeGroup
该表提供了NodeGroup数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 默认 [没有] 范围 0-65536 重新启动类型 是 此参数可用于将数据节点分配给特定的节点组。它仅在群集首次启动时是只读的,并且不能用于将数据节点重新分配给联机的其他节点组。通常不希望
[ndbd default]
在config.ini
文件的该部分中使用此参数,并且必须注意不要以将无效数量的节点分配给任何节点组的方式将节点分配给节点组。该
NodeGroup
参数主要用于将新节点组添加到正在运行的NDB群集中,而无需执行滚动重启。为此,应将其设置为65536(最大值)。您不需要NodeGroup
为所有集群数据节点设置值,仅需要为以后要启动并作为新节点组添加到集群的那些节点设置值。有关更多信息,请参见“在线添加NDB群集数据节点:详细示例”。LocationDomainId
该表提供了LocationDomainId数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 0 范围 0-16 重新启动类型 小号 将数据节点分配给云中的特定可用性域(也称为可用性区域)。通过通知
NDB
哪些节点在哪个可用性域中,可以通过以下方式在云环境中提高性能:- 如果在同一节点上找不到请求的数据,则可以将读取定向到同一可用性域中的另一个节点。
- 保证不同可用性域中节点之间的通信可以使用
NDB
传输器的WAN支持,而无需任何进一步的人工干预。 - 传输者的组号可以基于使用哪个可用性域,以便SQL和其他API节点也尽可能与同一可用性域中的本地数据节点通信。
- 可以从不存在数据节点的可用性域中选择仲裁程序,或者,如果找不到这样的可用性域,则可以从第三个可用性域中选择仲裁器。
LocationDomainId
取一个介于0和16之间(含0和16)的整数值,默认值为0;使用0等于不设置参数。NoOfReplicas
该表提供了NoOfReplicas数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 2 范围 1-2 重新启动类型 是 版本(或更高版本) NDB 8.0.19 类型或单位 整数 默认 2 范围 1-4 重新启动类型 是 只能在该
[ndbd default]
部分中设置此全局参数,并定义存储在集群中的每个表的副本数。此参数还指定节点组的大小。节点组是一组均存储相同信息的节点。节点组是隐式形成的。第一个节点组由具有最低节点ID的数据节点集合组成,第二个节点组由具有次最低的节点标识集合的对象组成,依此类推。举例来说,假设我们有4个数据节点并将其
NoOfReplicas
设置为2。这四个数据节点的节点ID为2、3、4和5。然后,第一个节点组由节点2和3组成,第二个节点组由节点2和3组成。节点组由节点4和5组成。重要的是,以这样一种方式配置群集,即不要将同一节点组中的节点放置在同一台计算机上,因为单个硬件故障会导致整个群集发生故障。如果未提供节点ID,则数据节点的顺序将成为节点组的决定因素。无论是否进行了显式分配,都可以在管理客户端
SHOW
命令的输出中参见它们。默认值为
NoOfReplicas
2。这是大多数生产环境的建议值,在NDB 8.0.18之前,它是支持的最大值。从NDB 8.0.19开始,此参数的值设置为3或4已经过全面测试并在生产中受支持。警告
设置
NoOfReplicas
为1表示所有群集数据只有一个副本;在这种情况下,单个数据节点的丢失会导致群集发生故障,因为该节点没有存储该数据的其他副本。此参数的值必须平均分配到群集中的数据节点数。例如,如果有两个数据节点,则
NoOfReplicas
必须等于1或2,因为2/3和2/4都产生分数值;如果有四个数据节点,则NoOfReplicas
必须等于1、2或4。DataDir
该表提供了DataDir数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 路径 默认 。 范围 ... 重新启动类型 在 此参数指定放置跟踪文件,日志文件,pid文件和错误日志的目录。
缺省值为数据节点进程工作目录。
FileSystemPath
该表提供了FileSystemPath数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 路径 默认 数据目录 范围 ... 重新启动类型 在 此参数指定放置为元数据,REDO日志,UNDO日志(针对磁盘数据表)和数据文件创建的所有文件的目录。默认是由指定的目录
DataDir
。注意
在启动ndbd进程之前,该目录必须存在。
建议的NDB Cluster目录层次结构包括
/var/lib/mysql-cluster
,在该目录下创建节点文件系统的目录。该子目录的名称包含节点ID。例如,如果节点ID为2,则此子目录名为ndb_2_fs
。BackupDataDir
该表提供了BackupDataDir数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 路径 默认 [见文字] 范围 ... 重新启动类型 在 此参数指定放置备份的目录。
重要
字符串“
/BACKUP
”始终附加在此值之后。例如,如果将值设置BackupDataDir
为/var/lib/cluster-data
,则所有备份都存储在下/var/lib/cluster-data/BACKUP
。这也意味着有效的默认备份位置是BACKUP
在FileSystemPath
参数指定的位置下命名的目录。
数据存储器,索引存储器和字符串存储器
DataMemory
和IndexMemory
是[ndbd]
用于指定用于存储实际记录及其索引的内存段大小的参数。在设置这些值时,重要的是要了解如何DataMemory
使用,因为通常需要对其进行更新以反映集群的实际使用情况。
注意
IndexMemory
已被弃用,并且在以后的NDB Cluster版本中可能会被删除。有关更多信息,请参见以下说明。
DataMemory
该表提供了DataMemory数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 个字节 默认 98M 范围 1M-1T 重新启动类型 ñ 版本(或更高版本) NDB 8.0.19 类型或单位 个字节 默认 98M 范围 1M-16T 重新启动类型 ñ 此参数定义可用于存储数据库记录的空间量(以字节为单位)。该值指定的全部量都分配在内存中,因此,机器具有足够的物理内存来容纳它非常重要。
分配的内存
DataMemory
用于存储实际记录和索引。每条记录有16字节的开销;每条记录都会产生额外的金额,因为它存储在32KB页中,具有128个字节的页开销(请参见下文)。由于每条记录仅存储在一页中,因此每页也有少量浪费。对于可变大小的表格属性,数据存储在从分配的单独的数据页上
DataMemory
。可变长度记录使用具有4个字节额外开销的固定大小部分来引用可变大小部分。可变大小部分的开销为2字节,每个属性2字节。从NDB 8.0.18开始,最大记录大小为30000字节。以前,这是14000字节。
分配给的资源
DataMemory
用于存储所有数据和索引。(将配置为的任何内存IndexMemory
自动添加到用于DataMemory
形成公共资源池的内存中。)当前,NDB Cluster每个分区的哈希索引最多可以使用512 MB,这意味着在某些情况下,即使ndb_mgm -e“ ALL REPORT MEMORYUSAGE”显示为free,在MySQL客户端应用程序中也可能出现Table is full错误。这也可能导致在数据负载很重的节点上重新启动数据节点的问题。
DataMemory
可以通过设置控制每个本地数据管理分区给定表的数量
NDB_TABLE
的选项PARTITION_BALANCE
中的值中的一个FOR_RA_BY_LDM
,FOR_RA_BY_LDM_X_2
,FOR_RA_BY_LDM_X_3
,或FOR_RA_BY_LDM_X_4
,1,2,3,或每LDM 4个分区,分别创建表时(见“设置NDB_TABLE选项”)。注意
在早期版本的NDB Cluster中,可以为NDB Cluster表创建额外的分区,从而可以通过使用
MAX_ROWS
for选项为哈希索引提供更多的内存CREATE TABLE
。尽管仍然支持向后兼容,但MAX_ROWS
不建议用于此目的;您应该PARTITION_BALANCE
改用。您还可以使用
MinFreePct
配置参数来帮助避免节点重新启动的问题。DataMemory
由分配的内存空间由32KB页组成,这些页分配给表片段。每个表通常被划分为与群集中的数据节点相同数量的片段。因此,对于每个节点,存在与中设置的相同数量的片段NoOfReplicas
。分配页面后,当前无法将其返回到空闲页面池,除非删除表。(这也意味着
DataMemory
一旦分配给给定表的页面就不能被其他表使用。)执行数据节点恢复还压缩分区,因为所有记录都已从其他活动节点插入到空分区中。该
DataMemory
内存空间也包含UNDO信息:对于每一更新,未改变记录的副本将被分配DataMemory
。在有序表索引中也有对每个副本的引用。仅当唯一索引列更新时,唯一哈希索引才会更新,在这种情况下,将在索引表中插入新条目,并在提交时删除旧条目。因此,还必须分配足够的内存来处理使用群集的应用程序执行的最大事务。在任何情况下,由于以下原因,执行一些大型事务都不会比使用许多较小的事务具有优势:- 大笔交易并不比小笔交易快
- 大型事务会增加丢失的操作数量,因此在发生事务失败时必须重复操作
- 大笔交易占用更多内存
DataMemory
NDB 8.0中的默认值为 98MB。最小值为1MB。没有最大大小,但是实际上必须调整最大大小,以便在达到限制时该过程不会开始交换。此限制由计算机上可用的物理RAM的数量以及操作系统可承诺给任何一个进程的内存量确定。通常,每个进程将32位操作系统限制为2-4 GB;64位操作系统可以使用更多。对于大型数据库,由于这个原因,最好使用64位操作系统。IndexMemory
该表提供了IndexMemory数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 个字节 默认 0 范围 1M-1T 重新启动类型 ñ 该
IndexMemory
参数已弃用(并可能在将来删除);分配给IndexMemory
它的任何内存都将分配给与相同的池DataMemory
,而后者仅负责在内存中存储数据和索引所需的所有资源。在NDB 8.0中,IndexMemory
在群集配置文件中使用会触发来自管理服务器的警告。您可以使用以下公式估算哈希索引的大小:
size = ( (fragments * 32K) + (rows * 18) ) * replicas
fragments
是片段数,replicas
是副本数(通常为2),并且rows
是行数。如果一个表有一百万行,8个片段和2个副本,则按如下所示计算预期的索引内存使用量:((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
为单位),是有序索引键中的ot属性数,并且rows
是基表中的行数。假设该表
t1
有100万行,并以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字节。
在NDB 8.0中,此参数的最小和默认值是0(零)。
StringMemory
该表提供了StringMemory数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 %或字节 默认 25 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 小号 此参数确定为表名等字符串分配多少内存,并在文件的
[ndbd]
或[ndbd default]
部分中指定config.ini
。介于0
和之间的值100
被解释为最大默认值的百分比,该值是根据许多因素计算得出的,这些因素包括表数量,最大表名大小,.FRM
文件最大大小MaxNoOfTriggers
,,最大列名大小和最大默认值列值。大于的值
100
将解释为字节数。默认值为25,即默认最大值的25%。
在大多数情况下,默认值应该足够,但是当您有很多
NDB
表(1000个或更多)时,有可能从字符串内存中获取错误773 ,请修改StringMemory配置参数:Permanent error:Schema error,在在这种情况下,您应该增加此值。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
列。该另一个表在example
表中的每条记录消耗额外的29个字节的索引内存,以及8个字节的记录数据和12个字节的开销。
因此,对于一百万条记录,我们需要58MB的索引内存来处理主键和唯一约束的哈希索引。我们还需要64MB用于基本表和唯一索引表以及两个有序索引表的记录。
您可以看到哈希索引占用了大量的内存空间。但是,它们提供了对数据的快速访问。它们还用于NDB群集中以处理唯一性约束。
当前,唯一的分区算法是哈希,并且有序索引对于每个节点而言都是本地的。因此,在一般情况下,有序索引不能用于处理唯一性约束。
两个重要的一点IndexMemory
和DataMemory
是总数据库大小为所有数据存储器和用于在每个节点组中的所有索引存储器的总和。每个节点组用于存储复制的信息,因此,如果有四个带有两个副本的节点,则将有两个节点组。因此,DataMemory
每个数据节点可用的总数据存储器为2×。
强烈建议DataMemory
,并IndexMemory
设置为所有节点的相同值。数据分布甚至遍及群集中的所有节点,因此任何节点可用的最大空间量不能大于群集中最小节点的空间量。
DataMemory
可以更改,但降低它可能会带来风险;这样做很容易导致节点或什至整个NDB群集由于内存空间不足而无法重新启动。增加这些值应该是可以接受的,但是建议以与软件升级相同的方式执行此类升级,首先是更新配置文件,然后重新启动管理服务器,然后依次重新启动每个数据节点。
MinFreePct。DataMemory
保留一定比例的数据节点资源(默认情况下为5%),以确保执行重新启动时数据节点不会耗尽其内存。可以使用MinFreePct
数据节点配置参数(默认值为5)进行调整。
该表提供了MinFreePct数据节点配置参数的类型和值信息
属性 | 值 |
---|---|
版本(或更高版本) | NDB 8.0.13 |
类型或单位 | 未签名 |
默认 | 5 |
范围 | 0-100 |
重新启动类型 | ñ |
更新不会增加使用的索引内存量。插入立即生效;但是,在提交事务之前,实际上不会删除行。
交易参数。[ndbd]
我们讨论的接下来的几个参数很重要,因为它们会影响并行事务的数量和系统可以处理的事务的大小。MaxNoOfConcurrentTransactions
设置节点中可能的并行事务数。MaxNoOfConcurrentOperations
设置可以处于更新阶段或同时锁定的记录数。
这两个参数(尤其是MaxNoOfConcurrentOperations
)都是用户设置特定值而不使用默认值的目标。为使用小事务的系统设置默认值,以确保这些事务不使用过多的内存。
MaxDMLOperationsPerTransaction
设置可以在给定事务中执行的DML操作的最大数量。
MaxNoOfConcurrentTransactions
该表提供了MaxNoOfConcurrentTransactions数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 4096 范围 32-4294967039(0xFFFFFEFF) 重新启动类型 ñ 每个集群数据节点都需要集群中每个活动事务的事务记录。协调事务的任务分布在所有数据节点之间。群集中的事务记录总数是任何给定节点中的事务数乘以群集中的节点数。
事务记录分配给各个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。
MaxNoOfConcurrentOperations
该表提供MaxNoOfConcurrentOperations数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 32K 范围 32-4294967039(0xFFFFFEFF) 重新启动类型 ñ 最好根据事务的大小和数量来调整此参数的值。当执行仅涉及少量操作和记录的事务时,此参数的默认值通常就足够了。执行涉及许多记录的大型事务通常需要您增加其价值。
在事务协调器和执行实际更新的节点中,都为每个事务更新群集数据保留记录。这些记录包含查找用于回滚,锁定队列和其他目的的UNDO记录所需的状态信息。
此参数应至少设置为要在事务中同时更新的记录数除以群集数据节点数。例如,在具有四个数据节点并且预期使用事务处理一百万个并发更新的群集中,应将此值设置为1000000/4 =250000。为帮助提供针对故障的弹性,建议您设置此值参数设置为足够高的值,以允许单个数据节点处理其节点组的负载。换句话说,您应该将值设置为等于
total number of concurrent operations / number of node groups
。(在有单个节点组的情况下,这与整个集群的并发操作总数相同。)因为每个事务总是涉及至少一个操作,所以的值
MaxNoOfConcurrentOperations
应始终大于或等于的值MaxNoOfConcurrentTransactions
。设置锁定的读取查询还会导致创建操作记录。在单个节点内分配了一些额外的空间,以适应节点上分配不理想的情况。
当查询使用唯一的哈希索引时,实际上在事务中每个记录使用两个操作记录。第一条记录代表索引表中的读取,第二条记录处理基表上的操作。
默认值为32768。
该参数实际上处理两个可以分别配置的值。其中的第一个指定将与事务协调器一起放置多少个操作记录。第二部分指定要在数据库本地存储多少个操作记录。
在八节点群集上执行的非常大的事务需要事务协调器中的操作记录与事务中涉及的读取,更新和删除一样多。但是,的操作记录分布在所有八个节点上。因此,如果有必要为一个非常大的事务配置系统,则最好分别配置两个部分。
MaxNoOfConcurrentOperations
将始终用于计算节点的事务协调器部分中的操作记录数。了解操作记录的存储要求也很重要。每条记录消耗大约1KB。
MaxNoOfLocalOperations
该表提供了MaxNoOfLocalOperations数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 未定义 范围 32-4294967039(0xFFFFFEFF) 重新启动类型 ñ 默认情况下,此参数计算为1.1×
MaxNoOfConcurrentOperations
。这适合具有许多同时事务的系统,但它们都不是很大。如果需要一次处理一个非常大的事务,并且有许多节点,则最好通过显式指定此参数来覆盖默认值。从NDB 8.0.19开始不推荐使用此参数,并且在以后的NDB Cluster版本中会删除该参数。另外,该参数与该
TransactionMemory
参数不兼容。如果您尝试在集群配置文件(config.ini
)中设置两个参数的值,则管理服务器将拒绝启动。MaxDMLOperationsPerTransaction
该表提供了MaxDMLOperationsPerTransaction数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 操作(DML) 默认 4294967295 范围 32-4294967295 重新启动类型 ñ 此参数限制事务的大小。如果事务需要的事务数量超过此许多DML操作,则中止该事务。每笔交易的最小操作数为32;但是,可以将其设置
MaxDMLOperationsPerTransaction
为0以禁用对每个事务DML操作数量的任何限制。最大值(默认)是4294967295。此参数的值不能超过为设置的值
MaxNoOfConcurrentOperations
。
交易临时存储。下一组[ndbd]
参数用于在执行作为Cluster事务一部分的语句时确定临时存储。语句完成并且集群正在等待提交或回滚时,将释放所有记录。
这些参数的默认值适用于大多数情况。但是,需要支持涉及大量行或操作的事务的用户可能需要增加这些值,以在系统中实现更好的并行性,而其应用程序要求较小事务的用户可以减少值以节省内存。
MaxNoOfConcurrentIndexOperations
该表提供了MaxNoOfConcurrentIndexOperations数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 8K 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 对于使用唯一哈希索引的查询,在查询的执行阶段将使用另一组临时的操作记录。此参数设置该记录池的大小。因此,仅在执行查询的一部分时才分配此记录。一旦执行了该部分,记录就会被释放。处理中止和提交所需的状态由正常操作记录处理,其中池大小由参数设置
MaxNoOfConcurrentOperations
。此参数的默认值为8192。仅在极少数情况下使用唯一的哈希索引的并行度极高时,才有必要增加此值。如果DBA确定集群不需要高度的并行性,则可以使用较小的值,并且可以节省内存。
从NDB 8.0.19开始不推荐使用此参数,并且在以后的NDB Cluster版本中会删除该参数。另外,该参数与该
TransactionMemory
参数不兼容。如果您尝试在集群配置文件(config.ini
)中设置两个参数的值,则管理服务器将拒绝启动。MaxNoOfFiredTriggers
该表提供了MaxNoOfFiredTriggers数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 4000 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 默认值为
MaxNoOfFiredTriggers
4000,对于大多数情况来说已经足够了。在某些情况下,如果DBA确信集群中对并行性的需求不高,那么甚至可以减少它。当执行影响唯一哈希索引的操作时,将创建一条记录。在具有唯一哈希索引的表中插入或删除记录,或更新作为唯一哈希索引一部分的列会在索引表中引发插入或删除操作。结果记录用于表示索引表操作,同时等待激发它的原始操作完成。此操作是短暂的,但是对于在包含一组唯一哈希索引的基表上进行许多并行写操作的情况下,它的池中仍需要大量记录。
从NDB 8.0.19开始不推荐使用此参数,并且在以后的NDB Cluster版本中会删除该参数。另外,该参数与该
TransactionMemory
参数不兼容。如果您尝试在集群配置文件(config.ini
)中设置两个参数的值,则管理服务器将拒绝启动。TransactionBufferMemory
该表提供了TransactionBufferMemory数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 个字节 默认 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
该表提供了ReservedConcurrentIndexOperations数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.16 类型或单位 数字 默认 0 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 在一个数据节点上具有专用资源的同时索引操作的数量。
ReservedConcurrentOperations
下表提供了ReservedConcurrentOperations数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.16 类型或单位 数字 默认 0 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 一个数据节点上的事务协调器中具有专用资源的并发操作数。
ReservedConcurrentScans
下表提供了ReservedConcurrentScans数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.16 类型或单位 数字 默认 0 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 在一个数据节点上具有专用资源的同时扫描数。
ReservedConcurrentTransactions
该表提供了ReservedConcurrentTransactions数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.16 类型或单位 数字 默认 0 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 在一个数据节点上具有专用资源的并发事务数。
ReservedFiredTriggers
下表提供了ReservedFiredTriggers数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.16 类型或单位 数字 默认 0 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 在一个ndbd(DB)节点上具有专用资源的触发器的数量。
ReservedLocalScans
该表提供了ReservedLocalScans数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.16 类型或单位 数字 默认 0 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 在一个数据节点上具有专用资源的同时片段扫描的数量。
ReservedTransactionBufferMemory
该表提供了ReservedTransactionBufferMemory数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.16 类型或单位 数字 默认 0 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 分配给每个数据节点的键和属性数据的动态缓冲区空间(以字节为单位)。
TransactionMemory
该表提供了TransactionMemory数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.19 类型或单位 个字节 默认 0 范围 0-16384G 重新启动类型 ñ 此参数确定为每个数据节点上的事务分配的内存(以字节为单位)。可以使用以下三种方式中的任何一种来处理事务内存的设置:
- 许多配置参数不兼容
TransactionMemory
(请参阅与TransactionMemory不兼容的参数)。如果设置了其中任何一个,则事务存储将按照NDB 8.0.19之前的版本进行计算。 - 如果
TransactionMemory
设置为,则此值用于确定事务存储。 - 如果既未设置也不
TransactionMemory
设置任何不兼容的参数,则将事务内存设置NDB
为DataMemory
配置参数值的10%。
与TransactionMemory不兼容的参数。从
TransactionMemory
NDB 8.0.19开始,以下参数不能与之同时使用,并且已弃用:MaxNoOfConcurrentIndexOperations
MaxNoOfFiredTriggers
MaxNoOfLocalOperations
MaxNoOfLocalScans
TransactionMemory
在集群配置文件(config.ini
)中也进行了设置时,明确设置刚刚列出的任何参数都将阻止管理节点启动。有关NDB群集数据节点中资源分配的更多信息,请参见“数据节点内存管理”。
- 许多配置参数不兼容
扫描和缓冲。模块中的其他[ndbd]
参数Dblqh
(中的ndb/src/kernel/blocks/Dblqh/Dblqh.hpp
)会影响读取和更新。其中包括ZATTRINBUF_FILESIZE
,默认情况下设置为10000×128字节(1250KB),以及ZDATABUF_FILE_SIZE
,默认情况下设置为10000 * 16字节(大约156KB)的缓冲区空间。迄今为止,既没有来自用户的任何报告,也没有来自我们自己广泛测试的结果表明,应该增加这两个编译时限制。
BatchSizePerLocalScan
该表提供了BatchSizePerLocalScan数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 256 范围 1-992 重新启动类型 ñ 此参数用于计算用于处理并发扫描操作的锁定记录的数量。
BatchSizePerLocalScan
BatchSize
与SQL节点中的定义有很强的联系。从NDB 8.0.19开始不推荐使用。
LongMessageBuffer
该表提供了LongMessageBuffer数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 个字节 默认 64M 范围 512K-4294967039(0xFFFFFEFF) 重新启动类型 ñ 这是一个内部缓冲区,用于在各个节点之间以及节点之间传递消息。默认值为64MB。
此参数很少需要从默认值更改。
MaxFKBuildBatchSize
该表提供了MaxFKBuildBatchSize数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 64 范围 16-512 重新启动类型 小号 用于构建外键的最大扫描批处理大小。增大为此参数设置的值可能会加快外键构建的建立,但会以更大的代价影响正在进行的通信。
MaxNoOfConcurrentScans
该表提供了MaxNoOfConcurrentScans数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 256 范围 2-500 重新启动类型 ñ 此参数用于控制可以在群集中执行的并行扫描的数量。每个事务协调器都可以处理为此参数定义的并行扫描的数量。通过并行扫描所有分区来执行每个扫描查询。每次分区扫描都使用分区所在节点中的扫描记录,记录数是此参数的值乘以节点数。群集应能够同时支持
MaxNoOfConcurrentScans
群集中所有节点的扫描。扫描实际上是在两种情况下执行的。当不存在任何哈希或有序索引来处理查询时,就会出现第一种情况,在这种情况下,查询是通过执行全表扫描来执行的。当没有哈希索引支持查询但有序索引时,遇到第二种情况。使用有序索引意味着执行并行范围扫描。该顺序仅保留在本地分区上,因此有必要在所有分区上执行索引扫描。
默认值为
MaxNoOfConcurrentScans
256。最大值为500。MaxNoOfLocalScans
该表提供了MaxNoOfLocalScans数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 [见文字] 范围 32-4294967039(0xFFFFFEFF) 重新启动类型 ñ 如果许多扫描未完全并行化,则指定本地扫描记录的数量。如果未提供本地扫描记录数,则按如下所示进行计算:
4 * MaxNoOfConcurrentScans * [# data nodes] + 2
从NDB 8.0.19开始不推荐使用此参数,并且在以后的NDB Cluster版本中会删除该参数。另外,该参数与该
TransactionMemory
参数不兼容。如果您尝试在集群配置文件(config.ini
)中设置两个参数的值,则管理服务器将拒绝启动。MaxParallelCopyInstances
该表提供了MaxParallelCopyInstances数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 0 范围 0-64 重新启动类型 小号 通过从当前节点上复制任何已更改的记录来复制当前刚刚启动的节点与已经具有当前数据的节点同步时,此参数设置在节点重新启动或系统重新启动的复制阶段中使用的并行化。因为在这种情况下完全并行会导致过载情况,所以
MaxParallelCopyInstances
提供了一种减少并行度的方法。此参数的默认值0。此值意味着有效的并行度等于节点中刚开始以及对其进行更新的LDM实例的数量。MaxParallelScansPerFragment
该表提供了MaxParallelScansPerFragment数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 个字节 默认 256 范围 1-4294967039(0xFFFFFEFF) 重新启动类型 ñ 可以在开始排队进行串行处理之前配置允许的最大并行扫描数(
TUP
扫描和TUX
扫描)。您可以增加此值,以在并行执行大量扫描时利用任何未使用的CPU并提高其性能。此参数的默认值为256。
MaxReorgBuildBatchSize
该表提供了MaxReorgBuildBatchSize数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 64 范围 16-512 重新启动类型 小号 用于重组表分区的最大扫描批处理大小。增大为此参数设置的值可能会加快重组速度,但会对正在进行的流量产生更大的影响。
MaxUIBuildBatchSize
该表提供了MaxUIBuildBatchSize数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 64 范围 16-512 重新启动类型 小号 用于构建唯一密钥的最大扫描批处理大小。增大为此参数设置的值可能会加快此类构建的速度,但以更大的代价影响正在进行的流量。
内存分配
MaxAllocate
该表提供了MaxAllocate数据节点配置参数的类型和值信息
属性 | 值 |
---|---|
版本(或更高版本) | NDB 8.0.13 |
类型或单位 | 未签名 |
默认 | 3200万 |
范围 | 1M-1G |
重新启动类型 | ñ |
这是为表分配内存时要使用的内存单元的最大大小。在情况下,NDB
给出了内存不足的错误,但它通过检查群集日志或输出是显而易见的DUMP 1000
所有可用内存还未被使用,可以增加这个参数的值(或MaxNoOfTables
,或两者)引起NDB
,使有足够的可用内存。
多个转运
从8.0.20版本开始,NDB
为数据节点对之间的通信分配多个传输器。通过NodeGroupTransporters
为该发行版中引入的参数设置适当的值,可以影响如此分配的转运蛋白的数量。
NodeGroupTransporters
该表提供了NodeGroupTransporters数据节点配置参数的类型和值信息
属性 | 值 |
---|---|
版本(或更高版本) | NDB 8.0.20 |
类型或单位 | 整数 |
默认 | 0 |
范围 | 0-32 |
重新启动类型 | ñ |
此参数确定同一节点组中的节点之间使用的传输器数量。默认值(0)表示所使用的传输器数量与节点中LDM的数量相同。对于大多数用例,这应该足够了;因此,几乎没有必要从默认值更改此值。
设置NodeGroupTransporters
为大于LDM线程数或TC线程数的数字(以较高者为准)将导致NDB
使用这两个线程数中的最大值。这意味着大于此值的值将被有效忽略。
哈希图大小
DefaultHashMapSize
下表提供DefaultHashMapSize数据节点配置参数的类型和值信息
属性 | 值 |
---|---|
版本(或更高版本) | NDB 8.0.13 |
类型或单位 | LDM线程 |
默认 | 240 |
范围 | 0-3840 |
重新启动类型 | ñ |
此参数的最初预期用途是促进具有不同默认哈希映射大小的非常老的版本之间的升级,尤其是降级。从NDB Cluster 7.3(或更高版本)升级到更高版本时,这不是问题。
DefaultHashMapSize
当前不支持在创建或修改等于3840的任何表之后在线减小此参数。
记录和检查点。以下[ndbd]
参数控制日志和检查点行为。
FragmentLogFileSize
下表提供FragmentLogFileSize数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 个字节 默认 1600万 范围 4M-1G 重新启动类型 在 设置此参数使您可以直接控制重做日志文件的大小。当NDB Cluster在高负载下运行并且在尝试打开新文件之前无法足够快地关闭片段日志文件(一次只能打开2个片段日志文件)时,这很有用。增加碎片日志文件的大小将使群集有更多时间才能打开每个新的碎片日志文件。该参数的默认值为16M。
有关片段日志文件的更多信息,请参见的描述
NoOfFragmentLogFiles
。InitialNoOfOpenFiles
该表提供InitialNoOfOpenFiles数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 档案 默认 27 范围 20-4294967039(0xFFFFFEFF) 重新启动类型 ñ 此参数设置要分配给打开文件的内部线程的初始数量。
默认值为27。
InitFragmentLogFiles
该表提供了InitFragmentLogFiles数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 [参见值] 默认 疏 范围 稀疏,完整 重新启动类型 在 默认情况下,片段日志文件是在执行数据节点的初始启动时稀疏创建的,也就是说,取决于所使用的操作系统和文件系统,不一定所有字节都必须写入磁盘。但是,可以忽略此行为,并通过此参数强制写入所有字节,而与使用的平台和文件系统类型无关。
InitFragmentLogFiles
取两个值之一:SPARSE
。片段日志文件是稀疏创建的。这是默认值。FULL
。强制将片段日志文件的所有字节写入磁盘。
根据您的操作系统和文件系统,此设置
InitFragmentLogFiles=FULL
可能有助于消除在写入REDO日志时出现的I / O错误。EnablePartialLcp
该表提供了EnablePartialLcp数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 布尔值 默认 真正 范围 ... 重新启动类型 ñ 当
true
启用时,启用部分本地检查点:这意味着每个LCP仅记录整个数据库的一部分,以及任何包含自上一个LCP以来已更改的行的记录;如果没有行更改,则LCP仅更新LCP控制文件,而不更新任何数据文件。如果
EnablePartialLcp
已禁用(false
),则每个LCP仅使用单个文件并写入完整的检查点;这需要最少数量的LCP磁盘空间,但会增加每个LCP的写入负载。默认值为启用(true
)。可以通过RecoveryWork
配置参数的设置来修改部分LCPS使用的空间比例。有关用于完整和部分LCP的文件和目录的更多信息,请参见 NDB群集数据节点文件系统目录文件。
将此参数设置为
false
也将禁用自适应LCP控制机制使用的磁盘写入速度的计算。LcpScanProgressTimeout
该表提供了LcpScanProgressTimeout数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 第二 默认 60 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 版本(或更高版本) NDB 8.0.19 类型或单位 第二 默认 180 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 本地检查点片段扫描看门狗会定期检查在作为本地检查点的一部分执行的每个片段扫描中是否没有进度,如果在经过给定的时间后没有进度,则关闭节点。可以使用
LcpScanProgressTimeout
数据节点配置参数来设置此间隔,该参数设置在LCP片段扫描看门狗关闭节点之前,本地检查点可以停止的最长时间。默认值为60秒(提供与以前版本的兼容性)。将此参数设置为0将完全禁用LCP片段扫描看门狗。
MaxNoOfOpenFiles
该表提供了MaxNoOfOpenFiles数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 未签名 默认 0 范围 20-4294967039(0xFFFFFEFF) 重新启动类型 ñ 此参数设置了为打开的文件分配多少个内部线程的上限。任何需要更改此参数的情况都应报告为bug。
默认值为0。但是,可以将此参数设置为的最小值为20。
MaxNoOfSavedMessages
该表提供了MaxNoOfSavedMessages数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 25 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 此参数设置写入错误日志的最大错误数以及覆盖现有文件之前保留的最大跟踪文件数。不管什么原因,节点崩溃都会生成跟踪文件。
默认值为25,它将这些最大值设置为25条错误消息和25个跟踪文件。
MaxLCPStartDelay
该表提供了MaxLCPStartDelay数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 秒 默认 0 范围 0-600 重新启动类型 ñ 在并行数据节点恢复中,实际上只有表数据被并行复制和同步;诸如字典和检查点信息之类的元数据的同步以串行方式完成。另外,字典和检查点信息的恢复不能与执行本地检查点并行执行。这意味着,在同时启动或重新启动许多数据节点时,在执行本地检查点时可能会迫使数据节点等待,这可能导致更长的节点恢复时间。
可以在本地检查点强制延迟,以允许更多(可能是所有)数据节点完成元数据同步。一旦每个数据节点的元数据同步完成,即使正在执行本地检查点,所有数据节点都可以并行恢复表数据。为了强加这种延迟,请设置set
MaxLCPStartDelay
,它确定群集在数据节点继续同步元数据时可以等待开始本地检查点的秒数。此参数应[ndbd default]
在config.ini
文件的部分中设置,以便所有数据节点都相同。最大值为600;默认值为0。NoOfFragmentLogFiles
该表提供了NoOfFragmentLogFiles数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 16 范围 3-4294967039(0xFFFFFEFF) 重新启动类型 在 此参数设置该节点的REDO日志文件的数量,从而设置分配给REDO日志的空间量。由于REDO日志文件是环形组织的,因此不符合集合中的第一个和最后一个日志文件(有时分别称为“ head ”和“ tail ”日志文件)非常重要。当这些方法彼此过于接近时,由于缺少新日志记录的空间,该节点开始中止所有包含更新的事务。
一个
REDO
日志记录不会被删除,直到两个要求各地检查站已完成自认为插入日志记录。检查点频率由本章其他地方讨论的其自己的配置参数集确定。默认参数值为16,默认情况下意味着16组4组16MB文件,总计1024MB。单个日志文件的大小可以使用
FragmentLogFileSize
参数进行配置。在需要大量更新的方案中,NoOfFragmentLogFiles
可能需要将的值设置为300甚至更高,以为REDO日志提供足够的空间。如果检查点很慢,并且对数据库的写操作太多,以致日志文件已满,并且在不损害恢复的情况下无法剪切日志尾部,则所有更新事务都会中止,并显示内部错误代码410(
Out of log file space temporarily
)。这种情况一直持续到检查点完成并且日志尾可以向前移动为止。重要
该参数不能“即时”更改;您必须使用重新启动节点
--initial
。如果希望为正在运行的集群中的所有数据节点更改此值,则可以使用滚动节点重新启动(--initial
在启动每个数据节点时使用)进行更改。RecoveryWork
该表提供了RecoveryWork数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 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 MByte的速度写入更改,则检查点需要以每秒约26.7 MByte的速度写入。设置
RecoveryWork
= 40意味着仅需要LCP总大小的1.4倍(因此,还原阶段所需的时间减少了10%到15%。在这种情况下,检查点写入速率是更改速率的3.5倍。NDB源代码分发包括用于模拟LCP的测试程序。
lcp_simulator.cc
可以在中找到storage/ndb/src/kernel/blocks/backup/
。要在Unix平台上编译并运行它,请执行以下命令:shell>
gcc lcp_simulator.cc shell>./a.out 该程序除之外没有其他依赖项
stdio.h
,并且不需要连接到NDB群集或MySQL服务器。默认情况下,它模拟300个LCP(三组,每组100个LCP,依次由插入,更新和删除组成),并在每个LCP之后报告LCP的大小。您可以通过改变值改变的模拟recovery_work
,insert_work
以及delete_work
在源和重新编译。有关更多信息,请参见程序源。InsertRecoveryWork
该表提供InsertRecoveryWork数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 40 范围 0-70 重新启动类型 ñ RecoveryWork
用于插入行的百分比。较高的值将增加本地检查点期间的写入次数,并减小LCP的总大小。较低的值会减少LCP期间的写入次数,但会导致LCP使用更多的空间,这意味着恢复需要更长的时间。该参数仅在EnablePartialLcp
为true 时才有效,也就是说,仅在启用了局部局部检查点时才有效。EnableRedoControl
该表提供了EnableRedoControl数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 布尔值 默认 假 范围 ... 重新启动类型 ñ 启用自适应检查点速度以控制重做日志的使用。设置为
false
禁用(默认)。设置EnablePartialLcp
为false
也会禁用自适应计算。启用后,
EnableRedoControl
允许数据节点在将LCP写入磁盘的速率方面具有更大的灵活性。更具体地说,启用此参数意味着可以采用更高的写入速率,从而可以完成LCP并更快速地修剪重做日志,从而减少了恢复时间和磁盘空间需求。此功能使数据节点可以更好地利用更高的I / O速率和现代固态存储设备和协议(例如使用非易失性内存Express(NVMe)的固态驱动器(SSD))可用的更大带宽。false
由于NDB
相对于采用固态技术的系统(例如,使用传统硬盘(HDD)的系统),I / O或带宽受到限制的系统仍广泛部署,因此该参数当前默认为(禁用)。在此类设置中,EnableRedoControl
这种机制很容易导致I / O子系统饱和,从而增加了数据节点输入和输出的等待时间。特别是,这可能导致NDB磁盘数据表出现问题,这些表具有表空间或日志文件组,这些表空间或日志文件组与数据节点LCP和重做日志文件共享受约束的IO子系统;此类问题可能包括由于GCP停止错误导致的节点或群集故障。
元数据对象。下一组[ndbd]
参数定义元数据对象的池大小,用于定义索引,事件和集群之间复制所使用的最大属性,表,索引和触发器对象。
注意这些仅作为对群集的“建议”,未指定的任何内容都将还原为所示的默认值。
MaxNoOfAttributes
该表提供了MaxNoOfAttributes数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 1000 范围 32-4294967039(0xFFFFFEFF) 重新启动类型 ñ 此参数设置可以在群集中定义的建议的最大属性数。像一样
MaxNoOfTables
,它并不是要用作硬上限。(在较早的NDB Cluster版本中,此参数有时被视为某些操作的硬性限制。这会导致NDB Cluster Replication出现问题,这是因为它可能创建比复制更多的表,并且有时会导致混乱。(或根据情况可能无法创建)以创建多个
MaxNoOfAttributes
属性。)默认值为1000,最小值为32。最大值为4294967039。每个属性在每个节点上消耗大约200字节的存储空间,原因是所有元数据都已在服务器上完全复制。
设置时
MaxNoOfAttributes
,预先准备ALTER TABLE
将来可能要执行的任何语句很重要。这是由于这样的事实,在ALTER TABLE
群集表上执行期间,使用的属性数量是原始表中属性的3倍,并且一种好的做法是允许该数量增加一倍。例如,如果具有最大数量的属性(greatest_number_of_attributes
)的NDB群集表具有100个属性,则值的一个很好的起点MaxNoOfAttributes
将是。6 *greatest_number_of_attributes= 600
您还应该估算每个表的平均属性数,并将其乘以
MaxNoOfTables
。如果此值大于上一段中获得的值,则应改用较大的值。假设您可以创建所有所需的表而没有任何问题,则还应该通过
ALTER TABLE
在配置参数后尝试实际值来验证此数目是否足够。如果这样做不成功,请再增加MaxNoOfAttributes
一个倍数MaxNoOfTables
并再次进行测试。MaxNoOfTables
该表提供了MaxNoOfTables数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 128 范围 8-20320 重新启动类型 ñ 表对象分配给群集中的每个表和每个唯一的哈希索引。此参数为群集整体设置建议的最大表对象数。像一样
MaxNoOfAttributes
,它并不是要用作硬上限。(在较早的NDB Cluster版本中,此参数有时被视为某些操作的硬性限制。这会导致NDB Cluster Replication出现问题,这是因为它可能创建比复制更多的表,并且有时会导致混乱。(或视情况而定)创建多个
MaxNoOfTables
表。)对于具有
BLOB
数据类型的每个属性,都使用一个额外的表来存储大多数BLOB
数据。定义表总数时,还必须考虑这些表。此参数的默认值为128。最小值为8,最大值为20320。每个表对象每个节点大约消耗20KB。
注意
的总和
MaxNoOfTables
,MaxNoOfOrderedIndexes
和MaxNoOfUniqueHashIndexes
不得超过(4294967294)。232− 2
MaxNoOfOrderedIndexes
该表提供了MaxNoOfOrderedIndexes数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 128 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 对于集群中的每个有序索引,将分配一个对象,该对象描述正在索引的内容及其存储段。默认情况下,如此定义的每个索引还定义一个有序索引。每个唯一索引和主键都具有有序索引和哈希索引。
MaxNoOfOrderedIndexes
设置可以一次在系统中使用的有序索引总数。此参数的默认值为128。每个索引对象每个节点消耗大约10KB的数据。
注意
的总和
MaxNoOfTables
,MaxNoOfOrderedIndexes
和MaxNoOfUniqueHashIndexes
不得超过(4294967294)。232− 2
MaxNoOfUniqueHashIndexes
该表提供了MaxNoOfUniqueHashIndexes数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 64 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 对于不是主键的每个唯一索引,都会分配一个特殊表,该表将唯一键映射到索引表的主键。默认情况下,还会为每个唯一索引定义一个有序索引。为防止这种情况,
USING HASH
在定义唯一索引时必须指定选项。默认值为64。每个索引每个节点大约消耗15KB。
注意
的总和
MaxNoOfTables
,MaxNoOfOrderedIndexes
和MaxNoOfUniqueHashIndexes
不得超过(4294967294)。232− 2
MaxNoOfTriggers
该表提供了MaxNoOfTriggers数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 768 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 内部更新,插入和删除触发器分配给每个唯一的哈希索引。(这意味着将为每个唯一的哈希索引创建三个触发器。)但是,有序索引仅需要单个触发器对象。备份还为群集中的每个普通表使用三个触发器对象。
群集之间的复制还利用内部触发器。
此参数设置集群中触发器对象的最大数量。
默认值为768。
MaxNoOfSubscriptions
该表提供了MaxNoOfSubscriptions数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 未签名 默认 0 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ NDB
NDB群集中的每个表都需要在NDB内核中进行预订。对于某些NDB API应用程序,可能有必要或希望更改此参数。但是,对于正常使用MySQL服务器作为SQL节点的情况,则不需要这样做。的默认值
MaxNoOfSubscriptions
是0,它等于MaxNoOfTables
。每个订阅占用108个字节。MaxNoOfSubscribers
该表提供了MaxNoOfSubscribers数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 未签名 默认 0 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 仅当使用NDB群集复制时,此参数才有意义。默认值为0,被视为
2 * MaxNoOfTables
;也就是说,NDB
两个MySQL服务器(一个充当复制主服务器,另一个充当从属服务器)每个表有一个预订。每个订户使用16个字节的内存。当使用循环复制,多主复制和涉及两个以上MySQL服务器的其他复制设置时,应将此参数增加到复制中包含的mysqld进程数(通常但不总是与复制数相同)。集群)。例如,如果您有一个使用三个NDB Cluster的循环复制设置,并且每个集群都附有一个mysqld,并且每个mysqld进程分别充当主服务器和从服务器,则应将其设置
MaxNoOfSubscribers
为3 * MaxNoOfTables
。有关更多信息,请参见“ NDB群集复制”。
MaxNoOfConcurrentSubOperations
该表提供了MaxNoOfConcurrentSubOperations数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 未签名 默认 256 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 此参数设置了群集中所有API节点一次可以执行的操作数的上限。默认值(256)对于正常操作是足够的,并且仅在存在大量API节点且每个API节点同时执行大量操作的情况下才可能需要调整默认值。
布尔参数。数据节点的行为还受到采用[ndbd]
布尔值的一组参数的影响。这些参数可以分别指定为TRUE
将其设定等于1
或Y
,并且如FALSE
将其设定等于0
或N
。
CompressedBackup
该表提供了CompressedBackup数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 布尔值 默认 假 范围 真假 重新启动类型 ñ 启用此参数将导致备份文件被压缩。所使用的压缩等效于gzip --fast,并且可以节省数据节点上存储未压缩备份文件所需的50%或更多空间。可以为单个数据节点或所有数据节点启用压缩备份(通过
[ndbd default]
在config.ini
文件部分中设置此参数)。重要
您无法将压缩备份还原到运行不支持此功能的MySQL版本的群集。
默认值为
0
(禁用)。CompressedLCP
该表提供了CompressedLCP数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 布尔值 默认 假 范围 真假 重新启动类型 ñ 设置此参数将
1
导致本地检查点文件被压缩。所使用的压缩等效于gzip --fast,并且可以节省数据节点上存储未压缩检查点文件所需的50%或更多空间。可以为单个数据节点或所有数据节点启用压缩LCP(通过[ndbd default]
在config.ini
文件部分中设置此参数)。重要
您无法将压缩的本地检查点还原到运行不支持此功能的MySQL版本的群集。
默认值为
0
(禁用)。CrashOnCorruptedTuple
该表提供了CrashOnCorruptedTuple数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 布尔值 默认 真正 范围 真假 重新启动类型 小号 启用此参数(默认值)后,它会在遇到损坏的元组时强制关闭数据节点。
Diskless
该表提供了“无盘数据节点”配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 真|假(1 | 0) 默认 假 范围 真假 重新启动类型 是 可以将NDB群集表指定为无磁盘,这意味着这些表不会被检查点指向磁盘,并且不会发生任何日志记录。这样的表仅存在于主存储器中。使用无盘表的结果是,表或这些表中的记录都不会崩溃。但是,以无盘模式运行时,可以在无盘计算机上运行ndbd。
重要
此功能使整个群集以无盘模式运行。
启用此功能后,将禁用群集联机备份。此外,无法部分启动群集。
Diskless
默认情况下处于禁用状态。LateAlloc
该表提供LateAlloc数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 数字 默认 1个 范围 0-1 重新启动类型 ñ 建立与管理服务器的连接后,为此数据节点分配内存。默认启用。
LockPagesInMainMemory
该表提供了LockPagesInMainMemory数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 数字 默认 0 范围 0-2 重新启动类型 ñ 对于许多操作系统,包括Solaris和Linux,可以将进程锁定在内存中,从而避免任何交换到磁盘的情况。这可以用来帮助确保群集的实时特性。
此参数采用整数值
0
,1
或之一2
,其作用如下表所示:0
:禁用锁定。这是默认值。1
:在为进程分配内存后执行锁定。2
:在为进程分配内存之前执行锁定。
如果未将操作系统配置为允许非特权用户锁定页面,则使用此参数的数据节点进程可能必须作为系统根目录运行。(
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 8.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
。ODirect
该表提供了ODirect数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 布尔值 默认 假 范围 真假 重新启动类型 ñ 启用此参数会导致
NDB
尝试O_DIRECT
对LCP,备份和重做日志使用写操作,这通常会降低kswapd和CPU使用率。在Linux上使用NDB Cluster时,ODirect
如果使用的是2.6或更高版本的内核,请启用。ODirect
默认情况下处于禁用状态。ODirectSyncFlag
该表提供了ODirectSyncFlag数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 布尔值 默认 假 范围 真假 重新启动类型 ñ 启用此参数后,将执行重做日志写操作,以使每个完成的文件系统写操作都作为对的调用来处理
fsync
。如果至少满足以下条件之一,则忽略此参数的设置:ODirect
未启用。InitFragmentLogFiles
设置为SPARSE
。
默认禁用。
RestartOnErrorInsert
下表提供RestartOnErrorInsert数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 错误代码 默认 2 范围 0-4 重新启动类型 ñ 仅当构建调试版本时才可以使用此功能,在调试版本中,可能会在测试的一部分中在执行各个代码块时插入错误。
默认情况下禁用此功能。
StopOnError
该表提供StopOnError数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 布尔值 默认 1个 范围 0,1 重新启动类型 ñ 此参数指定遇到错误条件时是退出数据节点进程还是执行自动重启。
此参数的默认值为1;默认值为1。这意味着默认情况下,错误会导致数据节点进程停止。
当遇到错误且错误为
StopOnError
0时,数据节点进程将重新启动。MySQL Cluster Manager的用户应注意,当
StopOnError
等于1时,这将防止MySQL Cluster Manager代理在执行自己的重新启动和恢复后重新启动任何数据节点。有关更多信息,请参见在Linux上启动和停止代理。UseShm
该表提供了UseShm数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 布尔值 默认 假 范围 真假 重新启动类型 小号 启用此数据节点和也在此主机上运行的API节点之间的共享内存连接。设置为1启用。
控制超时,间隔和磁盘分页
有许多[ndbd]
参数指定群集数据节点中各种操作之间的超时和间隔。大多数超时值以毫秒为单位指定。在适用的地方会提及任何例外情况。
TimeBetweenWatchDogCheck
该表提供了TimeBetweenWatchDogCheck数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 毫秒 默认 6000 范围 70-4294967039(0xFFFFFEFF) 重新启动类型 ñ 为了防止主线程在某个时刻陷入无限循环,“看门狗”线程会检查主线程。此参数指定两次检查之间的毫秒数。如果经过三次检查,进程仍保持相同状态,则看门狗线程将终止它。
出于实验目的或适应当地条件,可以轻松更改此参数。尽管似乎没有什么理由,但可以基于每个节点进行指定。
默认超时为6000毫秒(6秒)。
TimeBetweenWatchDogCheckInitial
该表提供了TimeBetweenWatchDogCheckInitial数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 毫秒 默认 6000 范围 70-4294967039(0xFFFFFEFF) 重新启动类型 ñ 该
TimeBetweenWatchDogCheck
参数与参数相似,除了TimeBetweenWatchDogCheckInitial
在分配内存的早期启动阶段中控制存储节点内部执行检查之间经过的时间量之外。默认超时为6000毫秒(6秒)。
StartPartialTimeout
该表提供了StartPartialTimeout数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 毫秒 默认 30000 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 此参数指定在调用集群初始化例程之前,集群等待所有数据节点出现的时间。此超时用于避免集群的部分启动。
在执行群集的初始启动或初始重新启动时,将覆盖此参数。
默认值为30000毫秒(30秒)。0禁用超时,在这种情况下,只有在所有节点都可用时群集才能启动。
StartPartitionedTimeout
该表提供了StartPartitionedTimeout数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 毫秒 默认 0 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 如果群集在等待
StartPartialTimeout
毫秒后已准备好启动,但仍可能处于分区状态,则群集将等待直到该超时也过去。如果StartPartitionedTimeout
设置为0,则群集无限期等待(2 32-1 ms,或大约49.71天)。在执行群集的初始启动或初始重新启动时,将覆盖此参数。
StartFailureTimeout
该表提供了StartFailureTimeout数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 毫秒 默认 0 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 如果数据节点在此参数指定的时间内未完成其启动顺序,则该节点启动失败。将此参数设置为0(默认值)意味着不应用数据节点超时。
对于非零值,此参数以毫秒为单位。对于包含大量数据的数据节点,应增加此参数。例如,在数据节点包含数GB数据的情况下,执行节点重新启动可能需要长达10-15分钟(即600000到1000000毫秒)的时间。
StartNoNodeGroupTimeout
该表提供了StartNoNodeGroupTimeout数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 毫秒 默认 15000 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 当数据节点配置有时
Nodegroup = 65536
,被视为未分配给任何节点组。完成此操作后,群集将等待StartNoNodegroupTimeout
毫秒,然后将这些节点视为已将它们添加到传递给该--nowait-nodes
选项的列表中,然后启动。默认值为15000
(即,管理服务器等待15秒)。将此参数设置为等于0
意味着群集无限期等待。StartNoNodegroupTimeout
集群中的所有数据节点必须相同;因此,您应该始终[ndbd default]
在config.ini
文件的部分中进行设置,而不是针对单个数据节点进行设置。有关更多信息,请参见“在线添加NDB群集数据节点”。
HeartbeatIntervalDbDb
该表提供了HeartbeatIntervalDbDb数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 毫秒 默认 5000 范围 10-4294967039(0xFFFFFEFF) 重新启动类型 ñ 发现故障节点的主要方法之一是使用心跳。此参数说明发送心跳信号的频率以及期望接收它们的频率。心跳不能被禁用。
连续丢失四个心跳间隔后,该节点被宣布为死亡。因此,通过心跳机制发现故障的最大时间是心跳间隔的五倍。
默认的心跳间隔是5000毫秒(5秒)。此参数不得大幅度更改,并且节点之间的更改范围不得太大。如果一个节点使用5000毫秒,而观察该节点的节点使用1000毫秒,则显然该节点将很快被宣告死亡。可以在在线软件升级期间更改此参数,但只能以较小的增量进行更改。
另请参阅网络通信和延迟以及
ConnectCheckIntervalDelay
配置参数的描述。HeartbeatIntervalDbApi
该表提供了HeartbeatIntervalDbApi数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 毫秒 默认 1500 范围 100-4294967039(0xFFFFFEFF) 重新启动类型 ñ 每个数据节点向每个MySQL服务器(SQL节点)发送心跳信号,以确保其保持联系。如果MySQL服务器未能及时发送心跳,则将其声明为“死机”,在这种情况下,所有正在进行的事务都将完成,所有资源都将释放。在完成由先前的MySQL实例启动的所有活动之前,SQL节点无法重新连接。用于该确定的三个心跳标准与所描述的相同
HeartbeatIntervalDbDb
。默认间隔为1500毫秒(1.5秒)。该间隔在各个数据节点之间可能会有所不同,因为每个数据节点独立于所有其他数据节点监视与其连接的MySQL服务器。
有关更多信息,请参阅网络通信和延迟。
HeartbeatOrder
该表提供了HeartbeatOrder数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 数字 默认 0 范围 0-65535 重新启动类型 小号 数据节点以循环方式相互发送心跳,由此每个数据节点监视前一个。如果给定的数据节点未检测到心跳,则此节点将圆圈中的前一个数据节点声明为“死”(也就是说,群集不再可访问)。全局确定数据节点已死。换一种说法;一旦数据节点被声明为死节点,群集中的所有节点都将其视为死节点。
与其他成对节点之间的心跳相比,驻留在不同主机上的数据节点之间的心跳可能会太慢(例如,由于心跳间隔很短或临时连接问题所致),因此数据节点被宣布为死亡,即使该节点仍可以充当群集的一部分。。
在这种情况下,可能是在数据节点之间传输心跳的顺序会影响特定数据节点是否被宣告死亡。如果此声明不必要地发生,则可能反过来导致节点组的不必要丢失,从而导致集群故障。
考虑一个设置,其中在2台主机
host1
和上运行4个数据节点A,B,C和Dhost2
,并且这些数据节点组成2个节点组,如下表所示:在两个主机host1,host2上运行的四个数据节点A,B,C,D;每个数据节点都属于两个节点组之一。
节点组 运行节点 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
如下所示的值:HeartbeatOrder值用于强制心跳过渡顺序为A-> B-> D-> C-> A。
节点 HeartbeatOrder
值一种 10 乙 20 C 30 d 25 要使用此参数来更改正在运行的NDB群集中的心跳传输顺序,必须首先
HeartbeatOrder
在一个config.ini
或多个全局配置()文件中为群集中的每个数据节点设置。要使更改生效,您必须执行以下任一操作:- 完全关闭并重新启动整个集群。
- 集群连续2次滚动重启。在两次滚动重新启动中,必须以相同顺序重新启动所有节点。
您可以用来
DUMP 908
在数据节点日志中观察此参数的效果。ConnectCheckIntervalDelay
该表提供ConnectCheckIntervalDelay数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 毫秒 默认 0 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 此参数启用数据节点之一的心跳检查失败后(最多5
HeartbeatIntervalDbDb
毫秒)的5个间隔,从而启用数据节点之间的连接检查。这样的数据节点在
ConnectCheckIntervalDelay
毫秒的间隔内进一步无法响应,被认为是可疑的,并且在两个这样的间隔之后被认为是死亡的。这在具有已知延迟问题的设置中很有用。此参数的默认值为0(禁用)。
TimeBetweenLocalCheckpoints
该表提供TimeBetweenLocalCheckpoints数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 4字节字的数量,以2为底的对数 默认 20 范围 0-31 重新启动类型 ñ 此参数是一个例外,因为它没有指定开始新的本地检查点之前要等待的时间。相反,它用于确保在更新相对较少的集群中不执行本地检查点。在大多数具有高更新率的集群中,很可能在前一个检查点完成后立即启动新的本地检查点。
自从先前的本地检查点开始以来执行的所有写操作的大小将被添加。此参数也很特殊,因为它被指定为4字节字数的以2为底的对数,因此默认值20表示4MB(4×2 20)的写操作,21表示8MB,等等。最大值为31,相当于8GB的写操作。
集群中的所有写操作都被加在一起。设置
TimeBetweenLocalCheckpoints
为6或更少意味着本地检查点将连续执行而不会暂停,而与群集的工作负载无关。TimeBetweenGlobalCheckpoints
该表提供了TimeBetweenGlobalCheckpoints数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 毫秒 默认 2000 范围 20-32000 重新启动类型 ñ 提交事务后,会将其提交到镜像数据所在的所有节点的主内存中。但是,事务日志记录不会作为提交的一部分刷新到磁盘。此行为背后的原因是,至少在两台自主主机上安全地执行事务应该符合合理的持久性标准。
确保即使是最坏的情况(集群完全崩溃)也必须得到正确处理,这一点也很重要。为了确保发生这种情况,将在给定间隔内发生的所有事务放入全局检查点,可以将其视为已刷新到磁盘的一组已提交事务。换句话说,作为提交过程的一部分,将事务放置在全局检查点组中。稍后,该组的日志记录将刷新到磁盘,然后将整个事务组安全地提交到群集中所有计算机上的磁盘。
在NDB 8.0.19及更高版本中,建议在将固态磁盘(尤其是使用NVMe的磁盘)与“磁盘数据”表一起使用时,减小该值。在这种情况下,还应确保将
MaxDiskDataLatency
其设置为适当的水平。此参数定义全局检查点之间的间隔。默认值为2000毫秒。
TimeBetweenGlobalCheckpointsTimeout
该表提供了TimeBetweenGlobalCheckpointsTimeout数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 毫秒 默认 120000 范围 10-4294967039(0xFFFFFEFF) 重新启动类型 ñ 此参数定义全局检查点之间的最小超时。默认值为120000毫秒。
TimeBetweenEpochs
该表提供了TimeBetweenEpochs数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 毫秒 默认 100 范围 0-32000 重新启动类型 ñ 此参数定义NDB群集复制的同步时间间隔。默认值为100毫秒。
TimeBetweenEpochs
是“ micro-GCP ”实施的一部分,可用于提高NDB群集复制的性能。TimeBetweenEpochsTimeout
该表提供TimeBetweenEpochsTimeout数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 毫秒 默认 0 范围 0-256000 重新启动类型 ñ 此参数为NDB群集复制的同步时期定义超时。如果节点在此参数确定的时间内未能参加全局检查点,则该节点将关闭。默认值为0;默认值为0。换句话说,超时被禁用。
TimeBetweenEpochsTimeout
是“ micro-GCP ”实施的一部分,可用于提高NDB群集复制的性能。每当GCP保存时间超过1分钟或GCP提交时间超过10秒时,此参数的当前值和警告就会写入群集日志。
将此参数设置为零具有禁用由保存超时和/或提交超时引起的GCP停止的效果。此参数的最大可能值为256000毫秒。
MaxBufferedEpochs
该表提供了MaxBufferedEpochs数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 时代 默认 100 范围 0-100000 重新启动类型 ñ 订阅节点可能滞后的未处理时期数。超过此数字将导致滞后的订户断开连接。
对于大多数正常操作,默认值100就足够了。如果订阅节点的滞后时间足以导致断开连接,则通常是由于与进程或线程有关的网络或调度问题。(在极少数情况下,问题可能是由于
NDB
客户端中的错误引起的。)当历时较长时,可能希望将值设置为低于默认值。断开连接可防止客户端问题影响数据节点服务,用尽内存来缓冲数据并最终关闭。相反,断开连接只会影响客户端(例如,通过二进制日志中的间隔事件),从而迫使客户端重新连接或重新启动该过程。
MaxBufferedEpochBytes
该表提供了MaxBufferedEpochBytes数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 个字节 默认 26214400 范围 26214400(0x01900000)-4294967039(0xFFFFFEFF) 重新启动类型 ñ 该节点分配给缓冲时期的总字节数。
TimeBetweenInactiveTransactionAbortCheck
该表提供了TimeBetweenInactiveTransactionAbortCheck数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 毫秒 默认 1000 范围 1000-4294967039(0xFFFFFEFF) 重新启动类型 ñ 通过为此参数指定的每个时间间隔检查一次每个事务上的计时器来执行超时处理。因此,如果将此参数设置为1000毫秒,则会检查每个事务每秒是否超时。
默认值为1000毫秒(1秒)。
TransactionInactiveTimeout
该表提供了TransactionInactiveTimeout数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 毫秒 默认 [见文字] 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 此参数说明在中止事务之前允许在同一事务中的两次操作之间经过的最长时间。
此参数的默认值为
4G
(也是最大值)。对于需要确保没有事务保持锁定时间太长的实时数据库,应将此参数设置为一个较小的值。将其设置为0意味着应用程序永不超时。单位为毫秒。TransactionDeadlockDetectionTimeout
该表提供了TransactionDeadlockDetectionTimeout数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 毫秒 默认 1200 范围 50-4294967039(0xFFFFFEFF) 重新启动类型 ñ 当节点执行涉及事务的查询时,该节点在继续之前等待集群中的其他节点响应。此参数设置事务可以花费在数据节点上执行的时间,即事务协调器等待参与事务的每个数据节点执行请求的时间。
出于以下任何原因均可导致无法响应:
- 节点“死机”
- 该操作已进入锁定队列
- 请求执行该操作的节点可能会严重过载。
此超时参数说明事务协调器在中止事务之前等待另一个节点执行查询的时间,对于节点故障处理和死锁检测都很重要。
默认超时值为1200毫秒(1.2秒)。
此参数的最小值为50毫秒。
DiskSyncSize
该表提供了DiskSyncSize数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 个字节 默认 4M 范围 32K-4294967039(0xFFFFFEFF) 重新启动类型 ñ 这是在将数据刷新到本地检查点文件之前要存储的最大字节数。这样做是为了防止写缓冲,写缓冲可能会严重影响性能。此参数不能代替
TimeBetweenLocalCheckpoints
。注意
当
ODirect
启用时,它是没有必要设置DiskSyncSize
;实际上,在这种情况下,它的值只是被忽略了。默认值为4M(4兆字节)。
MaxDiskWriteSpeed
该表提供了MaxDiskWriteSpeed数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 数字 默认 20M 范围 1M-1024G 重新启动类型 小号 在此NDB群集中没有进行任何重新启动时(通过此数据节点或任何其他数据节点),通过本地检查点和备份操作设置写入磁盘的最大速率,以每秒字节数为单位。
要设置此数据节点重新启动时允许的最大磁盘写入速率,请使用
MaxDiskWriteSpeedOwnRestart
。要设置在其他数据节点重新启动时允许的最大磁盘写入速率,请使用MaxDiskWriteSpeedOtherNodeRestart
。可以通过设置来调整所有LCP进行磁盘写入和备份操作的最低速度MinDiskWriteSpeed
。MaxDiskWriteSpeedOtherNodeRestart
该表提供了MaxDiskWriteSpeedOtherNodeRestart数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 数字 默认 50公尺 范围 1M-1024G 重新启动类型 小号 当此NDB群集中的一个或多个数据节点重新启动时,以本地检查点和备份操作设置每秒写入磁盘的最大速率(以字节为单位),而不是该节点。
要设置此数据节点重新启动时允许的最大磁盘写入速率,请使用
MaxDiskWriteSpeedOwnRestart
。要设置没有数据节点重新启动集群中任何位置时允许的最大磁盘写入速率,请使用MaxDiskWriteSpeed
。可以通过设置来调整所有LCP进行磁盘写入和备份操作的最低速度MinDiskWriteSpeed
。MaxDiskWriteSpeedOwnRestart
该表提供了MaxDiskWriteSpeedOwnRestart数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 数字 默认 200M 范围 1M-1024G 重新启动类型 小号 在此数据节点重新启动时,通过本地检查点和备份操作设置每秒写入磁盘的最大速率(以字节为单位)。
要设置在其他数据节点重新启动时允许的最大磁盘写入速率,请使用
MaxDiskWriteSpeedOtherNodeRestart
。要设置没有数据节点重新启动集群中任何位置时允许的最大磁盘写入速率,请使用MaxDiskWriteSpeed
。可以通过设置来调整所有LCP进行磁盘写入和备份操作的最低速度MinDiskWriteSpeed
。MinDiskWriteSpeed
该表提供了MinDiskWriteSpeed数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 数字 默认 10M 范围 1M-1024G 重新启动类型 小号 通过本地检查点和备份操作设置写入磁盘的最小速率,以每秒字节数为单位。
磁盘的最大速率允许写入数的LCP和在各种条件下的备份使用参数是可调的
MaxDiskWriteSpeed
,MaxDiskWriteSpeedOwnRestart
和MaxDiskWriteSpeedOtherNodeRestart
。有关更多信息,请参见这些参数的描述。ArbitrationTimeout
该表提供ArbitrationTimeout数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 毫秒 默认 7500 范围 10-4294967039(0xFFFFFEFF) 重新启动类型 ñ 此参数指定数据节点等待仲裁程序对仲裁消息的响应的时间。如果超出此范围,则认为网络已分裂。
默认值为7500毫秒(7.5秒)。
Arbitration
该表提供仲裁数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 列举 默认 默认 范围 默认,禁用,等待外部 重新启动类型 ñ 该
Arbitration
参数允许选择仲裁方案,该方案对应于此参数的3个可能值之一:- 默认。
ArbitrationRank
根据管理和API节点的设置,这可以使仲裁正常进行。这是默认值。 - 已禁用。
Arbitration = Disabled
在文件的[ndbd default]
部分中进行设置config.ini
可以完成与ArbitrationRank
在所有管理和API节点上设置为0 相同的任务。当Arbitration
以这种方式设置,任何ArbitrationRank
设置将被忽略。 - WaitExternal。该
Arbitration
参数还可以通过以下方式配置仲裁:集群等待,直到经过确定的时间后,ArbitrationTimeout
外部集群管理器应用程序才可以执行仲裁,而不是在内部进行仲裁。可以通过Arbitration = WaitExternal
在文件的[ndbd default]
部分中进行设置来完成config.ini
。为了获得最佳WaitExternal
设置效果,建议ArbitrationTimeout
是外部集群管理器执行仲裁所需时间间隔的2倍。
重要
仅在
[ndbd default]
群集配置文件的部分中使用此参数。当Arbitration
为各个数据节点设置不同的值时,群集的行为是不确定的。- 默认。
RestartSubscriberConnectTimeout
该表提供了RestartSubscriberConnectTimeout数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 女士 默认 12000 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 小号 此参数确定数据节点等待订阅API节点进行连接的时间。一旦该超时时间到期,所有“丢失的” API节点都将与集群断开连接。要禁用此超时,请设置
RestartSubscriberConnectTimeout
为0。虽然以毫秒为单位指定了此参数,但超时本身被解析为倒数第二大的秒。
缓冲和记录。几个[ndbd]
配置参数使高级用户可以更好地控制节点进程使用的资源,并根据需要调整各种缓冲区大小。
在将日志记录写入磁盘时,这些缓冲区用作文件系统的前端。如果节点在无盘模式下运行,这些参数可以设置为不处罚他们的最低值,由于这样的事实:磁盘写入“伪造”由NDB
存储引擎的文件系统抽象层。
UndoIndexBuffer
该表提供UndoIndexBuffer数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 未签名 默认 2M 范围 1M-4294967039(0xFFFFFEFF) 重新启动类型 ñ 在本地检查点期间使用由该参数设置大小的UNDO索引缓冲区。的
NDB
存储引擎使用基于结合运算REDO日志检查点稠度的恢复方案。为了在不阻塞整个系统进行写入的情况下产生一致的检查点,请在执行本地检查点时执行UNDO日志记录。一次在一个表片段上激活UNDO日志记录。这种优化是可行的,因为表完全存储在主存储器中。UNDO索引缓冲区用于更新主键哈希索引。插入和删除重新排列哈希索引;NDB存储引擎会写入UNDO日志记录,这些记录将所有物理更改映射到索引页,以便可以在系统重新启动时撤消它们。它还会在本地检查点开始时记录每个片段的所有活动插入操作。
读取和更新设置的锁定位,并更新哈希索引条目中的标头。这些更改由页面编写算法处理,以确保这些操作不需要UNDO日志记录。
默认情况下,此缓冲区为2MB。最小值为1MB,对于大多数应用程序来说已足够。对于执行非常大或大量插入和删除以及大事务和大主键的应用程序,可能有必要增加此缓冲区的大小。如果该缓冲区太小,则NDB存储引擎将发出内部错误代码677(
Index UNDO buffers overloaded
)。重要
在滚动重启期间减小此参数的值是不安全的。
UndoDataBuffer
该表提供UndoDataBuffer数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 未签名 默认 1600万 范围 1M-4294967039(0xFFFFFEFF) 重新启动类型 ñ 此参数设置UNDO数据缓冲区的大小,该功能执行与UNDO索引缓冲区类似的功能,不同之处在于,UNDO数据缓冲区用于数据存储而非索引存储。该缓冲区在片段的本地检查点阶段用于插入,删除和更新。
由于随着记录更多的操作,UNDO日志条目趋向于增大,因此该缓冲区也大于其索引存储器对应的缓冲区,其默认值为16MB。
对于某些应用程序,此内存量可能不必要地大。在这种情况下,可以将此大小减小到最小1MB。
几乎没有必要增加此缓冲区的大小。如果有这种需要,最好检查一下磁盘是否可以实际处理由数据库更新活动引起的负载。不能通过增加此缓冲区的大小来解决磁盘空间不足的问题。
如果此缓冲区太小且拥塞,则NDB存储引擎将发出内部错误代码891(数据UNDO缓冲区已过载)。
重要
在滚动重启期间减小此参数的值是不安全的。
RedoBuffer
该表提供RedoBuffer数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 个字节 默认 3200万 范围 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
字节。EventLogBufferSize
该表提供了EventLogBufferSize数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 个字节 默认 8192 范围 0-64K 重新启动类型 小号 控制用于数据节点内NDB日志事件的循环缓冲区的大小。
控制日志消息。在管理集群中,能够控制将各种事件类型发送到的日志消息的数量非常重要stdout
。对于每个事件类别,有16种可能的事件级别(编号从0到15)。将给定事件类别的事件报告设置为15级意味着将该类别中的所有事件报告发送到stdout
;将其设置为0表示该类别中不会有任何事件报告。
默认情况下,仅将启动消息发送到stdout
,其余事件报告级别的默认值默认设置为0。其原因是这些消息也发送到管理服务器的群集日志。
可以为管理客户端设置一组类似的级别,以确定要在集群日志中记录的事件级别。
LogLevelStartup
该表提供了LogLevelStartup数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 1个 范围 0-15 重新启动类型 ñ 在流程启动期间生成的事件的报告级别。
默认级别为1。
LogLevelShutdown
该表提供了LogLevelShutdown数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 0 范围 0-15 重新启动类型 ñ 作为正常关闭节点的一部分而生成的事件的报告级别。
默认级别为0。
LogLevelStatistic
该表提供了LogLevelStatistic数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 0 范围 0-15 重新启动类型 ñ 统计事件的报告级别,例如主键读取次数,更新次数,插入次数,与缓冲区使用有关的信息,等等。
默认级别为0。
LogLevelCheckpoint
该表提供了LogLevelCheckpoint数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 日志级别 默认 0 范围 0-15 重新启动类型 ñ 由本地和全局检查点生成的事件的报告级别。
默认级别为0。
LogLevelNodeRestart
该表提供了LogLevelNodeRestart数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 0 范围 0-15 重新启动类型 ñ 节点重新启动期间生成的事件的报告级别。
默认级别为0。
LogLevelConnection
该表提供了LogLevelConnection数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 0 范围 0-15 重新启动类型 ñ 由群集节点之间的连接生成的事件的报告级别。
默认级别为0。
LogLevelError
该表提供了LogLevelError数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 0 范围 0-15 重新启动类型 ñ 整个集群由错误和警告生成的事件的报告级别。这些错误不会导致任何节点故障,但仍然值得报告。
默认级别为0。
LogLevelCongestion
该表提供了LogLevelCongestion数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 水平 默认 0 范围 0-15 重新启动类型 ñ 拥塞产生的事件的报告级别。这些错误不会导致节点故障,但是仍然值得报告。
默认级别为0。
LogLevelInfo
该表提供LogLevelInfo数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 0 范围 0-15 重新启动类型 ñ 事件的报告级别,以获取有关群集一般状态的信息。
默认级别为0。
MemReportFrequency
该表提供了MemReportFrequency数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 未签名 默认 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
不是必需的参数。如果使用,则可以在的[ndbd default]
部分中为所有群集数据节点设置它config.ini
,也可以[ndbd]
在配置文件的相应部分中为单个数据节点设置或覆盖它。最小值(也是默认值)为0,在这种情况下,仅当内存使用率达到一定百分比(80%,90%和100%)时才记录内存报告,如本节中有关统计事件的讨论中所述 22.5.6.2“ NDB群集日志事件”。StartupStatusReportFrequency
该表提供了StartupStatusReportFrequency数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 秒 默认 0 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 当数据节点以开头时
--initial
,它将在启动阶段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
StartupStatusReportFrequency
在开始阶段4期间,每秒都会记录这些报告。如果StartupStatusReportFrequency
为0(默认值),则仅在重做日志文件初始化过程的开始和完成时才将报告写入集群日志。
数据节点调试参数
以下参数旨在在数据节点的测试或调试期间使用,而不在生产中使用。
DictTrace
该表提供了DictTrace数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 个字节 默认 未定义 范围 0-100 重新启动类型 ñ 对于使用创建和删除表生成的事件,可能会导致跟踪记录
DictTrace
。此参数仅在调试NDB内核代码时有用。DictTrace
取一个整数值。默认值为0,表示不执行日志记录。1启用跟踪日志记录,2启用其他DBDICT
调试输出的日志记录。WatchdogImmediateKill
该表提供了WatchDogImmediateKill数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 布尔值 默认 假 范围 真假 重新启动类型 小号 通过启用
WatchdogImmediateKill
数据节点配置参数,可以在出现看门狗问题时立即导致线程被杀死。仅在调试或疑难解答时才应使用此参数,以获取跟踪文件,以准确报告执行停止瞬间发生的情况。
备份参数。[ndbd]
本节讨论的参数定义为执行在线备份而预留的内存缓冲区。
BackupDataBufferSize
该表提供了BackupDataBufferSize数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 个字节 默认 1600万 范围 512K-4294967039(0xFFFFFEFF) 重新启动类型 ñ 在创建备份时,有两个缓冲区用于将数据发送到磁盘。备份数据缓冲区用于填充通过扫描节点表记录的数据。一旦此缓冲区已填充到指定的级别
BackupWriteSize
,页面就会发送到磁盘。在将数据刷新到磁盘时,备份过程可以继续填充此缓冲区,直到空间用完为止。发生这种情况时,备份过程将暂停扫描并等待,直到某些磁盘写操作已完成释放内存,以便扫描可以继续进行。此参数的默认值为16MB。最小为512K。
BackupDiskWriteSpeedPct
该表提供了BackupDiskWriteSpeedPct数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 百分 默认 50 范围 0-90 重新启动类型 ñ 在正常运行期间,数据节点试图最大限度地用于本地检查点和备份,同时通过设定的范围内剩余的磁盘写入速度
MinDiskWriteSpeed
和MaxDiskWriteSpeed
。磁盘写限制使每个LDM线程在总预算中享有相等的份额。这允许并行LCP发生而不会超出磁盘I / O预算。由于备份仅由一个LDM线程执行,因此有效地导致了预算削减,从而导致更长的备份完成时间,并且-如果更改率足够高,则当备份日志缓冲区的填充率为时,将无法完成备份。高于可达到的写入率。可以通过使用
BackupDiskWriteSpeedPct
配置参数来解决此问题,该参数的取值范围为0-90(含)范围内的值,该值解释为在节点之间共享剩余预算之前预留的最大写入速率预算的百分比。用于LCP的LDM线程。运行备份的LDM线程接收备份的整个写入速率预算,以及其(减少的)本地检查点写入速率预算的份额。此参数的默认值为50(解释为50%)。
BackupLogBufferSize
该表提供了BackupLogBufferSize数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 个字节 默认 1600万 范围 2M-4294967039(0xFFFFFEFF) 重新启动类型 ñ 备份日志缓冲区的作用类似于备份数据缓冲区,只是它用于生成在执行备份过程中进行的所有表写入的日志。写入这些页面与备份数据缓冲区的原理相同,不同之处在于,当备份日志缓冲区中没有更多空间时,备份将失败。因此,备份日志缓冲区的大小必须足够大,以处理进行备份时由写活动引起的负载。请参见“ NDB群集备份的配置”。
对于大多数应用程序,此参数的默认值应足够。实际上,备份失败是由于磁盘写入速度不足而引起的,而不是备份日志缓冲区已满。如果没有为磁盘子系统配置应用程序引起的写负载,则群集不太可能执行所需的操作。
最好以使处理器成为瓶颈而不是磁盘或网络连接的瓶颈的方式配置群集节点。
此参数的默认值为16MB。
BackupMemory
该表提供了BackupMemory数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 个字节 默认 3200万 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 不建议使用此参数,并且在以后的NDB Cluster版本中可以删除该参数。为此所做的任何设置都将被忽略。
BackupReportFrequency
该表提供了BackupReportFrequency数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 秒 默认 0 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 此参数控制在备份期间在管理客户端中发布备份状态报告的频率,以及将这些报告写入集群日志的频率(已配置的集群事件日志已配置为允许该日志,请参阅日志和检查点)。
BackupReportFrequency
表示两次备份状态报告之间的时间(以秒为单位)。默认值为0。
BackupWriteSize
该表提供了BackupWriteSize数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 个字节 默认 256K 范围 32K-4294967039(0xFFFFFEFF) 重新启动类型 ñ 此参数指定由备份日志和备份数据缓冲区写入磁盘的消息的默认大小。
此参数的默认值为256KB。
BackupMaxWriteSize
该表提供了BackupMaxWriteSize数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 个字节 默认 1M 范围 256K-4294967039(0xFFFFFEFF) 重新启动类型 ñ 此参数指定备份日志和备份数据缓冲区写入磁盘的消息的最大大小。
此参数的默认值为1MB。
注意备份文件的位置由
BackupDataDir
数据节点配置参数确定。
其他要求。指定这些参数时,以下关系必须成立。否则,数据节点将无法启动。
BackupDataBufferSize >= BackupWriteSize + 188KB
BackupLogBufferSize >= BackupWriteSize + 16KB
BackupMaxWriteSize >= BackupWriteSize
NDB群集实时性能参数
[ndbd]
本节中讨论的参数用于调度和锁定多处理器数据节点主机上特定CPU的线程。
注意要使用这些参数,数据节点进程必须作为系统根目录运行。
LockExecuteThreadToCPU
该表提供LockExecuteThreadToCPU数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 CPU ID集 默认 0 范围 ... 重新启动类型 ñ 与ndbd一起使用时,此参数(现在为字符串)指定分配给处理
NDBCLUSTER
执行线程的CPU的ID 。与ndbmtd一起使用时,此参数的值是分配给处理执行线程的CPU ID的逗号分隔列表。列表中的每个CPU ID都应为0到65535(含)之间的整数。指定的ID数量应与决定的执行线程数量相匹配
MaxNoOfExecutionThreads
。但是,不能保证在使用此参数时以任何给定顺序将线程分配给CPU。您可以使用来获得这种类型的更细粒度的控件ThreadConfig
。LockExecuteThreadToCPU
没有默认值。LockMaintThreadsToCPU
该表提供LockMaintThreadsToCPU数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 CPU编号 默认 0 范围 0-64K 重新启动类型 ñ 此参数指定分配给处理
NDBCLUSTER
维护线程的CPU的ID 。整数形式,取值范围是0〜65535。没有默认值。
RealtimeScheduler
该表提供了RealtimeScheduler数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 布尔值 默认 假 范围 真假 重新启动类型 ñ 将此参数设置为1将启用数据节点线程的实时调度。
默认值为0(禁用计划)。
SchedulerExecutionTimer
该表提供了SchedulerExecutionTimer数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 微秒 默认 50 范围 0-11000 重新启动类型 ñ 该参数指定线程在发送之前在调度程序中执行的时间(以微秒为单位)。将其设置为0可最大程度地缩短响应时间。为了获得更高的吞吐量,您可以以更长的响应时间为代价来增加价值。
默认值为50微秒,我们的测试表明,在高负载情况下,吞吐量会略有增加,而不会严重延迟请求。
SchedulerResponsiveness
该表提供了SchedulerResponsiveness数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 5 范围 0-10 重新启动类型 小号 在
NDB
调度程序中设置速度和吞吐量之间的平衡。该参数采用一个整数,其值在0到10之间(含0和10),默认值为5。相对于吞吐量,较高的值可提供更好的响应时间。较低的值以较长的响应时间为代价提供了增加的吞吐量。SchedulerSpinTimer
该表提供了SchedulerSpinTimer数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 微秒 默认 0 范围 0-500 重新启动类型 ñ 此参数指定睡眠之前在调度程序中执行线程的时间(以微秒为单位)。
默认值为0。
BuildIndexThreads
该表提供了BuildIndexThreads数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 数字 默认 128 范围 0-128 重新启动类型 小号 此参数确定在系统或节点启动期间重建有序索引以及运行ndb_restore时要创建的线程数
--rebuild-indexes
。仅当每个数据节点的表有多个片段时(例如,当COMMENT="NDB_TABLE=PARTITION_BALANCE=FOR_RA_BY_LDM_X_2"
与一起使用时CREATE TABLE
),才支持该功能。将此参数设置为0(默认值)将禁用多线程构建有序索引。
使用ndbd或ndbmtd时支持此参数。
通过将
TwoPassInitialNodeRestartCopy
数据节点配置参数设置为,可以在数据节点初始重新启动期间启用多线程构建TRUE
。TwoPassInitialNodeRestartCopy
该表提供TwoPassInitialNodeRestartCopy数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 布尔值 默认 真正 范围 真假 重新启动类型 ñ 通过将此配置参数设置为
true
(默认值),可以为数据节点的初始重启启用有序索引的多线程构建,这将在初始节点重启期间实现两次数据复制。您还必须设置
BuildIndexThreads
为非零值。Numa
该表提供了Numa数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 数字 默认 1个 范围 ... 重新启动类型 ñ 此参数确定是由操作系统还是由数据节点进程控制非统一内存访问(NUMA),即数据节点使用ndbd还是ndbmtd。默认情况下,
NDB
尝试在主机操作系统提供NUMA支持的任何数据节点上使用交错式NUMA内存分配策略。设置
Numa = 0
意味着数据节点进程本身不会尝试设置用于内存分配的策略,而是允许操作系统确定此行为,这可以由单独的numactl工具进一步指导。也就是说,Numa = 0
产生系统默认行为,可以通过numactl对其进行自定义。对于许多Linux系统,系统默认行为是在分配时将套接字本地内存分配给任何给定的进程。使用ndbmtd时,这可能会出现问题;这是因为nbdmtd在启动时分配所有内存,从而导致不平衡,从而为不同的套接字提供不同的访问速度,尤其是在将页面锁定在主内存中时。设置
Numa = 1
意味着数据节点进程用于libnuma
请求交错的内存分配。(这也可以在操作系统级别使用numactl手动完成。)实际上,使用交错分配可以使数据节点进程忽略非一致的内存访问,但不会尝试利用快速本地内存的任何优势;相反,数据节点进程将尝试避免由于远程内存速度慢而导致的不平衡。如果不需要交错分配,则将其设置Numa
为0,以便可以在操作系统级别上确定所需的行为。该
Numa
配置参数只在Linux系统中支持libnuma.so
可用。
多线程配置参数(ndbmtd)。默认情况下,ndbmtd作为单线程进程运行,并且必须使用两种方法之一配置为使用多个线程,这两种方法都需要在config.ini
文件中设置配置参数。第一种方法只是为MaxNoOfExecutionThreads
配置参数设置适当的值。第二种方法可以使用来为ndbmtd多线程设置更复杂的规则ThreadConfig
。接下来的几段提供了有关这些参数及其与多线程数据节点一起使用的信息。
注意在数据节点上使用并行性进行备份需要在进行备份之前在集群中的所有数据节点上使用多个LDM。有关更多信息,请参见“NDB集群在线备份”,以及“从并行获取的备份还原”。
MaxNoOfExecutionThreads
该表提供了MaxNoOfExecutionThreads多线程数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 2 范围 2-72 重新启动类型 是 此参数直接控制ndbmtd使用的执行线程数,最大为72。尽管在文件的
[ndbd]
或文件[ndbd default]
部分中设置了此参数config.ini
,但它是ndbmtd专用的,不适用于ndbd。设置
MaxNoOfExecutionThreads
根据文件中的矩阵确定每种类型的线程数storage/ndb/src/kernel/vm/mt_thr_config.cpp
。下表显示了可能的值的这些线程数MaxNoOfExecutionThreads
。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线程;在这种情况下,自动创建的分区数仅等于数据节点数。请参见“ NDB”群集节点,节点组,副本和分区”,以获取更多信息。如果磁盘页面缓冲区不够大,则在使用超过默认数量的LDM线程时为磁盘数据表添加大表空间可能会导致资源和CPU使用率问题。
DiskPageBufferMemory
有关更多信息,请参见配置参数的描述。线程类型将在本节后面描述(请参阅参考资料
ThreadConfig
)。将此参数设置在允许的值范围之外会导致管理服务器在启动时中止,并出现错误错误行
number
:value
参数MaxNoOfExecutionThreads的值非法。对于
MaxNoOfExecutionThreads
,值0或1在内部向上舍入NDB
为2,因此2被视为此参数的默认值和最小值。MaxNoOfExecutionThreads
通常将“线程”设置为等于可用的CPU线程数,并分配每种类型的线程数以适合典型的工作负载。它不会将特定线程分配给指定的CPU。如果需要更改提供的设置或将线程绑定到CPU,则应使用ThreadConfig
改用,这允许您将每个线程直接分配给所需的类型,CPU或两者。多线程数据节点进程始终至少产生以下列出的线程:
- 个本地查询处理程序(LDM)线程
- 个接收线程
- 个订阅管理器(SUMA或复制)线程
对于
MaxNoOfExecutionThreads
8或更小的值,将不创建任何TC线程,而是由主线程执行TC处理。更改LDM线程数通常需要重新启动系统,无论使用此参数还是通过进行更改
ThreadConfig
,但是只要满足以下两个条件,就可以使用节点初始重新启动(NI)来进行更改:- 每个LDM线程最多处理8个片段,并且
- 表片段的总数是LDM线程数的整数倍。
在NDB 8.0,在初始重新启动不要求以实现该参数的变化,因为它是在一些老版本的NDB集群。
NoOfFragmentLogParts
该表提供了NoOfFragmentLogParts多线程数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 数字 默认 4 范围 4、8、12、16、24、32 重新启动类型 在 设置属于此ndbmtd的重做日志的日志文件组数。最大值为32;设置的值必须是4的偶数倍。
NoOfFragmentLogParts
应将其设置为等于ndbmtd使用的LDM线程数,具体取决于MaxNoOfExecutionThreads
。每个LDM不允许使用超过4个重做日志部分的配置。有关
MaxNoOfExecutionThreads
更多信息,请参见的描述。ThreadConfig
该表提供了ThreadConfig多线程数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 string 默认 '' 范围 ... 重新启动类型 是 此参数与ndbmtd一起使用,以将不同类型的线程分配给不同的CPU。它的值是一个字符串,其格式具有以下语法:
ThreadConfig := entry[,entry[,...]] entry := type={param[,param[,...]]} type := ldm | 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,给定类型的线程将专门与这些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
值的效果。在Linux和FreeBSD上thread_prio到漂亮值的映射
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:
thread_prio
在Solaris上进行设置可设置Solaris FX优先级,其映射如下表所示:在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线程优先级值。下表显示了此映射: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线程越多,数据的分区就越高。每个LDM线程都维护自己的数据和索引分区集,以及自己的重做日志。为设置的值ldm
必须是值1、2、4、6、8、12、16、24或32。更改LDM线程数通常要求系统重新启动才能有效且安全地执行群集操作,在某些情况下此要求会放宽,这将在本节后面部分进行说明。使用完成此操作时也是如此
MaxNoOfExecutionThreads
。如果使用的LDM数量超过默认数量,则为磁盘数据表添加较大的表空间(数百GB或更多)可能会导致资源和CPU使用率问题(如果
DiskPageBufferMemory
不够大)。tc
:DBTC
包含正在进行的事务状态的事务协调器线程(内核块)。TC线程的最大数量为32。理想情况下,每个新事务都可以分配给新的TC线程。在大多数情况下,每2个LDM线程1个TC线程就足以保证可以发生这种情况。如果写入数与读取数相比相对较少,则每4个LQH线程仅需要1个TC线程即可维护事务状态。相反,在执行大量更新的应用程序中,可能需要TC线程与LDM线程的比率接近1(例如,3 TC线程与4个LDM线程)。
设置
tc
为0将使TC处理由主线程完成。在大多数情况下,这实际上与将其设置为1相同。范围:0-32
main
:数据字典和事务协调器(DBDIH
以及DBTC
内核块),提供模式管理。这始终由单个专用线程处理。范围:仅1。
recv
:接收线程(CMVMI
内核块)。每个接收线程处理一个或多个套接字以与NDB群集中的其他节点通信,每个节点一个套接字。NDB群集支持多个接收线程。最多是16个这样的线程。范围:1-16
send
:发送线程(CMVMI
内核块)。为了提高吞吐量,可以从一个或多个单独的专用线程(最多8个)执行发送。在NDB 8.0.20及更高版本中,由于多线程实现中的更改,使用许多发送线程可能会对可伸缩性产生不利影响。
以前,所有线程都直接处理自己的发送;仍然可以通过将发送线程数设置为0来实现这种情况(当
MaxNoOfExecutionThreads
设置的线程数小于10 时也会发生这种情况)。虽然这样做可能会对吞吐量产生不利影响,但在某些情况下还可以减少延迟。范围:0-16
rep
:复制线程(SUMA
内核块)。异步复制操作始终由单个专用线程处理。范围:仅1。
io
:文件系统和其他杂项操作。这些不是高要求的任务,并且始终由单个专用I / O线程作为一组处理。范围:仅1。
watchdog
:与该类型关联的参数设置实际上应用于多个线程,每个线程都有特定的用途。这些线程包括SocketServer
从其他节点接收连接设置的线程。的SocketClient
螺纹,它试图建立至其它节点的连接;以及检查线程是否正在执行的线程看门狗线程。范围:仅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
,recv
,rep
,tc
,和send
是执行线程;io
,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个接收线程和1个线程,分别用于模式管理,异步复制和I / O操作。(与MaxNoOfExecutionThreads
设置为20 时使用的线程分配几乎相同。)以下ThreadConfig
设置执行这些分配,并将所有这些线程绑定到特定的CPU:
ThreadConfig=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
为每个组设置相同的值。这意味着总共有八个LDM线程。(您应确保将NoOfFragmentLogParts
其也设置为8。)四个TC线程仅使用两个CPU。当cpuset
用于指定的CPU数少于组中的线程数时,这是可能的。(对于并非如此cpubind
)。发送线程使用两个线程cpubind
将这些线程绑定到CPU 10和11。main和rep线程可以重用这些CPU。
此示例显示了如何ThreadConfig
以及NoOfFragmentLogParts
可能如何为具有超线程的24-CPU主机设置,而使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
。其中的前两个示例演示了为定义的CPU集如何idxbld
与为其他(永久)线程类型指定的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的八个内核,因此等效于此处显示的设置:
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系统,你可以通过设置这样做IRQBALANCE_BANNED_CPUS
的/etc/sysconfig/irqbalance
到0xFFFFF0
,并通过使用isolcpus
在启动选项grub.conf
。有关特定信息,请参阅您的操作系统或平台文档。
磁盘数据配置参数。影响磁盘数据行为的配置参数包括:
DiskPageBufferEntries
该表提供了DiskPageBufferEntries数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 32K页 默认 10 范围 1-1000 重新启动类型 ñ 版本(或更高版本) NDB 8.0.19 类型或单位 个字节 默认 64MB 范围 4MB-16TB 重新启动类型 ñ 这是要分配的页面条目(页面引用)的数量。在中指定为32K页数
DiskPageBufferMemory
。在大多数情况下,默认值就足够了,但是如果在磁盘数据表上遇到非常大的事务时,可能需要增加此参数的值。每个页面条目大约需要100个字节。DiskPageBufferMemory
该表提供了DiskPageBufferMemory数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 个字节 默认 64M 范围 4M-1T 重新启动类型 ñ 版本(或更高版本) NDB 8.0.19 类型或单位 个字节 默认 64M 范围 4M-16T 重新启动类型 ñ 这确定用于在磁盘上缓存页面的空间量,并在文件的
[ndbd]
或[ndbd default]
部分中设置config.ini
。注意
以前,此参数指定为32 KB页的数量。从NDB 8.0.19开始,将其指定为字节数。
如果
DiskPageBufferMemory
结合使用的LDM线程数超过默认数量ThreadConfig
(例如{ldm=6...}
),将for的值设置得太低,则尝试向基于磁盘的NDB
表中添加大型(例如500G)数据文件时,可能会出现问题。在占用一个CPU内核的同时,该过程将花费无限长的时间。这是由于以下事实:作为向表空间添加数据文件的一部分,扩展页被锁定在额外的PGMAN工作线程中的内存中,以便快速访问元数据。添加大文件时,此工作程序没有足够的内存来存储所有数据文件元数据。在这种情况下,您应该增加
DiskPageBufferMemory
或添加较小的表空间文件。您可能还需要调整DiskPageBufferEntries
。您可以查询
ndbinfo.diskpagebuffer
表以帮助确定是否应增加此参数的值,以最大程度地减少不必要的磁盘搜寻。有关更多信息,请参见“ ndbinfo diskpagebuffer表”。SharedGlobalMemory
该表提供了SharedGlobalMemory数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 个字节 默认 128M 范围 0-64吨 重新启动类型 ñ 此参数确定用于日志缓冲区,磁盘操作(例如页面请求和等待队列)以及表空间,日志文件组,
UNDO
文件和数据文件的元数据的内存量。共享全局内存池还提供用于满足UNDO_BUFFER_SIZE
与CREATE LOGFILE GROUP
andALTER LOGFILE GROUP
语句一起使用的选项的内存要求的内存,包括通过设置InitialLogFileGroup
数据节点配置参数对此选项隐含的任何默认值。SharedGlobalMemory
可以在[ndbd]
或配置文件中设置,以字节为单位。[ndbd default]
的部分config.ini
默认值为
128M
。DiskIOThreadPool
该表提供了DiskIOThreadPool数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 线程数 默认 2 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 此参数确定用于磁盘数据文件访问的未绑定线程数。在
DiskIOThreadPool
介绍之前,为每个磁盘数据文件恰好产生了一个线程,这可能会导致性能问题,尤其是在使用非常大的数据文件时。使用DiskIOThreadPool
,您可以例如使用多个并行工作的线程访问单个大数据文件。此参数仅适用于磁盘数据I / O线程。
此参数的最佳值取决于您的硬件和配置,并包括以下因素:
磁盘数据文件的物理分发。通过将数据文件,撤消日志文件和数据节点文件系统放置在单独的物理磁盘上,可以获得更好的性能。如果使用部分或全部这些文件集来执行此操作,则可以(并且应该)设置
DiskIOThreadPool
更高的值以启用单独的线程来处理每个磁盘上的文件。在NDB 8.0.19和更高版本中,
DiskDataUsingSameDisk
当为磁盘数据文件使用一个或多个单独的磁盘时,也应禁用此功能;这提高了执行磁盘数据表空间检查点的速度。磁盘性能和类型。磁盘数据文件处理可容纳的线程数还取决于磁盘的速度和吞吐量。更快的磁盘和更高的吞吐量允许更多的磁盘I / O线程。我们的测试结果表明,固态磁盘驱动器可比传统磁盘处理更多的磁盘I / O线程,因此的值更高
DiskIOThreadPool
。TimeBetweenGlobalCheckpoints
使用固态磁盘驱动器时,尤其是使用NVMe的固态磁盘驱动器,也建议减小。另请参阅磁盘数据延迟参数。
此参数的默认值为2。
磁盘数据文件系统参数。下表中的参数使得可以将NDB群集磁盘数据文件放置在特定目录中,而无需使用符号链接。
FileSystemPathDD
该表提供了FileSystemPathDD数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 文件名 默认 [见文字] 范围 ... 重新启动类型 在 如果指定了此参数,则将NDB群集磁盘数据数据文件和撤消日志文件放置在指示的目录中。这可以是对于重写数据文件,撤消日志文件,或两者,通过用于指定值
FileSystemPathDataFiles
,FileSystemPathUndoFiles
,,或两者作为这些参数说明。它也可以被覆盖的数据文件被在指定路径ADD DATAFILE
的条款CREATE TABLESPACE
或ALTER TABLESPACE
语句,由在指定路径撤消日志文件ADD UNDOFILE
的条款CREATE LOGFILE GROUP
或ALTER LOGFILE GROUP
语句。如果FileSystemPathDD
未指定,则FileSystemPath
使用。如果
FileSystemPathDD
为给定的数据节点指定了目录(包括在文件的[ndbd default]
部分中指定了参数的情况config.ini
),则从该数据节点开始将--initial
导致删除目录中的所有文件。FileSystemPathDataFiles
该表提供了FileSystemPathDataFiles数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 文件名 默认 [见文字] 范围 ... 重新启动类型 在 如果指定了此参数,则将NDB群集磁盘数据数据文件放置在指示的目录中。这会覆盖为设置的任何值
FileSystemPathDD
。通过在用于创建该数据文件ADD DATAFILE
的CREATE TABLESPACE
orALTER TABLESPACE
语句的子句中指定路径,可以为给定的数据文件覆盖此参数。如果FileSystemPathDataFiles
未指定,则FileSystemPathDD
使用(或FileSystemPath
,如果FileSystemPathDD
尚未设置)。如果
FileSystemPathDataFiles
为给定的数据节点指定了目录(包括在文件的[ndbd default]
部分中指定了参数的情况config.ini
),则从该数据节点开始将--initial
导致删除目录中的所有文件。FileSystemPathUndoFiles
该表提供了FileSystemPathUndoFiles数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 文件名 默认 [见文字] 范围 ... 重新启动类型 在 如果指定了此参数,则将NDB群集磁盘数据撤消日志文件放置在指示的目录中。这会覆盖为设置的任何值
FileSystemPathDD
。通过在用于创建该数据文件ADD UNDO
的CREATE LOGFILE GROUP
orALTER LOGFILE GROUP
语句的子句中指定路径,可以为给定的数据文件覆盖此参数。如果FileSystemPathUndoFiles
未指定,则FileSystemPathDD
使用(或FileSystemPath
,如果FileSystemPathDD
尚未设置)。如果
FileSystemPathUndoFiles
为给定的数据节点指定了目录(包括在文件的[ndbd default]
部分中指定了参数的情况config.ini
),则从该数据节点开始将--initial
导致删除目录中的所有文件。
有关更多信息,请参见“ NDB群集磁盘数据对象”。
磁盘数据对象创建参数。接下来的两个参数使您(首次启动集群时)无需使用SQL语句即可创建磁盘数据日志文件组,表空间或两者。
InitialLogFileGroup
该表提供InitialLogFileGroup数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 string 默认 [见文字] 范围 ... 重新启动类型 小号 此参数可用于指定在执行群集的初始启动时创建的日志文件组。
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 LG1ADD UNDOFILE 'undo1.log'INITIAL_SIZE 250MUNDO_BUFFER_SIZE 128MENGINE NDBCLUSTER ;ALTER LOGFILE GROUP LG1ADD UNDOFILE 'undo2.log'INITIAL_SIZE 150MENGINE NDBCLUSTER ;当数据节点以开头时,将创建此日志文件组
--initial
。初始日志文件组的资源与值指示的资源一起添加到了全局内存池中
SharedGlobalMemory
。如果使用此参数,则应始终
[ndbd default]
在config.ini
文件的部分中进行设置。未定义在不同数据节点上设置不同值时,NDB群集的行为。InitialTablespace
该表提供InitialTablespace数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 string 默认 [见文字] 范围 ... 重新启动类型 小号 此参数可用于指定在执行群集的初始启动时创建的NDB群集磁盘数据表空间。
InitialTablespace
指定如下所示:InitialTablespace = [name=name;] [extent_size=size;] file-specification-list
该
name
表空间是可选的,默认为DEFAULT-TS
。该extent_size
也是可选的;默认为1M
。在file-specification-list
使用相同的语法如图所示与InitialLogfileGroup
参数,唯一的区别是,每个file-specification
与用于InitialTablespace
对应的数据文件。必须至少指定一个file-specification-list
。数据文件是根据已设定的任何值放置FileSystemPath
,FileSystemPathDD
和FileSystemPathDataFiles
,就像它们是由CREATE TABLESPACE
orALTER TABLESPACE
语句的结果创建的一样。例如,考虑在文件
InitialTablespace
的[ndbd default]
部分中指定以下行config.ini
(与一样InitialLogfileGroup
,应始终在该[ndbd default]
部分中设置此参数,因为未定义在不同数据节点上设置不同值时NDB群集的行为):InitialTablespace = name=TS1; extent_size=8M; data1.dat:2G; data2.dat:4G
这等效于以下SQL语句:
CREATE TABLESPACE TS1ADD DATAFILE 'data1.dat'EXTENT_SIZE 8MINITIAL_SIZE 2GENGINE NDBCLUSTER ;ALTER TABLESPACE TS1ADD DATAFILE 'data2.dat'INITIAL_SIZE 4GENGINE NDBCLUSTER ;该表空间是在数据节点以开头
--initial
时创建的,以后可在创建NDB群集磁盘数据表时使用。
磁盘数据延迟参数。此处列出的两个参数可用于改善对NDB群集磁盘数据表的延迟问题的处理。
MaxDiskDataLatency
该表提供了MaxDiskDataLatency数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.19 类型或单位 女士 默认 0 范围 0-8000 重新启动类型 ñ 此参数控制磁盘访问的最大允许平均延迟(最大8000毫秒)。达到此限制后,
NDB
开始中止事务以减轻磁盘数据I / O子系统上的压力。使用0
禁用延迟检查。DiskDataUsingSameDisk
该表提供了DiskDataUsingSameDisk数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.19 类型或单位 布尔值 默认 真正 范围 ... 重新启动类型 ñ 将此参数设置为
false
如果您的磁盘数据表空间使用一个或多个单独的磁盘。这样做可以使表空间的检查点以比共享磁盘时通常使用的速度更高的速率执行。如果
DiskDataUsingSameDisk
为true
,NDB
则在进行内存中检查点时都会降低磁盘数据检查点的速率,以帮助确保磁盘负载保持恒定。
磁盘数据和GCP停止错误。由于检测到GCP停止而在使用磁盘数据表时遇到的错误(例如 Node nodeid
杀死了该节点)(错误2303)通常称为“ GCP停止错误”。当重做日志没有足够快地刷新到磁盘时,会发生此类错误。这通常是由于磁盘速度慢和磁盘吞吐量不足所致。
通过使用更快的磁盘,以及将磁盘数据文件放置在与数据节点文件系统不同的磁盘上,可以帮助防止发生这些错误。减小的值TimeBetweenGlobalCheckpoints
往往会减少每个全局检查点要写入的数据量,因此可以在尝试写入全局检查点时为重做日志缓冲区溢出提供某种保护。但是,减小该值还可以减少写入GCP的时间,因此必须谨慎进行。
除了DiskPageBufferMemory
如前所述的注意事项外,DiskIOThreadPool
正确设置配置参数也很重要。有DiskIOThreadPool
集过高很容易造成GCP停止错误(错误#37227)。
GCP停止可能是由保存或提交超时引起的;的TimeBetweenEpochsTimeout
数据节点的配置参数决定提交的超时。但是,可以通过将此参数设置为0来禁用两种类型的超时。
用于配置发送缓冲区内存分配的参数。从所有传输器之间共享的内存池中动态分配发送缓冲区内存,这意味着可以根据需要调整发送缓冲区的大小。(以前,NDB内核为群集中的每个节点使用固定大小的发送缓冲区,该缓冲区在节点启动时分配,并且在节点运行时无法更改。)TotalSendBufferMemory
和OverLoadLimit
数据节点配置参数允许设置限制关于此内存分配。有关使用这些参数(以及SendBufferMemory
)的更多信息,请参见“配置NDB群集发送缓冲区参数”。
ExtraSendBufferMemory
此参数采用指定任何一组转运发送缓冲存储器除了分配量
TotalSendBufferMemory
,SendBufferMemory
或两者。TotalSendBufferMemory
此参数用于确定在此节点上分配的内存总量,以在所有已配置的传输器之间共享共享发送缓冲区内存。
如果设置了此参数,则其最小允许值为256KB;0表示尚未设置参数。有关更多详细信息,请参见“配置NDB群集发送缓冲区参数”。
另请参见“在线添加NDB群集数据节点”。
重做日志过量提交处理。花太多时间将重做日志刷新到磁盘时,可以控制数据节点对操作的处理。当给定的重做日志刷新花费的时间超过RedoOverCommitLimit
几秒钟,超过RedoOverCommitCounter
几倍,从而导致任何挂起的事务中止时,就会发生这种情况。发生这种情况时,发送事务的API节点可以通过排队操作并重试它们,或通过中止它们来处理应提交的操作,具体取决于DefaultOperationRedoProblemAction
。下表描述了用于设置超时和可能在API节点执行此操作之前超过的次数的数据节点配置参数:
RedoOverCommitCounter
该表提供RedoOverCommitCounter数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 数字 默认 3 范围 1-4294967039(0xFFFFFEFF) 重新启动类型 ñ 版本(或更高版本) NDB 8.0.19 类型或单位 数字 默认 3 范围 1-4294967039(0xFFFFFEFF) 重新启动类型 ñ RedoOverCommitLimit
尝试多次将给定重做日志写入磁盘时,如果超过了when,则任何未提交的事务都将中止,并且源自这些事务的API节点将根据以下操作处理构成这些事务的操作其值DefaultOperationRedoProblemAction
(通过排队要重试的操作或中止它们)。RedoOverCommitLimit
该表提供RedoOverCommitLimit数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 秒 默认 20 范围 1-4294967039(0xFFFFFEFF) 重新启动类型 ñ 版本(或更高版本) NDB 8.0.19 类型或单位 秒 默认 20 范围 1-4294967039(0xFFFFFEFF) 重新启动类型 ñ 此参数设置了以秒为单位的上限,以尝试在超时之前将给定的重做日志写入磁盘。数据节点尝试刷新此重做日志的次数,但
RedoOverCommitLimit
保留的RedoOverCommitCounter
次数大于,并与进行比较,并且当刷新花费的时间比该参数的值长的时间时,由于以下原因未提交的任何事务刷新超时被中止。发生这种情况时,所有这些事务中的任何一个发起的API节点都会根据其DefaultOperationRedoProblemAction
设置来处理组成这些事务的操作(它会将要重试的操作排入队列,或者中止它们)。
控制重启尝试。当数据节点无法使用MaxStartFailRetries
和StartFailRetryDelay
数据节点配置参数启动时,可以对它们的重新启动尝试进行细粒度的控制。
MaxStartFailRetries
限制在放弃启动数据节点之前进行的重试总数,StartFailRetryDelay
设置重试尝试之间的秒数。这些参数在这里列出:
StartFailRetryDelay
该表提供了StartFailRetryDelay数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 未签名 默认 0 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 使用此参数可以设置启动失败时数据节点尝试重新启动之间的秒数。默认值为0(无延迟)。
MaxStartFailRetries
除非StopOnError
等于0,否则将忽略此参数和。MaxStartFailRetries
该表提供了MaxStartFailRetries数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 未签名 默认 3 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 ñ 使用此参数可以限制在启动时数据节点失败的次数。默认为3次尝试。
StartFailRetryDelay
除非StopOnError
等于0,否则将忽略此参数和。
NDB索引统计参数。下表中的参数与NDB索引统计信息生成有关。
IndexStatAutoCreate
该表提供IndexStatAutoCreate数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 0 范围 0,1 重新启动类型 小号 创建索引时启用(设置为1)或禁用(设置为0)自动统计信息收集。默认禁用。
IndexStatAutoUpdate
该表提供IndexStatAutoUpdate数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 整数 默认 0 范围 0,1 重新启动类型 小号 启用(设置为1)或禁用(设置为0)监视索引的更改并触发自动统计信息更新,这些将被检测到。触发更新所需的更改量和程度由
IndexStatTriggerPct
和IndexStatTriggerScale
选项的设置确定。IndexStatSaveSize
该表提供IndexStatSaveSize数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 个字节 默认 32768 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 在 NDB
系统表和mysqld内存缓存中任何给定索引的已保存统计信息所允许的最大字节空间。无论大小限制如何,始终至少生产一个样本。此大小按缩放
IndexStatSaveScale
。指定的大小由大索引
IndexStatSaveSize
的值IndexStatTriggerPct
乘以0.01 来缩放。进一步乘以对数到索引大小的底数2。设置IndexStatTriggerPct
为0将禁用缩放效果。IndexStatSaveScale
此表提供IndexStatSaveScale数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 百分比 默认 100 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 在 指定的大小由大索引
IndexStatSaveSize
的值IndexStatTriggerPct
乘以0.01 来缩放。进一步乘以对数到索引大小的底数2。设置IndexStatTriggerPct
为0将禁用缩放效果。IndexStatTriggerPct
该表提供了IndexStatTriggerPct数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 百分比 默认 100 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 在 触发索引统计信息更新的更新百分比变化。该值按缩放
IndexStatTriggerScale
。您可以将其设置IndexStatTriggerPct
为0 ,以完全禁用此触发器。IndexStatTriggerScale
此表提供IndexStatTriggerScale数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 百分比 默认 100 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 在 IndexStatTriggerPct
对于较大的索引,按此数量缩放 0.01。值为0将禁用缩放。IndexStatUpdateDelay
该表提供了IndexStatUpdateDelay数据节点配置参数的类型和值信息
属性 值 版本(或更高版本) NDB 8.0.13 类型或单位 秒 默认 60 范围 0-4294967039(0xFFFFFEFF) 重新启动类型 在 给定索引的自动索引统计信息更新之间的最小延迟(以秒为单位)。将此变量设置为0将禁用任何延迟。默认值为60秒。
重新启动类型。下表显示了本节中的参数说明所使用的有关重新启动类型的信息:
NDB群集重新启动类型
符号 | 重新启动类型 | 描述 |
---|---|---|
ñ | 节点 | 可以使用滚动重启来更新参数(请参见“执行NDB群集的滚动重启”) |
小号 | 系统 | 必须完全关闭所有群集节点,然后重新启动,以更改此参数 |
一世 | 初始 | 必须使用--initial 选项重新启动数据节点 |