10bet网址
MySQL 5.7参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国高级主任)- 36.4 mb
PDF (A4)- 36.4 mb
PDF (RPM)- 35.7 mb
HTML下载(TGZ)- 9.5 mb
HTML下载(Zip)- 9.5 mb
HTML下载(RPM)- 8.2 mb
手册页(TGZ)- 235.4 kb
手册页(Zip)- 347.0 kb
信息(Gzip)- 3.3 mb
信息(邮政编码)- 3.3 mb
本手册节选

21.3.3.6定义NDB集群数据节点

(ndbd)而且(ndbd违约)节用于配置集群数据节点的行为。

(ndbd)而且(ndbd违约)总是被用作节名,你是否使用ndbdndbmtd用于数据节点进程的二进制文件。

有许多参数控制缓冲区大小、池大小、超时等等。唯一的强制参数是其中之一ExecuteOnComputer主机名;这必须在本地定义(ndbd)部分。

的参数NoOfReplicas应该在(ndbd违约)节,因为它对所有集群数据节点都是通用的。并不是严格需要设置NoOfReplicas,但最好显式地设置它。

大多数数据节点参数设置在(ndbd违约)部分。中仅允许更改显式声明为能够设置本地值的参数(ndbd)部分。现在在哪里,主机名NodeId而且ExecuteOnComputer必须在局部中定义(ndbd)节,而不是在任何其他节config.ini.换句话说,这些参数的设置特定于一个数据节点。

对于那些影响内存使用或缓冲区大小的参数,可以使用K,或G作为后缀,表示单位为1024、1024×1024或1024×1024×1024。(例如,100 k表示100 × 1024 = 102400。)

参数名称和值不区分大小写,除非在MySQL服务器中使用my.cnfmy.ini文件,在这种情况下,它们区分大小写。

关于特定于NDB集群磁盘数据表的配置参数的信息可以在本节后面找到(参见磁盘数据配置参数).

所有这些参数也适用于ndbmtd的多线程版本ndbd).另外三个数据节点配置参数-MaxNoOfExecutionThreadsThreadConfig,NoOfFragmentLogParts应用到ndbmtd只有;这些都没有效果,当与ndbd.有关更多信息,请参见多线程配置参数(ndbmtd).另请参阅第21.4.3节“ndbmtd - NDB集群数据节点守护进程(多线程)”

标识数据节点。NodeIdId值(即数据节点标识符)可以在节点启动时在命令行上分配,也可以在配置文件中分配。

  • NodeId

    版本(或更高版本) NDB 7.5.0
    类型或单位 无符号
    默认的 […]
    范围 1 - 48
    重新启动类型

    是(ndb 7.5.0)

    一个唯一的节点ID用作所有集群内部消息的节点地址。对于数据节点,取值范围为1 ~ 48(含48)。集群中的每个节点必须有唯一的标识符。

    NodeId标识数据节点时使用的唯一受支持的参数名。(Id在NDB 7.5.0中被移除。)

  • ExecuteOnComputer

    版本(或更高版本) NDB 7.5.0
    类型或单位 的名字
    默认的 […]
    范围 ...
    弃用 NDB 7.5.0
    重新启动类型

    S (ndb 7.5.0)

    这是指Id属性中定义的计算机之一(计算机)部分。

    重要的

    该参数在NDB 7.5.0中已弃用,在未来的版本中可能会被移除。使用主机名参数。

  • 主机名

    版本(或更高版本) NDB 7.5.0
    类型或单位 名称或IP地址
    默认的 本地主机
    范围 ...
    重新启动类型

    N (ndb 7.5.0)

    指定此参数将定义数据节点所在计算机的主机名。指定的主机名本地主机,该参数或ExecuteOnComputer是必需的。

  • ServerPort

    版本(或更高版本) NDB 7.5.0
    类型或单位 无符号
    默认的 […]
    范围 1 - 64k
    重新启动类型

    S (ndb 7.5.0)

    集群中的每个节点都使用一个端口连接到其他节点。默认情况下,该端口是动态分配的,以确保同一主机计算机上没有两个节点接收相同的端口号,因此通常不需要为该参数指定值。

    但是,如果您需要在防火墙中开放特定端口以允许数据节点和API节点(包括SQL节点)通信,则可以将此参数设置为防火墙中所需端口的编号(ndbd)节或(如果需要为多个数据节点执行此操作)(ndbd违约)部份config.ini文件,然后为来自SQL节点、API节点或两者的传入连接打开具有该编号的端口。

    请注意

    从数据节点到管理节点的连接使用ndb_mgmd管理端口(管理服务器的端口)PortNumber),因此从任何数据节点到该端口的传出连接应该总是允许的。

  • TcpBind_INADDR_ANY

    将此参数设置为真正的1结合IP_ADDR_ANY因此可以从任何地方建立连接(对于自动生成的连接)。默认为0).

  • 节点组

    版本(或更高版本) NDB 7.5.0
    类型或单位 无符号
    默认的 […]
    范围 0 - 65536
    重新启动类型

    是(ndb 7.5.0)

    该参数用于将数据节点分配给指定的节点组。该参数仅在集群首次启动时生效,不能用于将数据节点在线重新分配给其他节点组。方法中使用此参数通常不可取(ndbd违约)部份config.ini文件,必须注意不要将节点分配给节点组,以免将无效数量的节点分配给任何节点组。

    节点组参数主要用于向正在运行的NDB集群中添加一个新的节点组,而无需执行滚动重启。为此,您应该将其设置为65536(最大值)。不需要设置节点组值,仅适用于稍后将启动并作为新节点组添加到集群的那些节点。有关更多信息,请参见21.5.7.3节“在线添加NDB集群数据节点详细示例”

  • LocationDomainId

    版本(或更高版本) NDB 7.6.4
    类型或单位 整数
    默认的 0
    范围 0 - 16
    添加 NDB 7.6.4
    重新启动类型

    S (ndb 7.5.0)

    将数据节点分配给特定对象可用性域(也称为可用性区域)。的通知NDB在云环境中,哪些节点在哪些可用性域中,可以通过以下方式提高性能:

    • 如果在同一节点上没有找到请求的数据,则可以将读操作定向到同一可用域中的另一个节点。

    • 保证不同可用性域中的节点之间的通信正常使用NDB运输者的广域网支持,无需任何进一步的人工干预。

    • 传输程序的组号可以基于所使用的可用性域,这样SQL和其他API节点也可以在可能的情况下与同一可用性域中的本地数据节点通信。

    • 可以从没有数据节点的可用域中选择仲裁器,如果没有找到这样的可用域,也可以从第三个可用域中选择仲裁器。

    LocationDomainId接受0到16之间的整数值,其中0为默认值;使用0等同于不设置参数。

  • NoOfReplicas

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 2
    范围 1 - 2
    重新启动类型

    是(ndb 7.5.0)

    该全局参数只能在(ndbd违约)节,并定义存储在集群中的每个表的片段副本的数量。该参数还用于指定节点组的大小。节点组是一组存储相同信息的节点。

    节点组是隐式形成的。第一个节点组由具有最低节点id的数据节点集组成,下一个节点组由下一个最低节点标识集组成,依此类推。举个例子,假设我们有4个数据节点NoOfReplicas设置为2。4个数据节点编号分别为2、3、4、5。第一个节点组由节点2和节点3组成,第二个节点组由节点4和节点5组成。重要的是,配置集群时不要将相同节点组中的节点放在同一台计算机上,因为单个硬件故障将导致整个集群故障。

    如果没有提供节点id,则数据节点的顺序是节点组的决定因素。无论是否进行了显式分配,都可以在管理客户端的输出中查看它们显示命令。

    的默认和建议最大值NoOfReplicas是2。这是大多数生产环境的推荐值

    重要的

    虽然理论上这个参数的值可能是3或4,“NDB集群7.5”和“NDB集群7.6”不支持设置NoOfReplicas到生产中大于2的值

    警告

    设置NoOfReplicasto 1表示所有Cluster数据只有一个副本;在这种情况下,单个数据节点的丢失将导致集群失败,因为该节点没有存储额外的数据副本。

    集群中的数据节点个数必须能被该参数整除。例如,如果有两个数据节点,那么NoOfReplicas必须等于1或2,因为2/3和2/4都产生小数;如果有四个数据节点,那么NoOfReplicas必须等于1 2或4。

  • DataDir

    版本(或更高版本) NDB 7.5.0
    类型或单位 路径
    默认的
    范围 ...
    重新启动类型

    In (ndb 7.5.0)

    该参数指定跟踪文件、日志文件、pid文件和错误日志的存放路径。

    默认为数据节点进程工作目录。

  • FileSystemPath

    版本(或更高版本) NDB 7.5.0
    类型或单位 路径
    默认的 DataDir
    范围 ...
    重新启动类型

    In (ndb 7.5.0)

    该参数指定存放为元数据、REDO日志、UNDO日志(磁盘数据表)和数据文件创建的所有文件的目录。默认为指定的目录DataDir

    请注意

    目录之前必须存在此目录ndbd进程启动。

    NDB集群推荐的目录层次结构包括/var/lib/mysql-cluster,在该目录下创建节点文件系统的目录。该子目录的名称包含节点ID。例如,节点ID为2,则该子目录的名称为ndb_2_fs

  • BackupDataDir

    版本(或更高版本) NDB 7.5.0
    类型或单位 路径
    默认的 FileSystemPath
    范围 ...
    重新启动类型

    In (ndb 7.5.0)

    此参数指定放置备份的目录。

    重要的

    绳子'/备份'总是被附加到这个值。例如,如果您设置的值BackupDataDir/var/lib/cluster-data,则所有备份都存储在/var/lib/cluster-data /备份.这也意味着有效的默认备份位置为备份属性指定的位置下FileSystemPath参数。

数据内存,索引内存和字符串内存

DataMemory而且IndexMemory(ndbd)参数,指定用于存储实际记录及其索引的内存段的大小。在为这些设置值时,了解如何设置是很重要的DataMemory而且IndexMemory,因为它们通常需要更新以反映集群的实际使用情况。

请注意

IndexMemory在NDB 7.6中已弃用,并可能在NDB集群的未来版本中被移除。有关进一步信息,请参阅后面的描述。

  • DataMemory

    版本(或更高版本) NDB 7.5.0
    类型或单位 字节
    默认的 80米
    范围 1m - 1t
    版本(或更高版本) NDB土壤质素
    类型或单位 字节
    默认的 98米
    范围 1m - 1t
    重新启动类型

    N (ndb 7.5.0)

    此参数定义可用来存储数据库记录的空间量(以字节为单位)。这个值指定的全部数量分配在内存中,因此机器有足够的物理内存来容纳它是非常重要的。

    分配的内存DataMemory用于存储实际记录和索引。每条记录有16个字节的开销;每条记录都会产生额外的金额,因为它存储在一个32KB的页面中,页面开销为128字节(见下文)。由于每条记录只存储在一个页面中,因此每页也有少量的浪费。

    对于可变大小的表属性,数据存储在单独的数据页上,从DataMemory.变长记录使用固定大小的部分,额外开销为4字节来引用可变大小的部分。可变大小部分的开销为2字节,每个属性为2字节。

    最大记录大小为14000字节。

    在NDB 7.5(及更早版本)中,定义的内存空间DataMemory也用于存储有序索引,每条记录使用大约10个字节。每个表行都在有序索引中表示。用户中常见的错误是假定所有索引都存储在分配的内存中IndexMemory,但事实并非如此:只有主键和唯一哈希索引使用这个内存;有序索引使用分配的内存DataMemory.但是,除非您指定,否则创建主键或唯一哈希索引也会在相同的键上创建有序索引使用哈希在索引创建语句中。这可以通过运行来验证ndb_desc - ddb_nametable_name

    在NDB 7.6中,分配给DataMemory用于储存所有数据和索引;任何配置为IndexMemory自动添加到DataMemory形成一个公共资源池。

    目前,NDB集群每个分区最多可以使用512 MB的哈希索引,这意味着在某些情况下可以获得桌子满了MySQL客户端应用程序的错误ndb_mgm -e "所有报告内存使用情况"显示出明显的自由DataMemory.这还可能导致数据节点在数据负载过重的节点上重新启动的问题。

    在NDB 7.5.4及以后版本中,您可以通过设置NDB_TABLE选项PARTITION_BALANCE到其中一个值FOR_RA_BY_LDMFOR_RA_BY_LDM_X_2FOR_RA_BY_LDM_X_3,或FOR_RA_BY_LDM_X_4,在创建表时,为每个LDM分别配置1、2、3或4个分区(请参见章节13.1.18.9,设置NDB_TABLE选项).

    请注意

    在以前的NDB集群版本中,可以为NDB集群表创建额外的分区,这样就有了更多的内存用于哈希索引MAX_ROWS选择创建表.虽然仍然支持向后兼容性,使用MAX_ROWS从NDB 7.5.4开始就不建议使用了,在那里你应该使用PARTITION_BALANCE代替。

    你也可以使用MinFreePct配置参数,以帮助避免节点重启问题。

    所分配的内存空间DataMemory由32KB的页面组成,这些页面被分配给表片段。每个表通常被划分为与集群中的数据节点相同数量的片段。因此,对于每个节点,都有相同数量的片段NoOfReplicas

    一旦分配了一个页,目前不可能将其返回到空闲页池,除非删除表。(这也意味着DataMemory页面一旦分配给给定的表,就不能被其他表使用。)执行数据节点恢复还会压缩分区,因为所有记录都是从其他活动节点插入到空分区中。

    DataMemory内存空间还包含UNDO信息:对于每次更新,未更改记录的副本分配在DataMemory.在已排序的表索引中还有对每个副本的引用。唯一哈希索引只有在唯一索引列更新时才会更新,在这种情况下,索引表中的新条目将被插入,旧条目将在提交时删除。因此,还需要分配足够的内存来处理使用集群的应用程序执行的最大事务。在任何情况下,执行几个大型事务并不比使用许多小型事务有优势,原因如下:

    • 大型事务并不比小型事务快

    • 大型事务增加了丢失的操作数量,在事务失败时必须重复这些操作

    • 大的事务使用更多的内存

    在NDB 7.5(及更早版本)中,的默认值DataMemory是80 mb;从NDB 7.6.2开始,这是98MB。最小值为1MB。没有最大大小,但实际上必须调整最大大小,以便在达到限制时进程不会开始交换。这个限制是由机器上可用的物理RAM数量和操作系统可以提交给任何一个进程的内存量决定的。32位操作系统通常限制在每个进程2- 4GB;64位操作系统可以使用更多。对于大型数据库,出于这个原因,最好使用64位操作系统。

  • IndexMemory

    版本(或更高版本) NDB 7.5.0
    类型或单位 字节
    默认的 18米
    范围 1m - 1t
    版本(或更高版本) NDB土壤质素
    类型或单位 字节
    默认的 0
    范围 1m - 1t
    弃用 NDB土壤质素
    重新启动类型

    N (ndb 7.5.0)

    在NDB 7.5及更早版本中,该参数控制NDB集群中用于哈希索引的存储量。哈希索引总是用于主键索引、唯一索引和唯一约束。在定义主键或唯一索引时,将创建两个索引,其中一个是用于所有元组访问和锁处理的哈希索引。此索引还用于强制惟一的约束。

    从NDB 7.6.2开始,IndexMemory参数已弃用(并将在将来删除);分配给的任何内存IndexMemory而是分配到与DataMemory,它完全负责在内存中存储数据和索引所需的所有资源。在NDB 7.6.2及以后版本中,使用IndexMemory在集群配置文件中触发来自管理服务器的警告。

    你可以用下面的公式来估计哈希索引的大小:

    大小= (片段* 32k) + (* 18)) *fragment_replicas

    片段是片段的数量,fragment_replicas片段副本的数量(通常是两个),和是行数。如果一个表有一百万行,八个片段和两个片段副本,预期的索引内存使用计算如下所示:

    ((8 * 32K) +(1000000 * 18)) * 2 =((8 * 32768) +(1000000 * 18)) * 2 =(262144 + 18000000) * 2 = 18262144 * 2 = 36524288字节= ~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属性在有序索引键,和基表中的行数。

    假设这张表t1有100万行和一个有序索引命名ix1在两个四字节整数上。此外,假设IndexStatSaveSize而且IndexStatSaveScale设置为默认值(分别为32K和100)。利用前面2个公式,我们可以计算如下:

    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 7.6.2之前,默认值为IndexMemory为18MB,最低为1mb;在NDB 7.6.2及以后版本中,该参数的最小值和默认值为0(零)。这意味着从NDB 7.6到更早版本的NDB集群的降级;看到21.2.7节“升级和降级新db集群”,以获取更多资料。

  • StringMemory

    版本(或更高版本) NDB 7.5.0
    类型或单位 %或字节
    默认的 25
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    S (ndb 7.5.0)

    此参数确定为字符串(如表名)分配多少内存,并在(ndbd)(ndbd违约)部份config.ini文件。值为0而且One hundred.包含被解释为最大默认值的百分比,该百分比是根据许多因素计算的,包括表的数量、表名的最大大小、的最大大小.FRM文件,MaxNoOfTriggers、最大列名大小和最大默认列值。

    值大于One hundred.解释为字节数。

    默认值为25,即默认最大值的25%。

    在大多数情况下,默认值应该是足够的,但当您有很多NDB表(1000或更多),有可能得到错误773string内存不足,请修改StringMemory配置参数:永久错误:模式错误,在这种情况下,您应该增加该值。25(25%)并不过分,应该可以防止这种错误在除最极端条件外的所有情况下再次发生。

下面的示例说明如何为表使用内存。考虑下面的表定义:

创建实例(a INT NOT NULL, b INT NOT NULL, c INT NOT NULL,主键(a),唯一(b))引擎=NDBCLUSTER;

对于每条记录,有12个字节的数据加上12个字节的开销。没有可空列可以节省4个字节的开销。此外,列上还有两个有序下标一个而且b每条记录消耗大约10个字节。基表上有一个主键哈希索引,每条记录大约使用29个字节。唯一约束由单独的表实现b作为主键一个作为一列。表中的每条记录额外消耗29字节的索引内存例子表以及8字节的记录数据加上12字节的开销。

因此,对于一百万条记录,我们需要58MB的索引内存来处理主键和唯一约束的哈希索引。我们还需要64MB用于基本表和唯一索引表的记录,以及两个有序索引表。

你可以看到哈希索引占用了相当多的内存空间;然而,作为回报,它们提供了对数据的非常快的访问。它们也在NDB集群中用于处理唯一性约束。

目前,唯一的分区算法是哈希,有序索引是每个节点的本地索引。因此,在一般情况下,有序索引不能用于处理唯一性约束。

这一点对双方都很重要IndexMemory而且DataMemory数据库的总大小是每个节点组的所有数据内存和所有索引内存的总和。每个节点组用于存储复制的信息,因此如果有四个节点和两个片段副本,那么就有两个节点组。因此,可用的总数据内存为2 ×DataMemory对于每个数据节点。

强烈建议DataMemory而且IndexMemory为所有节点设置相同的值。数据在集群中所有节点上的分布是均匀的,因此任何节点的最大可用空间量不能大于集群中最小节点的可用空间量。

DataMemory(在NDB 7.5及更早版本IndexMemory)可以改变,但减少它可能有风险;这样做很容易导致一个节点甚至整个NDB集群由于内存空间不足而无法重新启动。增加应该是可以接受的,但建议以与软件升级相同的方式执行此类升级,首先更新配置文件,然后重新启动管理服务器,然后依次重新启动每个数据节点。

MinFreePct。数据节点资源占比(默认5%),包括DataMemory(在NDB 7.5及更早版本中,IndexMemory)保留,以确保数据节点在执行重新启动时不会耗尽其内存。可以使用MinFreePct数据节点配置参数(默认为5)。

版本(或更高版本) NDB 7.5.0
类型或单位 无符号
默认的 5
范围 0 - 100
重新启动类型

N (ndb 7.5.0)

更新不会增加索引内存量。插入立即生效;但是,直到事务提交后才会实际删除行。

交易参数。接下来的几个(ndbd)我们讨论的参数很重要,因为它们影响并行事务的数量和系统可以处理的事务的大小。MaxNoOfConcurrentTransactions设置一个节点中可能的并行事务数。MaxNoOfConcurrentOperations设置可以同时处于更新阶段或锁定的记录数。

这两个参数(特别是MaxNoOfConcurrentOperations)可能是用户设置特定值而不使用默认值的目标。默认值是为使用小型事务的系统设置的,以确保这些事务不会使用过多的内存。

MaxDMLOperationsPerTransaction设置在给定事务中可以执行的DML操作的最大数量。

  • MaxNoOfConcurrentTransactions

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 4096
    范围 32 - 4294967039 (0xFFFFFEFF)
    弃用 是(NDB 8.0)
    重新启动类型

    N (ndb 7.5.0)

    每个集群数据节点都需要集群中每个活动事务的事务记录。协调事务的任务分布在所有数据节点之间。集群中的事务记录总数是任意给定节点中的事务数量乘以集群中的节点数量。

    事务记录被分配给单独的MySQL服务器。到MySQL服务器的每个连接至少需要一个事务记录,以及由该连接访问的每个表一个额外的事务对象。这意味着集群中事务总数的合理最小值可以表示为

    TotalNoOfConcurrentTransactions =(在任何单个事务中访问的最大表数+ 1)* SQL节点数

    假设有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

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 32 k
    范围 32 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    根据事务的大小和数量调整这个参数的值是个好主意。当执行只涉及少量操作和记录的事务时,该参数的默认值通常就足够了。执行涉及许多记录的大型事务通常需要增加记录的值。

    每个事务更新集群数据的记录都保存在事务协调器和执行实际更新的节点中。这些记录包含为回滚、锁定队列和其他目的查找UNDO记录所需的状态信息。

    此参数应设置为事务中要同时更新的记录数量,除以集群数据节点的数量。例如,在一个有4个数据节点的集群中,预计将使用事务处理100万个并发更新,您应该将这个值设置为1000000 / 4 = 250000。为了帮助提供针对故障的弹性,建议您将此参数设置为一个足够高的值,以允许单个数据节点处理其节点组的负载。换句话说,您应该将值设置为并发操作总数/节点组数.(如果是单节点组,则与整个集群的并发操作总数相同。)

    因为每个事务总是至少涉及一个操作,值MaxNoOfConcurrentOperations应该总是大于或等于的值MaxNoOfConcurrentTransactions

    设置锁的读取查询也会导致创建操作记录。在单个节点中分配一些额外的空间,以适应在节点上分布不完美的情况。

    当查询使用唯一哈希索引时,事务中的每个记录实际上使用两个操作记录。第一条记录表示索引表中的读取操作,第二条记录处理基表上的操作。

    缺省值为32768。

    这个参数实际上处理两个可以单独配置的值。第一个参数指定将多少个操作记录放在事务协调器中。第二部分指定数据库本地有多少操作记录。

    在八节点集群上执行的非常大的事务需要事务协调器中的操作记录与事务中涉及的读取、更新和删除一样多。但是,操作记录分布在所有8个节点上。因此,如果需要为一个非常大的事务配置系统,最好分别配置这两个部分。MaxNoOfConcurrentOperations总是用于计算节点的事务协调器部分中的操作记录数量。

    了解操作记录的内存需求也很重要。每条记录占用大约1KB。

  • MaxNoOfLocalOperations

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 未定义的
    范围 32 - 4294967039 (0xFFFFFEFF)
    弃用 是(NDB 8.0)
    重新启动类型

    N (ndb 7.5.0)

    缺省情况下,该参数为1.1 ×MaxNoOfConcurrentOperations.这适用于具有许多同时事务的系统,它们都不是很大的事务。如果需要一次处理一个非常大的事务,并且有很多节点,那么通过显式指定此参数来覆盖默认值是一个好主意。

  • MaxDMLOperationsPerTransaction

    版本(或更高版本) NDB 7.5.0
    类型或单位 操作(DML)
    默认的 4294967295
    范围 32 - 4294967295
    重新启动类型

    N (ndb 7.5.0)

    此参数限制事务的大小。如果事务需要的DML操作超过这个数,事务就会中止。每个事务的最小操作数为32;但是,您可以设置MaxDMLOperationsPerTransaction到0以禁用对每个事务的DML操作数量的任何限制。最大值(和默认值)是4294967295。

事务临时存储。下一组(ndbd)参数用于在执行作为Cluster事务一部分的语句时确定临时存储。当语句完成并且集群正在等待提交或回滚时,所有记录都将被释放。

对于大多数情况,这些参数的默认值已经足够了。但是,需要支持涉及大量行或操作的事务的用户可能需要增加这些值,以便在系统中实现更好的并行性,而应用程序需要相对较小事务的用户可以减小这些值以节省内存。

  • MaxNoOfConcurrentIndexOperations

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 8 k
    范围 0 - 4294967039 (0xFFFFFEFF)
    弃用 是(NDB 8.0)
    重新启动类型

    N (ndb 7.5.0)

    对于使用唯一哈希索引的查询,在查询执行阶段使用另一组临时操作记录。此参数设置记录池的大小。因此,此记录仅在执行查询的一部分时分配。一旦执行了这一部分,记录就会被发布。处理中止和提交所需的状态由正常操作记录处理,其中池大小由参数设置MaxNoOfConcurrentOperations

    缺省值为8192。只有在使用唯一哈希索引的极少数并行性极高的情况下才需要增加这个值。如果DBA确定集群不需要高度的并行性,则可以使用较小的值来节省内存。

  • MaxNoOfFiredTriggers

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 4000
    范围 0 - 4294967039 (0xFFFFFEFF)
    弃用 是(NDB 8.0)
    重新启动类型

    N (ndb 7.5.0)

    的默认值MaxNoOfFiredTriggers为4000,这对于大多数情况都是足够的。在某些情况下,如果DBA确信集群对并行性的需求不高,甚至可以减少并行性。

    当执行影响唯一哈希索引的操作时,将创建一条记录。在具有唯一哈希索引的表中插入或删除记录,或更新作为唯一哈希索引一部分的列,将触发索引表中的插入或删除操作。生成的记录用于表示该索引表操作,同时等待触发该操作的原始操作完成。此操作的寿命很短,但对于包含一组惟一哈希索引的基表上有许多并行写操作的情况,它的池中仍然需要大量记录。

  • TransactionBufferMemory

    版本(或更高版本) NDB 7.5.0
    类型或单位 字节
    默认的 1米
    范围 1K - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    受此参数影响的内存用于跟踪更新索引表和读取唯一索引时触发的操作。这个内存用于存储这些操作的键和列信息。很少需要更改此参数的默认值。

    的默认值TransactionBufferMemory是1 mb。

    正常的读写操作使用类似的缓冲区,其使用时间更短。编译时参数ZATTRBUF_FILESIZE(中ndb / src /内核/块/ Dbtc / Dbtc.hpp)设置为4000 × 128字节(500KB)。一个类似的关键信息缓冲区,ZDATABUF_FILESIZE(还在Dbtc.hpp)包含4000 × 16 = 62.5KB的缓冲空间。Dbtc是处理事务协调的模块。

扫描和缓冲。还有其他的(ndbd)参数Dblqh模块(在ndb / src /内核/块/ Dblqh / Dblqh.hpp),影响读取和更新。这些包括ZATTRINBUF_FILESIZE,默认为10000 × 128字节(1250KB)ZDATABUF_FILE_SIZE,默认设置为10000*16字节(大约156KB)的缓冲空间。到目前为止,既没有来自用户的任何报告,也没有来自我们自己的大量测试的任何结果表明应该增加这两个编译时间限制中的任何一个。

  • BatchSizePerLocalScan

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 256
    范围 1 - 992
    弃用 是(NDB 8.0)
    重新启动类型

    N (ndb 7.5.0)

    此参数用于计算用于处理并发扫描操作的锁记录的数量。

    BatchSizePerLocalScan有很强的联系BatchSize定义在SQL节点中。

  • LongMessageBuffer

    版本(或更高版本) NDB 7.5.0
    类型或单位 字节
    默认的 64米
    范围 512K - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    这是一个内部缓冲区,用于在各个节点内和节点之间传递消息。默认为64MB。

    该参数很少需要从默认值更改。

  • MaxFKBuildBatchSize

    版本(或更高版本) NDB 7.6.4
    类型或单位 整数
    默认的 64
    范围 16 - 512
    添加 NDB 7.6.4
    重新启动类型

    N (ndb 7.5.0)

    用于构建外键的最大扫描批大小。增加此参数的值可能会加快外键构建的速度,但代价是对正在进行的流量产生更大的影响。

    NDB 7.6.4新增

  • MaxNoOfConcurrentScans

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 256
    范围 2 - 500
    重新启动类型

    N (ndb 7.5.0)

    该参数用于控制集群中并行扫描的个数。每个事务协调器都可以处理为此参数定义的并行扫描的数量。每个扫描查询都是通过并行扫描所有分区来执行的。每次分区扫描都使用分区所在节点中的一条扫描记录,记录数量为该参数的值乘以节点数量。集群应该能够维持下去MaxNoOfConcurrentScans从集群中的所有节点进行并发扫描。

    扫描实际上有两种情况。第一种情况发生在不存在用于处理查询的散列或有序索引时,在这种情况下,通过执行全表扫描来执行查询。当没有哈希索引来支持查询,但有一个有序索引时,会遇到第二种情况。使用有序索引意味着执行并行范围扫描。顺序只保留在本地分区上,因此有必要对所有分区执行索引扫描。

    的默认值MaxNoOfConcurrentScans是256。最大值为500。

  • MaxNoOfLocalScans

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 4 * MaxNoOfConcurrentScans *[#数据节点]+ 2
    范围 32 - 4294967039 (0xFFFFFEFF)
    弃用 是(NDB 8.0)
    重新启动类型

    N (ndb 7.5.0)

    如果许多扫描没有完全并行,则指定本地扫描记录的数量。当不提供本地扫描记录数时,计算方法如下所示:

    4 * MaxNoOfConcurrentScans *[#数据节点]+ 2

    最小值为32。

  • MaxParallelCopyInstances

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 0
    范围 0 - 64
    重新启动类型

    N (ndb 7.5.0)

    这个参数设置了在节点重启或系统重启的复制阶段中使用的并行化,当当前正在启动的节点通过复制最新节点的任何更改记录来与已经拥有当前数据的节点同步时。因为在这种情况下完全并行会导致过载情况,MaxParallelCopyInstances提供了一种降低它的方法。该参数的默认值为0。这个值意味着有效并行度等于刚启动的节点和更新它的节点中的LDM实例的数量。

  • MaxParallelScansPerFragment

    版本(或更高版本) NDB 7.5.0
    类型或单位 字节
    默认的 256
    范围 1 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    可以配置并行扫描的最大数量(锤头扫描和晚礼服在开始排队进行串行处理之前,允许扫描)。在并行执行大量扫描时,您可以增加这个值,以利用任何未使用的CPU,并提高其性能。

  • MaxReorgBuildBatchSize

    版本(或更高版本) NDB 7.6.4
    类型或单位 整数
    默认的 64
    范围 16 - 512
    添加 NDB 7.6.4
    重新启动类型

    N (ndb 7.5.0)

    用于重新组织表分区的最大扫描批大小。增加此参数设置的值可能会加速重组,但代价是对正在进行的流量产生更大的影响。

    NDB 7.6.4新增

  • MaxUIBuildBatchSize

    版本(或更高版本) NDB 7.6.4
    类型或单位 整数
    默认的 64
    范围 16 - 512
    添加 NDB 7.6.4
    重新启动类型

    N (ndb 7.5.0)

    用于构建唯一密钥的最大扫描批大小。增加此参数设置的值可能会加速此类构建,但代价是对正在进行的流量产生更大的影响。

    NDB 7.6.4新增

内存分配

MaxAllocate

版本(或更高版本) NDB 7.5.0
类型或单位 无符号
默认的 32米
范围 1m - 1g
重新启动类型

N (ndb 7.5.0)

这是为表分配内存时使用的内存单元的最大大小。在以下情况下NDB给了内存不足错误,但通过检查集群日志或转储1000如果所有可用内存尚未被使用,则可以增加此参数的值(或MaxNoOfTables,或两者兼有)导致NDB使足够的内存可用。

哈希映射大小

DefaultHashMapSize

版本(或更高版本) NDB 7.5.0
类型或单位 LDM线程
默认的 240
范围 0 - 3840
重新启动类型

N (ndb 7.5.0)

所使用的表哈希映射的大小NDB可通过此参数配置。DefaultHashMapSize可以取三个可能值中的任意一个(0,240,3840)。

这个参数最初的用途是方便升级,特别是从具有不同默认哈希映射大小的非常旧的版本升级和降级。从NDB Cluster 7.3(或更高版本)升级到更高版本时,这不是问题。

在创建或修改任何表之后在线减少此参数DefaultHashMapSize不支持等于3840。

日志记录和检查点。以下(ndbd)参数控制日志和检查点行为。

  • FragmentLogFileSize

    版本(或更高版本) NDB 7.5.0
    类型或单位 字节
    默认的 16米
    范围 4m - 1g
    重新启动类型

    In (ndb 7.5.0)

    设置此参数可以直接控制重做日志文件的大小。这在NDB集群在高负载下运行时非常有用,并且在尝试打开新的片段日志文件之前无法足够快地关闭片段日志文件(一次只能打开2个片段日志文件);增加片段日志文件的大小可以让集群在不得不打开每个新的片段日志文件之前有更多的时间。默认值为16M。

    有关片段日志文件的详细信息,请参见NoOfFragmentLogFiles

  • InitialNoOfOpenFiles

    版本(或更高版本) NDB 7.5.0
    类型或单位 文件
    默认的 27
    范围 20 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    此参数设置为打开的文件分配的初始内部线程数。

    缺省值为27。

  • InitFragmentLogFiles

    版本(或更高版本) NDB 7.5.0
    类型或单位 (参见值)
    默认的 稀疏的
    范围 稀疏的,满
    重新启动类型

    In (ndb 7.5.0)

    默认情况下,在执行数据节点的初始启动时,片段日志文件是稀疏地创建的——也就是说,根据所使用的操作系统和文件系统,并不是所有字节都必须写入磁盘。但是,可以通过此参数重写此行为并强制写入所有字节,而不管所使用的平台和文件系统类型是什么。InitFragmentLogFiles取两个值中的任意一个:

    • 稀疏的.分片日志文件是稀疏地创建的。这是默认值。

    • 完整的.强制将片段日志文件的所有字节写入磁盘。

    根据您的操作系统和文件系统,设置InitFragmentLogFiles =全可以帮助消除写入REDO日志时的I/O错误。

  • EnablePartialLcp

    版本(或更高版本) NDB 7.6.4
    类型或单位 布尔
    默认的 真正的
    范围 ...
    添加 NDB 7.6.4
    重新启动类型

    N (ndb 7.5.0)

    真正的,启用局部本地检查点:这意味着每个LCP只记录整个数据库的一部分,加上自上一个LCP以来更改的任何记录;如果没有行更改,则LCP只更新LCP控制文件,不更新任何数据文件。

    如果EnablePartialLcp已禁用(),每个LCP只使用一个文件,并写一个完整的检查点;这对LCP需要最少的磁盘空间,但增加了每个LCP的写负载。默认值为enabled (真正的).的设置可以修改部分LCPS使用的空间比例RecoveryWork配置参数。

    有关用于完整和部分lcp的文件和目录的详细信息,请参见集群数据节点文件系统目录

    在NDB 7.6.7及以后版本中将此参数设置为也禁止自适应LCP控制机制使用的磁盘写速度的计算。

  • LcpScanProgressTimeout

    版本(或更高版本) NDB 7.5.0
    类型或单位 第二个
    默认的 60
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    本地检查点片段扫描看门狗定期检查作为本地检查点的一部分执行的每个片段扫描是否没有进展,如果在给定的时间过去后没有进展,则关闭节点。方法设置此间隔LcpScanProgressTimeoutdata节点配置参数,用于设置LCP分片扫描看门狗关闭节点前本地检查点暂停的最长时间。

    默认值是60秒(提供与以前版本的兼容性)。将该参数设置为0时,禁用LCP分片扫描看门狗。

  • MaxNoOfOpenFiles

    版本(或更高版本) NDB 7.5.0
    类型或单位 无符号
    默认的 0
    范围 20 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    这个参数设置了为打开的文件分配多少内部线程的上限。任何需要更改此参数的情况都应作为错误报告

    缺省值为0。但是,该参数可以设置的最小值为20。

  • MaxNoOfSavedMessages

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 25
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    此参数设置写入错误日志的最大错误数,以及在覆盖现有跟踪文件之前保留的最大跟踪文件数。当节点由于某种原因崩溃时,将生成跟踪文件。

    默认值是25,它将这些最大值设置为25条错误消息和25个跟踪文件。

  • MaxLCPStartDelay

    版本(或更高版本) NDB 7.5.0
    类型或单位
    默认的 0
    范围 0 - 600
    重新启动类型

    N (ndb 7.5.0)

    在并行数据节点恢复中,实际上只有表数据被并行复制和同步;元数据(如字典和检查点信息)的同步是以串行方式完成的。此外,字典和检查点信息的恢复不能与本地检查点的执行同时进行。这意味着,当并发地启动或重新启动多个数据节点时,数据节点可能被迫在执行本地检查点时等待,这可能导致更长的节点恢复时间。

    可以在本地检查点强制延迟以允许更多(可能是所有)数据节点完成元数据同步;一旦每个数据节点的元数据同步完成,所有数据节点都可以并行地恢复表数据,甚至在执行本地检查点时也是如此。要强制这样的延迟,请设置MaxLCPStartDelay,它决定了在数据节点继续同步元数据时,集群可以等待启动本地检查点的秒数。该参数需要在(ndbd违约)部份config.ini文件,以便对所有数据节点都是相同的。最大值为600;默认值为0。

  • NoOfFragmentLogFiles

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 16
    范围 3 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    In (ndb 7.5.0)

    该参数设置节点的REDO日志文件数量,以及分配给REDO日志的空间大小。因为REDO日志文件是在一个环中组织的,所以集合中的第一个和最后一个日志文件(有时称为而且尾巴日志文件)不满足。当它们彼此过于接近时,节点开始中止包含更新的所有事务,因为没有空间容纳新的日志记录。

    一个重做插入日志记录后,直到两个必需的本地检查点都已完成,才会删除日志记录。检查点的频率由它自己的配置参数集决定,在本章的其他地方讨论过。

    默认值为16,默认为16组4个16MB的文件,总容量为1024MB。属性可配置各个日志文件的大小FragmentLogFileSize参数。在需要大量更新的场景中,为的值NoOfFragmentLogFiles可能需要设置为300甚至更高,以便为REDO日志提供足够的空间。

    如果检查点很慢,并且对数据库的写操作太多,导致日志文件已满,并且不能在不危及恢复的情况下切断日志尾,则所有更新事务都会中止,并使用内部错误代码410 (日志文件空间暂时不足).这种情况一直存在,直到检查点完成,日志尾可以向前移动。

    重要的

    该参数不可修改忙碌地;必须使用。重启节点——初始.如果希望为运行中的集群中的所有数据节点更改此值,可以使用滚动节点重新启动(使用——初始当启动每个数据节点时)。

  • RecoveryWork

    版本(或更高版本) NDB 7.6.4
    类型或单位 整数
    默认的 50
    范围 25 - 100
    版本(或更高版本) NDB 7.6.5
    类型或单位 整数
    默认的 60
    范围 25 - 100
    添加 NDB 7.6.4
    重新启动类型

    N (ndb 7.5.0)

    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可在存储/ ndb / src /内核/块/备份/.要在Unix平台上编译并运行它,执行下面所示的命令:

    Shell > GCC lcp_simulator。Cc shell> ./ a.b out

    这个程序除了stdio . h,不需要连接到NDB集群或MySQL服务器。默认情况下,它模拟300个LCP(三组,每组100个LCP,依次由插入、更新和删除组成),并在每个LCP之后报告LCP的大小。的值可以更改模拟recovery_workinsert_work,delete_work在源代码中重新编译。有关更多信息,请参阅该程序的源代码。

  • InsertRecoveryWork

    版本(或更高版本) NDB 7.6.5
    类型或单位 整数
    默认的 40
    范围 0 - 70
    添加 NDB 7.6.5
    重新启动类型

    N (ndb 7.5.0)

    的百分比RecoveryWork用于插入的行。较高的值将增加本地检查点期间的写次数,并减小LCP的总大小。较低的值会减少LCP期间的写次数,但会导致为LCP使用更多的空间,这意味着恢复需要更长的时间。该参数仅当EnablePartialLcp仅在启用部分本地检查点时为true。

  • EnableRedoControl

    版本(或更高版本) NDB 7.6.7
    类型或单位 布尔
    默认的
    范围 ...
    添加 NDB 7.6.7
    重新启动类型

    N (ndb 7.5.0)

    启用自适应检查点速度来控制重做日志的使用。设置为禁用(默认值)。设置EnablePartialLcp同时禁用自适应计算。

    当启用时,EnableRedoControl允许数据节点在将lcp写入磁盘的速率方面具有更大的灵活性。更具体地说,启用该参数意味着可以使用更高的写速率,以便更快地完成lcp并修整Redo日志,从而减少恢复时间和磁盘空间需求。该功能允许数据节点更好地利用现代固态存储设备和协议提供的更高的I/O速率和更大的带宽,例如使用非易失性内存快速(NVMe)的固态硬盘(ssd)。

    该参数当前默认为(禁用)由于事实NDB仍然广泛部署在I/O或带宽相对于采用固态技术的系统(例如使用传统硬盘的系统)上。在这样的设置中,EnableRedoControl机制很容易导致I/O子系统饱和,增加数据节点输入和输出的等待时间。特别是,这可能会导致NDB磁盘数据表的问题,这些表空间或日志文件组与数据节点LCP和重做日志文件共享一个受限的IO子系统;这些问题可能包括由于GCP停止错误导致的节点或集群故障。

元数据对象。下一组(ndbd)参数定义元数据对象的池大小,用于定义集群间索引、事件和复制使用的属性、表、索引和触发器对象的最大数量。

请注意

它们的作用仅仅是建议到集群,而未指定的则恢复为所示的默认值。

  • MaxNoOfAttributes

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 1000
    范围 32 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    该参数设置可以在集群中定义的属性的建议最大数量;就像MaxNoOfTables,它不打算作为一个硬上限。

    (在旧的NDB集群版本中,该参数有时被视为某些操作的硬限制。这导致了NDB集群复制的问题,当创建的表可能比复制的表多时,有时会导致混乱,当创建的表可能[或不可能,取决于情况]超过时MaxNoOfAttributes属性)。

    缺省值为1000,最小值为32。最大值为4294967039。由于所有元数据都完全复制在服务器上,每个属性每个节点消耗大约200字节的存储空间。

    当设置MaxNoOfAttributes因此,提前做好任何准备都是很重要的ALTER TABLE将来可能要执行的语句。这是由于事实,在执行过程中ALTER TABLE在Cluster表上,使用的属性数量是原始表的3倍,一个良好的实践是允许这个数量的两倍。例如,如果NDB集群表拥有最多数量的属性(greatest_number_of_attributes的值有100个属性,这是一个很好的起点MaxNoOfAttributes6 *greatest_number_of_attributes= 600

    您还应该估计每个表的平均属性数量,并将其乘以MaxNoOfTables.如果这个值大于上一段中获得的值,则应该使用较大的值。

    假设您可以毫无问题地创建所有所需的表,您还应该通过尝试实际的表来验证这个数量是否足够ALTER TABLE参数配置完成后。如果不成功,增加MaxNoOfAttributes再乘以MaxNoOfTables再测试一次。

  • MaxNoOfTables

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 128
    范围 8 - 20320
    重新启动类型

    N (ndb 7.5.0)

    为集群中的每个表和每个惟一哈希索引分配一个表对象。该参数为整个集群设置建议的表对象的最大数量;就像MaxNoOfAttributes,它不打算作为一个硬上限。

    (在旧的NDB集群版本中,该参数有时被视为某些操作的硬限制。这导致了NDB集群复制的问题,当创建的表可能比复制的表多时,有时会导致混乱,当创建的表可能[或不可能,取决于情况]超过时MaxNoOfTables表)。

    对于每个属性数据类型的一个额外表用于存储大部分数据。在定义表的总数时,还必须考虑到这些表。

    缺省值为128。最小值为8,最大值为20320。每个表对象每个节点占用大约20KB。

    请注意

    的和MaxNoOfTablesMaxNoOfOrderedIndexes,MaxNoOfUniqueHashIndexes不得超过232−2(4294967294)。

  • MaxNoOfOrderedIndexes

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 128
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    对于集群中的每个有序索引,分配一个对象,描述被索引的对象及其存储段。默认情况下,这样定义的每个索引还定义一个有序索引。每个唯一索引和主键都有一个有序索引和一个哈希索引。MaxNoOfOrderedIndexes设置在任何时候系统中可以使用的有序索引的总数。

    缺省值为128。每个索引对象每个节点消耗大约10KB的数据。

    请注意

    的和MaxNoOfTablesMaxNoOfOrderedIndexes,MaxNoOfUniqueHashIndexes不得超过232−2(4294967294)。

  • MaxNoOfUniqueHashIndexes

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 64
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    对于每个不是主键的唯一索引,分配一个特殊的表,将唯一键映射到索引表的主键。默认情况下,还为每个惟一索引定义了有序索引。为防止这种情况,必须指定使用哈希选项。

    缺省值为64。每个索引每个节点占用大约15KB。

    请注意

    的和MaxNoOfTablesMaxNoOfOrderedIndexes,MaxNoOfUniqueHashIndexes不得超过232−2(4294967294)。

  • MaxNoOfTriggers

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 768
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    为每个惟一的散列索引分配内部更新、插入和删除触发器。(这意味着为每个惟一哈希索引创建三个触发器。)然而,一个命令索引只需要一个触发器对象。备份还为集群中的每个普通表使用三个触发器对象。

    集群之间的复制也使用内部触发器。

    该参数设置集群中触发对象的最大数量。

    缺省值为768。

  • MaxNoOfSubscriptions

    版本(或更高版本) NDB 7.5.0
    类型或单位 无符号
    默认的 0
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    每一个NDBNDB集群中的表需要在NDB内核中订阅。对于某些NDB API应用程序,可能需要或希望更改此参数。然而,对于作为SQL节点的MySQL服务器的正常使用,不需要这样做。

    的默认值MaxNoOfSubscriptions是0,它被视为等于MaxNoOfTables.每个订阅占用108字节。

  • MaxNoOfSubscribers

    版本(或更高版本) NDB 7.5.0
    类型或单位 无符号
    默认的 0
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    只有在使用NDB集群复制时,此参数才有用。默认值为0,视为2 * MaxNoOfTables;也就是说,每个订阅NDB表为两个MySQL服务器(一个作为复制源,另一个作为副本)。每个订阅者使用16个字节的内存。

    当使用循环复制、多源复制和其他涉及2个以上MySQL服务器的复制设置时,您应该将此参数增加到mysqld复制中包含的进程(这通常(但不总是)与集群的数量相同)。例如,如果您有一个循环复制设置使用三个NDB集群,只有一个mysqld连接到每一个集群,每一个mysqldProcesses作为源和副本,您应该设置MaxNoOfSubscribers等于3 * MaxNoOfTables

    有关更多信息,请参见第21.6节,“NDB集群复制”

  • MaxNoOfConcurrentSubOperations

    版本(或更高版本) NDB 7.5.0
    类型或单位 无符号
    默认的 256
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    该参数用于设置集群中所有API节点同时执行操作的上限。默认值(256)对于正常操作来说已经足够了,只有在有很多API节点同时执行大量操作的情况下才可能需要调整。

布尔参数。数据节点的行为还受到一组(ndbd)参数取布尔值。这些参数可以分别指定为真正的让它们等于1Y,以及让它们等于0N

  • CompressedLCP

    版本(或更高版本) NDB 7.5.0
    类型或单位 布尔
    默认的
    范围 真的,假的
    重新启动类型

    N (ndb 7.5.0)

    将此参数设置为1导致本地检查点文件被压缩。所使用的压缩相当于gzip,快,可以节省数据节点上存储未压缩检查点文件所需的50%或更多空间。压缩lcp可以为单个数据节点启用,也可以为所有数据节点启用(通过在(ndbd违约)部份config.ini文件)。

    重要的

    不能将压缩的本地检查点恢复到运行不支持此特性的MySQL版本的集群。

    默认值为0(禁用)。

  • CrashOnCorruptedTuple

    版本(或更高版本) NDB 7.5.0
    类型或单位 布尔
    默认的 真正的
    范围 真的,假的
    重新启动类型

    N (ndb 7.5.0)

    当启用此参数时,它将强制数据节点在遇到损坏的元组时关闭。在NDB 7.5中,默认启用。

  • 无盘

    版本(或更高版本) NDB 7.5.0
    类型或单位 真|假(1 | 0)
    默认的
    范围 真的,假的
    重新启动类型

    是(ndb 7.5.0)

    可以将NDB集群表指定为无盘,这意味着表不会被检查点到磁盘,也不会发生日志记录。这样的表只存在于主存中。使用无磁盘表的结果是,表和这些表中的记录都无法在崩溃中幸存。但是,当在无磁盘模式下操作时,可以运行ndbd在无磁盘计算机上。

    重要的

    此特性导致整个集群以无磁盘模式运行。

    启用该特性后,“集群在线备份”功能将被禁用。此外,集群的部分启动是不可能的。

    无盘默认禁用。

  • LateAlloc

    版本(或更高版本) NDB 7.5.0
    类型或单位 数字
    默认的 1
    范围 0 - 1
    重新启动类型

    N (ndb 7.5.0)

    在建立到管理服务器的连接之后,为该数据节点分配内存。默认启用。

  • LockPagesInMainMemory

    版本(或更高版本) NDB 7.5.0
    类型或单位 数字
    默认的 0
    范围 0 - 2
    重新启动类型

    N (ndb 7.5.0)

    对于许多操作系统,包括Solaris和Linux,可以将进程锁定在内存中,从而避免任何交换到磁盘的操作。这可以用来帮助保证集群的实时特性。

    该参数取一个整数值01,或2,其作用如下表所示:

    • 0:禁用锁定。这是默认值。

    • 1:为进程分配内存后执行锁。

    • 2:在为进程分配内存之前进行锁定。

    如果操作系统没有配置为允许无特权用户锁定页面,那么使用此参数的数据节点进程可能必须以系统根用户身份运行。(LockPagesInMainMemory使用mlockall函数。从Linux内核2.6.9开始,非特权用户可以按限制锁定内存最大锁定内存.有关更多信息,请参见ulimit - l而且http://linux.die.net/man/2/mlock).

    请注意

    在旧的NDB集群版本中,这个参数是一个布尔值。0为默认设置,并禁用锁定。1真正的在分配进程内存后启用锁定。NDB集群7.5处理真正的将此参数的值设置为错误。

    重要的

    开始glibc2.10,glibc使用每个线程竞技场来减少共享池上的锁争用,这会消耗实际内存。通常,数据节点进程不需要每个线程的竞技场,因为它在启动后不执行任何内存分配。(分配器之间的这种差异似乎对性能没有显著影响。)

    glibc行为可通过MALLOC_ARENA_MAX环境变量,但此机制之前存在bugglibc2.16意味着这个变量不能被设置为小于8,因此浪费的内存不能被回收。(错误# 15907219;另请参阅http://sourceware.org/bugzilla/show_bug.cgi?id=13137有关此问题的更多资料。)

    这个问题的一个可能的解决方法是使用LD_PRELOAD的环境变量jemalloc内存分配库,以取代所提供的glibc

  • ODirect

    版本(或更高版本) NDB 7.5.0
    类型或单位 布尔
    默认的
    范围 真的,假的
    重新启动类型

    N (ndb 7.5.0)

    启用此参数会导致NDB尝试使用O_DIRECT写LCP,备份和重做日志,通常降低kswapdCPU使用率。Linux下使用NDB集群时,启用ODirect如果您正在使用2.6或更高版本的内核。

    ODirect默认禁用。

  • ODirectSyncFlag

    版本(或更高版本) NDB 7.6.4
    类型或单位 布尔
    默认的
    范围 真的,假的
    添加 NDB 7.6.4
    重新启动类型

    N (ndb 7.5.0)

    当启用此参数时,将执行重做日志写入,以便每次完成的文件系统写入都被处理为调用fsync.如果至少满足以下条件之一,则忽略此参数的设置:

    • ODirect未启用。

    • InitFragmentLogFiles设置为稀疏的

    默认禁用。

  • RestartOnErrorInsert

    版本(或更高版本) NDB 7.5.0
    类型或单位 错误代码
    默认的 2
    范围 0 - 4
    重新启动类型

    N (ndb 7.5.0)

    此特性仅在构建调试版本时可用,在调试版本中,可以在作为测试的一部分的各个代码块的执行中插入错误。

    默认情况下,该特性是禁用的。

  • StopOnError

    版本(或更高版本) NDB 7.5.0
    类型或单位 布尔
    默认的 1
    范围 0 1
    重新启动类型

    N (ndb 7.5.0)

    此参数指定当遇到错误条件时,数据节点进程是否应该退出或自动重新启动。

    该参数的默认值为1;这意味着,在默认情况下,错误将导致数据节点进程停止。

    当遇到错误时StopOnError为0,表示重启数据节点进程。

    在NDB集群7.5.5之前,如果数据节点进程以不受控制的方式退出(例如,由于执行kill - 9对数据节点进程执行查询时,或对分割故障),和StopOnError设置为0时,天使进程尝试以与之前启动时完全相同的方式重新启动它——也就是说,使用与上次启动节点时使用的相同启动选项。因此,如果数据节点进程最初是使用——初始选项,它也将被重新启动——初始.这意味着,在这种情况下,如果故障在很短的时间间隔内发生在足够数量的数据节点上,其效果与执行整个集群的初始重新启动相同,导致所有数据丢失。此问题已在NDB集群7.5.5及以后的NDB 7.5版本中解决(Bug #83510, Bug #24945638)。

    MySQL集群管理器的用户应该注意,当StopOnError= 1,这可以防止MySQL集群管理器代理在执行了自己的重启和恢复后重新启动任何数据节点。看到Linux操作系统下启动和停止Agent,以获取更多资料。

  • UseShm

    版本(或更高版本) NDB 7.6.6
    类型或单位 布尔
    默认的
    范围 真的,假的
    添加 NDB 7.6.6
    重新启动类型

    N (ndb 7.5.0)

    在这个数据节点和同样运行在这个主机上的API节点之间使用共享内存连接。设置为1以启用。

    看到章节21.3.3.12,“NDB集群共享内存连接”,以获取更多资料。

控制超时、间隔和磁盘分页

有很多(ndbd)参数,用于指定集群数据节点中各种操作之间的超时和间隔。大多数超时值以毫秒为单位指定。在适用的地方会提到任何例外情况。

  • TimeBetweenWatchDogCheck

    版本(或更高版本) NDB 7.5.0
    类型或单位 毫秒
    默认的 6000
    范围 70 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    为了防止主线程在某个时刻陷入无休止的循环,可以使用监管机构线程检查主线程。该参数指定两次检查之间的毫秒数。如果进程在三次检查后仍然处于相同的状态,看门狗线程将终止它。

    为了实验目的或适应当地条件,可以很容易地改变该参数。它可以在每个节点的基础上指定,尽管这样做似乎没有什么理由。

    默认超时时间为6000毫秒(6秒)。

  • TimeBetweenWatchDogCheckInitial

    版本(或更高版本) NDB 7.5.0
    类型或单位 毫秒
    默认的 6000
    范围 70 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    这类似于TimeBetweenWatchDogCheck参数,除了TimeBetweenWatchDogCheckInitial在分配内存的早期启动阶段,控制存储节点内执行检查之间的间隔时间。

    默认超时时间为6000毫秒(6秒)。

  • StartPartialTimeout

    版本(或更高版本) NDB 7.5.0
    类型或单位 毫秒
    默认的 30000
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    此参数指定集群在调用集群初始化例程之前等待所有数据节点启动的时间。这个超时用来尽可能避免部分集群启动。

    当首次启动或首次重启集群时,该参数将被覆盖。

    缺省值是30000毫秒(30秒)。0禁用超时,在这种情况下,集群只有在所有节点都可用时才能启动。

  • StartPartitionedTimeout

    版本(或更高版本) NDB 7.5.0
    类型或单位 毫秒
    默认的 60000
    范围 0 - 4294967039 (0xFFFFFEFF)
    版本(或更高版本) NDB 7.6.4
    类型或单位 毫秒
    默认的 0
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    等待后,集群是否准备启动StartPartialTimeout毫秒,但仍然可能处于分区状态,集群等待,直到这个超时时间也过去。如果StartPartitionedTimeout设置为0时,集群将无限期地等待(232−1毫秒,约49.71天)。

    当首次启动或首次重启集群时,该参数将被覆盖。

    从NDB 7.6.4开始的默认值为0;之前是60000(60秒)。

  • StartFailureTimeout

    版本(或更高版本) NDB 7.5.0
    类型或单位 毫秒
    默认的 0
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    如果数据节点在设置的时间内没有完成启动顺序,则节点启动失败。将该参数设置为0(默认值)意味着不应用数据节点超时。

    对于非零值,该参数以毫秒为单位进行测量。对于包含大量数据的数据节点,应该增加该参数。例如,对于包含数g数据的数据节点,执行节点重启可能需要10 ~ 15分钟(即600000 ~ 1000000毫秒)。

  • StartNoNodeGroupTimeout

    版本(或更高版本) NDB 7.5.0
    类型或单位 毫秒
    默认的 15000
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    当数据节点配置为Nodegroup = 65536,则认为未分配给任何节点组。完成后,集群等待StartNoNodegroupTimeout,然后将这些节点视为已添加到传递给——nowait-nodes选项,然后开始。默认值为15000(即管理服务器等待15秒)。将此参数设置为0意味着集群无限期地等待。

    StartNoNodegroupTimeout集群中的所有数据节点必须相同;出于这个原因,您应该始终将其设置在(ndbd违约)部份config.ini文件,而不是单独的数据节点。

    看到21.5.7节“在线添加NDB集群数据节点”,以获取更多资料。

  • HeartbeatIntervalDbDb

    版本(或更高版本) NDB 7.5.0
    类型或单位 毫秒
    默认的 5000
    范围 10 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    发现故障节点的主要方法之一是使用心跳。这个参数表示心跳信号的发送频率和预期接收频率。心跳不能被禁用。

    在连续错过四个心跳间隔之后,该节点被声明为死亡。因此,通过心跳机制发现故障的最大时间是心跳间隔的5倍。

    默认心跳周期为5000毫秒(5秒)。这个参数不能有太大的变化,并且在节点之间不应该有太大的变化。如果一个节点使用5000毫秒,而监视它的节点使用1000毫秒,显然该节点很快就会被宣布死亡。该参数可在软件在线升级过程中修改,但增量较小。

    另请参阅网络通信和延迟,以及对ConnectCheckIntervalDelay配置参数。

  • HeartbeatIntervalDbApi

    版本(或更高版本) NDB 7.5.0
    类型或单位 毫秒
    默认的 1500
    范围 100 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    每个数据节点都向每个MySQL服务器(SQL节点)发送心跳信号,以确保其保持联系。如果MySQL服务器未能及时发送心跳,则声明它死了,在这种情况下,所有正在进行的事务都已完成,所有资源都已释放。在前一个MySQL实例启动的所有活动完成之前,SQL节点不能重新连接。此确定的三心跳标准与所描述的相同HeartbeatIntervalDbDb

    缺省值是1500毫秒(1.5秒)。这个时间间隔可以在各个数据节点之间有所不同,因为每个数据节点都独立于所有其他数据节点监视连接到它的MySQL服务器。

    有关更多信息,请参见网络通信和延迟

  • HeartbeatOrder

    版本(或更高版本) NDB 7.5.0
    类型或单位 数字
    默认的 0
    范围 0 - 65535
    重新启动类型

    S (ndb 7.5.0)

    数据节点以循环方式相互发送心跳,每个数据节点监视前一个数据节点。如果给定数据节点未检测到心跳,则该节点声明圆圈中的前一个数据节点(即不再被集群访问)。数据节点死亡的判断是全局完成的;换句话说;一旦一个数据节点被声明为死亡,集群中的所有节点都将其视为死亡。

    与其他节点对之间的心跳相比,位于不同主机上的数据节点之间的心跳可能太慢(例如,由于非常低的心跳间隔或临时连接问题),以至于一个数据节点被宣布死亡,即使该节点仍然可以作为集群的一部分。

    在这种情况下,心跳在数据节点之间传输的顺序可能会影响某个特定数据节点是否被宣布死亡。如果不必要地进行这种声明,则会导致节点组的不必要损失,从而导致集群失败。

    考虑这样一种设置:在2台主机上运行4个数据节点a、B、C和Dhost1而且host2,这些数据节点组成2个节点组,如下表所示:

    表21.9四个数据节点A、B、C、D分别运行在两台主机host1、host2上;每个数据节点属于两个节点组中的一个。

    节点组 运行节点host1 运行节点host2
    节点组0: 一个节点 节点B
    节点组1: 节点度 节点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->AHeartbeatOrder值如下所示:

    表21.10 HeartbeatOrder用于强制执行a ->B->D->C-> a的心跳转换顺序。

    节点 HeartbeatOrder价值
    一个 10
    B 20.
    C 30.
    D 25

    如果要更改运行中的NDB集群的心跳传输顺序,必须先设置HeartbeatOrder对于全局配置中的集群中的每个数据节点(config.ini)文件(或多个)。要使修改生效,必须执行以下操作之一:

    • 整个集群的完全关闭和重新启动。

    • 集群连续滚转重启2次。在两次滚动重启中,所有节点必须按照相同的顺序重新启动

    你可以使用转储908观察该参数在数据节点日志中的影响。

  • ConnectCheckIntervalDelay

    版本(或更高版本) NDB 7.5.0
    类型或单位 毫秒
    默认的 0
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    该参数允许在其中一个数据节点的心跳检查失败后,在数据节点之间进行连接检查HeartbeatIntervalDbDb毫秒。

    的间隔内无法进一步响应的数据节点ConnectCheckIntervalDelay毫秒被认为是可疑的,并且在两个这样的间隔之后被认为是死亡的。这在有已知延迟问题的设置中很有用。

    该参数的默认值为0(禁用)。

  • TimeBetweenLocalCheckpoints

    版本(或更高版本) NDB 7.5.0
    类型或单位 4字节的字数,以2为底的对数表示
    默认的 20.
    范围 0 - 31
    重新启动类型

    N (ndb 7.5.0)

    这个参数是一个例外,因为它没有指定在启动一个新的本地检查点之前等待的时间;相反,它用于确保不会在更新相对较少的集群中执行本地检查点。在大多数具有高更新速率的集群中,很可能在前一个本地检查点完成后立即启动新的本地检查点。

    添加自上一个本地检查点开始以来执行的所有写操作的大小。此参数的另一个特殊之处在于,它被指定为4字节单词数量的以2为底的对数,因此默认值20表示4MB (4 × 2)20.)的写操作,21将表示8MB,以此类推,直到31的最大值,这相当于8GB的写操作。

    集群中的所有写操作都被加在一起。设置TimeBetweenLocalCheckpoints到6或更少意味着不间断地连续执行本地检查点,与集群的工作负载无关。

  • TimeBetweenGlobalCheckpoints

    版本(或更高版本) NDB 7.5.0
    类型或单位 毫秒
    默认的 2000
    范围 20 - 32000
    重新启动类型

    N (ndb 7.5.0)

    当事务被提交时,它被提交到主存中所有镜像数据的节点中。但是,事务日志记录不会作为提交的一部分刷新到磁盘。这种行为背后的原因是,将事务安全地提交到至少两台自主主机上应该符合合理的持久性标准。

    同样重要的是,要确保即使是最坏的情况(集群完全崩溃)也能得到正确处理。为了确保发生这种情况,在给定时间间隔内发生的所有事务都被放入全局检查点,可以将其视为已提交的事务集,这些事务已被刷新到磁盘。换句话说,作为提交流程的一部分,事务被放置在全局检查点组中。稍后,该组的日志记录被刷新到磁盘,然后整个事务组被安全地提交到集群中所有计算机的磁盘上。

    该参数定义全局检查点之间的间隔。缺省值是2000毫秒。

  • TimeBetweenGlobalCheckpointsTimeout

    版本(或更高版本) NDB 7.5.0
    类型或单位 毫秒
    默认的 120000
    范围 10 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    此参数定义全局检查点之间的最小超时时间。缺省值是120000毫秒。

  • TimeBetweenEpochs

    版本(或更高版本) NDB 7.5.0
    类型或单位 毫秒
    默认的 One hundred.
    范围 0 - 32000
    重新启动类型

    N (ndb 7.5.0)

    该参数定义了NDB集群复制的同步时间间隔。缺省值是100毫秒。

    TimeBetweenEpochs是部分实施的吗micro-GCPs,可用于提高NDB集群复制的性能。

  • TimeBetweenEpochsTimeout

    版本(或更高版本) NDB 7.5.0
    类型或单位 毫秒
    默认的 0
    范围 0 - 256000
    重新启动类型

    N (ndb 7.5.0)

    该参数定义了NDB集群复制的同步周期超时时间。当节点在该时间内未参与全局检查点时,该节点将被关闭。默认值为0;换句话说,超时是禁用的。

    TimeBetweenEpochsTimeout是部分实施的吗micro-GCPs,可用于提高NDB集群复制的性能。

    当GCP保存时间超过1分钟或GCP提交时间超过10秒时,此参数的当前值和警告将被写入集群日志。

    将此参数设置为0可以禁用由保存超时、提交超时或两者都引起的GCP停止。该参数的最大可能值是256000毫秒。

  • MaxBufferedEpochs

    版本(或更高版本) NDB 7.5.0
    类型或单位 时代
    默认的 One hundred.
    范围 0 - 100000
    重新启动类型

    N (ndb 7.5.0)

    订阅节点可能落后于的未处理的时间周期数。超过此数字将导致延迟订户断开连接。

    默认值100对于大多数正常操作已经足够。如果订阅节点确实延迟到导致断开连接的程度,通常是由于进程或线程方面的网络或调度问题。(在极少数情况下,该问题可能是由于NDB客户端)。当epoch较长时,可能需要将该值设置为低于默认值。

    断开连接可以防止客户端问题影响数据节点服务、耗尽内存缓冲数据并最终关闭。相反,由于断开连接(例如,通过二进制日志中的间隙事件),只有客户端受到影响,迫使客户端重新连接或重新启动进程。

  • MaxBufferedEpochBytes

    版本(或更高版本) NDB 7.5.0
    类型或单位 字节
    默认的 26214400
    范围 26214400 (0x01900000) - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    此节点为缓冲周期分配的总字节数。

  • TimeBetweenInactiveTransactionAbortCheck

    版本(或更高版本) NDB 7.5.0
    类型或单位 毫秒
    默认的 1000
    范围 1000 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    超时处理是通过在此参数指定的每个时间间隔上检查每个事务上的计时器来执行的。因此,如果将该参数设置为1000毫秒,则每秒钟检查一次事务是否超时。

    缺省值是1000毫秒(1秒)。

  • TransactionInactiveTimeout

    版本(或更高版本) NDB 7.5.0
    类型或单位 毫秒
    默认的 4294967039 (0 xfffffeff)
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    此参数表示在事务中止之前允许在同一事务中的操作之间间隔的最大时间。

    此参数的默认值为4 g(也是最大值)。对于需要确保没有事务长时间保持锁的实时数据库,这个参数应该设置为一个相对较小的值。将其设置为0意味着应用程序永远不会超时。单位为毫秒。

  • TransactionDeadlockDetectionTimeout

    版本(或更高版本) NDB 7.5.0
    类型或单位 毫秒
    默认的 1200
    范围 50 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    当一个节点执行涉及事务的查询时,该节点等待集群中的其他节点响应,然后继续执行。此参数设置事务可以在数据节点内执行的时间量,即事务协调器等待参与事务的每个数据节点执行请求的时间。

    响应失败可能发生在以下任何原因:

    • 节点为

    • 操作已进入锁队列

    • 请求执行操作的节点可能严重过载。

    这个超时参数表示事务协调器在终止事务之前等待另一个节点执行查询的时间,对于节点故障处理和死锁检测都很重要。

    默认的超时值是1200毫秒(1.2秒)。

    该参数的最小值为50毫秒。

  • DiskSyncSize

    版本(或更高版本) NDB 7.5.0
    类型或单位 字节
    默认的 4米
    范围 32K - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    这是将数据刷新到本地检查点文件之前要存储的最大字节数。这样做是为了防止写入缓冲,这可能会严重影响性能。该参数为打算取代的TimeBetweenLocalCheckpoints

    请注意

    ODirect是否启用,是否需要设置DiskSyncSize;事实上,在这种情况下,它的价值被忽略了。

    缺省值为4M (4mb)。

  • MaxDiskWriteSpeed

    版本(或更高版本) NDB 7.5.0
    类型或单位 数字
    默认的 20米
    范围 1m - 1024g
    重新启动类型

    S (ndb 7.5.0)

    设置NDB集群中未重启(该数据节点或任何其他数据节点)时本地检查点和备份操作写入磁盘的最大速率,单位为字节/秒。

    若要设置此数据节点重新启动时允许的最大磁盘写速率,请使用MaxDiskWriteSpeedOwnRestart.若要设置在其他数据节点重新启动时允许的最大磁盘写速率,请使用MaxDiskWriteSpeedOtherNodeRestart.所有lcp和备份操作的磁盘写操作的最低速度可以通过设置进行调整MinDiskWriteSpeed

  • MaxDiskWriteSpeedOtherNodeRestart

    版本(或更高版本) NDB 7.5.0
    类型或单位 数字
    默认的 50米
    范围 1m - 1024g
    重新启动类型

    S (ndb 7.5.0)

    设置NDB集群中除该节点外的一个或多个数据节点重启时,本地检查点和备份操作写入磁盘的最大速率,单位为字节/秒。

    若要设置此数据节点重新启动时允许的最大磁盘写速率,请使用MaxDiskWriteSpeedOwnRestart.若要设置当集群中没有数据节点重新启动时允许的最大磁盘写入速率,请使用MaxDiskWriteSpeed.所有lcp和备份操作的磁盘写操作的最低速度可以通过设置进行调整MinDiskWriteSpeed

  • MaxDiskWriteSpeedOwnRestart

    版本(或更高版本) NDB 7.5.0
    类型或单位 数字
    默认的 200米
    范围 1m - 1024g
    重新启动类型

    S (ndb 7.5.0)

    设置本地检查点和备份操作在该数据节点重新启动时写入磁盘的最大速率,单位为每秒字节。

    若要设置在其他数据节点重新启动时允许的最大磁盘写速率,请使用MaxDiskWriteSpeedOtherNodeRestart.若要设置当集群中没有数据节点重新启动时允许的最大磁盘写入速率,请使用MaxDiskWriteSpeed.所有lcp和备份操作的磁盘写操作的最低速度可以通过设置进行调整MinDiskWriteSpeed

  • MinDiskWriteSpeed

    版本(或更高版本) NDB 7.5.0
    类型或单位 数字
    默认的 10米
    范围 1m - 1024g
    重新启动类型

    S (ndb 7.5.0)

    设置本地检查点和备份操作写入磁盘的最小速率,单位为每秒字节。

    在各种条件下,lcp和备份允许的最大磁盘写速率可以通过这些参数进行调整MaxDiskWriteSpeedMaxDiskWriteSpeedOwnRestart,MaxDiskWriteSpeedOtherNodeRestart.有关更多信息,请参阅这些参数的描述。

  • ArbitrationTimeout

    版本(或更高版本) NDB 7.5.0
    类型或单位 毫秒
    默认的 7500
    范围 10 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    此参数指定数据节点等待仲裁器对仲裁消息响应的时间。如果超过这个值,则认为网络已经分裂。

    缺省值是7500毫秒(7.5秒)。

  • 仲裁

    版本(或更高版本) NDB 7.5.0
    类型或单位 枚举
    默认的 默认的
    范围 默认,禁用,等待外部
    重新启动类型

    N (ndb 7.5.0)

    仲裁参数启用仲裁方案的选择,对应于此参数的3个可能值之一:

    • 违约。这使仲裁能够正常进行,如ArbitrationRank管理节点和API节点的设置。这是默认值。

    • 禁用。设置仲裁=禁用(ndbd违约)部份config.ini文件来完成与设置相同的任务ArbitrationRank在所有管理节点和API节点上设置为0。当仲裁是这样设定的,有吗ArbitrationRank设置被忽略。

    • WaitExternal。仲裁参数还允许以这样一种方式配置仲裁,即集群等待到由所确定的时间之后ArbitrationTimeout已通过外部集群管理器应用程序来执行仲裁,而不是在内部处理仲裁。这可以通过设置来完成仲裁= WaitExternal(ndbd违约)部份config.ini文件。为了获得最好的效果WaitExternal设置时,建议这样ArbitrationTimeout是外部集群管理器执行仲裁所需间隔的2倍。

    重要的

    该参数只能在(ndbd违约)部分的集群配置文件。时,集群行为未指定仲裁为各个数据节点设置不同的值。

  • RestartSubscriberConnectTimeout

    版本(或更高版本) NDB 7.5.0
    类型或单位 女士
    默认的 12000
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    此参数确定数据节点等待订阅API节点连接的时间。一旦这个超时过期,任何失踪API节点与集群断开连接。若要禁用此超时,请设置RestartSubscriberConnectTimeout为0。

    虽然这个参数是以毫秒为单位指定的,但超时本身被解析为下一个最大的整秒。

缓冲和日志记录。几个(ndbd)配置参数使高级用户能够更好地控制节点进程所使用的资源,并根据需要调整各种缓冲区大小。

当将日志记录写入磁盘时,这些缓冲区用作文件系统的前端。如果节点运行在无磁盘模式下,可以将这些参数设置为最小值而不会受到惩罚,因为磁盘写操作是正常的伪造NDB存储引擎的文件系统抽象层。

  • UndoIndexBuffer

    版本(或更高版本) NDB 7.5.0
    类型或单位 无符号
    默认的 2米
    范围 1M - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    UNDO索引缓冲区的大小由该参数设置,在本地检查点期间使用。的NDB存储引擎使用基于检查点一致性的恢复方案,并结合操作REDO日志。为了生成一致的检查点而不阻塞整个系统的写操作,在执行本地检查点时执行UNDO日志记录。UNDO日志记录一次在单个表片段上激活。这种优化是可能的,因为表完全存储在主存中。

    UNDO索引缓冲区用于更新主键哈希索引。插入和删除重新排列哈希索引;NDB存储引擎写入UNDO日志记录,将所有物理更改映射到索引页,以便系统重新启动时可以撤销这些更改。它还在本地检查点的开始记录每个片段的所有活动插入操作。

    读取和更新设置锁位并更新哈希索引条目中的报头。这些更改由页面写入算法处理,以确保这些操作不需要UNDO日志记录。

    该缓冲区默认为2MB。最小值为1MB,对于大多数应用程序来说已经足够了。对于执行非常大或大量插入和删除以及大型事务和大主键的应用程序,可能需要增加该缓冲区的大小。如果这个缓冲区太小,NDB存储引擎会发出内部错误码677 (索引UNDO缓冲区重载).

    重要的

    在滚动重启期间,降低该参数的值是不安全的。

  • UndoDataBuffer

    版本(或更高版本) NDB 7.5.0
    类型或单位 无符号
    默认的 16米
    范围 1M - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    该参数设置UNDO数据缓冲区的大小,它执行类似于UNDO索引缓冲区的功能,只是UNDO数据缓冲区是关于数据内存而不是索引内存使用的。这个缓冲区在片段的本地检查点阶段用于插入、删除和更新。

    由于UNDO日志条目会随着记录的操作的增加而增大,因此这个缓冲区也比对应的索引内存大,默认值为16MB。

    对于某些应用程序来说,这个内存量可能太大了。在这种情况下,可以将这个大小减小到最小1MB。

    很少需要增加这个缓冲区的大小。如果有这样的需求,最好检查磁盘是否能够实际处理数据库更新活动引起的负载。磁盘空间不足的问题不能通过增加缓冲区的大小来解决。

    如果这个缓冲区太小而发生拥塞,NDB存储引擎会发出内部错误码891 (数据撤销缓冲区过载).

    重要的

    在滚动重启期间,降低该参数的值是不安全的。

  • RedoBuffer

    版本(或更高版本) NDB 7.5.0
    类型或单位 字节
    默认的 32米
    范围 1M - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    所有更新活动都需要记录日志。REDO日志使得每当系统重新启动时都可以重播这些更新。NDB恢复算法使用a模糊然后应用REDO日志来回放到恢复点之前的所有更改。

    RedoBuffer设置写入REDO日志的缓冲区大小。默认值为32MB;最小值为1MB。

    如果此缓冲区太小,则NDB存储引擎出现错误代码1221 (重做日志缓冲区过载).出于这个原因,如果您试图降低的值,您应该非常小心RedoBuffer作为集群配置中的在线更改的一部分。

    ndbmtd为每个LDM线程分配一个单独的缓冲区(参见ThreadConfig).例如,对于4个LDM线程,一个ndbmtd数据节点实际上有4个缓冲区和分配RedoBuffer字节到每一个,共为4 * RedoBuffer字节。

  • EventLogBufferSize

    版本(或更高版本) NDB 7.5.0
    类型或单位 字节
    默认的 8192
    范围 0 - 64k
    重新启动类型

    S (ndb 7.5.0)

    控制用于数据节点内NDB日志事件的循环缓冲区的大小。

控制日志消息。在管理集群时,能够控制发送给各种事件类型的日志消息的数量是非常重要的stdout.对于每个事件类别,有16个可能的事件级别(从0到15)。将给定事件类别的事件报告设置为级别15意味着该类别中的所有事件报告都将发送到stdout;将其设置为0意味着没有在该类别中生成事件报告。

缺省情况下,只发送启动消息stdout,其余事件报告级别默认设置为0。这样做的原因是这些消息也被发送到管理服务器的集群日志。

可以为管理客户端设置一组类似的级别,以确定在集群日志中记录哪些事件级别。

  • LogLevelStartup

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 1
    范围 0 - 15
    重新启动类型

    N (ndb 7.5.0)

    在流程启动期间生成的事件的报告级别。

    缺省级别为1。

  • LogLevelShutdown

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 0
    范围 0 - 15
    重新启动类型

    N (ndb 7.5.0)

    作为节点安全关闭的一部分而生成的事件的报告级别。

    默认级别为0。

  • LogLevelStatistic

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 0
    范围 0 - 15
    重新启动类型

    N (ndb 7.5.0)

    统计事件的报告级别,例如主键读取的数量、更新的数量、插入的数量、与缓冲区使用有关的信息,等等。

    默认级别为0。

  • LogLevelCheckpoint

    版本(或更高版本) NDB 7.5.0
    类型或单位 日志级别
    默认的 0
    范围 0 - 15
    重新启动类型

    N (ndb 7.5.0)

    本地和全局检查点生成的事件的报告级别。

    默认级别为0。

  • LogLevelNodeRestart

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 0
    范围 0 - 15
    重新启动类型

    N (ndb 7.5.0)

    节点重启期间生成的事件的报告级别。

    默认级别为0。

  • LogLevelConnection

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 0
    范围 0 - 15
    重新启动类型

    N (ndb 7.5.0)

    集群节点之间的连接生成的事件的报告级别。

    默认级别为0。

  • LogLevelError

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 0
    范围 0 - 15
    重新启动类型

    N (ndb 7.5.0)

    由整个集群的错误和警告生成的事件的报告级别。这些错误不会导致任何节点故障,但仍然被认为值得报告。

    默认级别为0。

  • LogLevelCongestion

    版本(或更高版本) NDB 7.5.0
    类型或单位 水平
    默认的 0
    范围 0 - 15
    重新启动类型

    N (ndb 7.5.0)

    由拥塞生成的事件的报告级别。这些错误不会导致节点故障,但仍然被认为值得报告。

    默认级别为0。

  • LogLevelInfo

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 0
    范围 0 - 15
    重新启动类型

    N (ndb 7.5.0)

    为关于集群一般状态的信息而生成的事件的报告级别。

    默认级别为0。

  • MemReportFrequency

    版本(或更高版本) NDB 7.5.0
    类型或单位 无符号
    默认的 0
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    此参数控制数据节点内存使用报告在集群日志中记录的频率;它是一个整数值,表示报告之间的秒数。

    每个数据节点的数据内存和索引内存使用情况以百分比和32 KB页面的数量记录DataMemoryand (NDB 7.5及更早版本)IndexMemory,分别设置在config.ini文件。例如,如果DataMemory等于100 MB,并且给定的数据节点使用50 MB的数据内存存储,在集群日志中对应的行可能是这样的:

    2006-12-24 01:18:16 [MgmSrvr] INFO—节点2:数据使用率是50%(1280 32K页总数2560)

    MemReportFrequency不是必需的参数。对象中的所有集群数据节点都可以设置(ndbd违约)的部分config.ini,也可以为对应的单个数据节点设置或覆盖(ndbd)部分的配置文件。最小值(也是默认值)为0,在这种情况下,内存报告仅在内存使用达到某些百分比(80%、90%和100%)时记录,如中统计事件的讨论中所述章节21.5.3.2,“NDB集群日志事件”

  • StartupStatusReportFrequency

    版本(或更高版本) NDB 7.5.0
    类型或单位
    默认的 0
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    属性启动数据节点时——初始,它会在启动阶段4期间初始化重做日志文件(请参阅第21.5.4节“NDB集群启动阶段总结”).当设置的值非常大时NoOfFragmentLogFilesFragmentLogFileSize,或者两者都有,这个初始化可能需要很长时间。You can force reports on the progress of this process to be logged periodically, by means of theStartupStatusReportFrequency配置参数。在这种情况下,进程会在集群日志中报告,包括已初始化的文件数量和空间量,如下所示:

    2009-06-20 16:39:23 [MgmSrvr] INFO——节点2:本地重做日志文件初始化状态:#Total files: 80, Completed: 60 #Total MBytes: 20480, Completed: 15557 2009-06-20 16:39:23 [MgmSrvr] INFO——节点2:本地重做日志文件初始化状态:#Total files: 80, Completed: 60 #Total MBytes: 20480, Completed: 15570

    这些报告都有日志记录StartupStatusReportFrequency启动阶段4期间的秒。如果StartupStatusReportFrequency为0(默认值),则仅在重做日志文件初始化过程开始时和完成时才将报告写入集群日志。

数据节点调试参数

以下参数仅用于数据节点的测试或调试,而不适用于生产。

  • DictTrace

    版本(或更高版本) NDB 7.5.0
    类型或单位 字节
    默认的 未定义的
    范围 0 - 100
    重新启动类型

    N (ndb 7.5.0)

    使用创建和删除表所生成的事件可以记录跟踪记录DictTrace.此参数仅在调试NDB内核代码时有用。DictTrace接受整数值。0(默认-无日志记录)和1(启用日志记录)是NDB 7.5.2之前仅支持的值。在NDB 7.5.2及以后版本中,将该参数设置为2将启用附加日志记录DBDICT调试输出(Bug #20368450)。

  • WatchdogImmediateKill

    版本(或更高版本) NDB 7.6.7
    类型或单位 布尔
    默认的
    范围 真的,假的
    添加 NDB 7.6.7
    重新启动类型

    N (ndb 7.5.0)

    在NDB 7.6.7及以后的版本中,当看门狗问题出现时,你可以通过启用WatchdogImmediateKill数据节点配置参数。此参数只应在调试或故障排除时使用,以获取跟踪文件,报告在执行停止时发生了什么。

备份参数。(ndbd)本节讨论的参数定义了为执行在线备份而预留的内存缓冲区。

  • BackupDataBufferSize

    版本(或更高版本) NDB 7.5.0
    类型或单位 字节
    默认的 16米
    范围 2M - 4294967039 (0xFFFFFEFF)
    版本(或更高版本) NDB v7.5.1
    类型或单位 字节
    默认的 16米
    范围 512K - 4294967039 (0xFFFFFEFF)
    弃用 NDB 7.6.4
    重新启动类型

    N (ndb 7.5.0)

    在创建备份时,有两个缓冲区用于将数据发送到磁盘。备份数据缓冲区用于填充扫描节点表记录的数据。一旦这个缓冲区被填充到指定的级别BackupWriteSize时,页面被发送到磁盘。在将数据刷新到磁盘时,备份进程可以继续填充该缓冲区,直到耗尽空间为止。当发生这种情况时,备份进程暂停扫描并等待,直到一些磁盘写操作完成释放内存,以便继续扫描。

    该参数的默认值为16MB。最小值在NDB 7.5.1中从2M更改为512K。(错误# 22749509)

  • BackupDiskWriteSpeedPct

    版本(或更高版本) NDB 7.5.0
    类型或单位 百分比
    默认的 50
    范围 0 - 90
    重新启动类型

    N (ndb 7.5.0)

    在正常操作期间,数据节点试图最大限度地提高用于本地检查点和备份的磁盘写速度,同时保持在设置的范围内MinDiskWriteSpeed而且MaxDiskWriteSpeed.磁盘写节流为每个LDM线程提供了总预算的平等份额。这允许并行lcp在不超过磁盘I/O预算的情况下发生。由于备份仅由一个LDM线程执行,这实际上会导致预算减少,从而导致更长的备份完成时间,并且如果更改率足够高,则在备份日志缓冲区填充率高于可实现的写速率时无法完成备份。

    方法可以解决此问题BackupDiskWriteSpeedPct配置参数,该参数的取值范围为0-90(包括),该值被解释为在LDM线程之间为lcp共享剩余预算之前保留的节点最大写速率预算的百分比。运行备份的LDM线程接收备份的整个写速率预算,再加上本地检查点的写速率预算中它(减少的)份额。(这使得磁盘写速率预算的行为与NDB集群7.3和更早版本的处理方式类似。)

    该参数的默认值是50(解释为50%)。

  • BackupLogBufferSize

    版本(或更高版本) NDB 7.5.0
    类型或单位 字节
    默认的 16米
    范围 2M - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    备份日志缓冲区所扮演的角色与备份数据缓冲区所扮演的角色类似,不同的是它用于生成备份执行期间所做的所有表写的日志。写入这些页的原则与写入备份数据缓冲区的原则相同,不同的是,当备份日志缓冲区中没有更多空间时,备份将失败。因此,备份日志缓冲区的大小必须足够大,以处理在进行备份时由写活动引起的负载。看到章节21.5.8.3“NDB集群备份配置”

    这个参数的默认值对于大多数应用程序来说应该足够了。事实上,备份失败更有可能是由于磁盘写入速度不足而不是由于备份日志缓冲区已满。如果磁盘子系统没有针对应用程序引起的写负载进行配置,则集群不太可能执行所需的操作。

    最好以这样一种方式配置集群节点,使处理器成为瓶颈,而不是磁盘或网络连接。

    该参数的默认值为16MB。

  • BackupMemory

    版本(或更高版本) NDB 7.5.0
    类型或单位 字节
    默认的 32米
    范围 0 - 4294967039 (0xFFFFFEFF)
    弃用 是(在NDB 7.4中)
    重新启动类型

    N (ndb 7.5.0)

    此参数已弃用,在NDB集群的未来版本中可能会被移除。为它所做的任何设置都将被忽略。

  • BackupReportFrequency

    版本(或更高版本) NDB 7.5.0
    类型或单位
    默认的 0
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    此参数控制在备份期间管理客户端中发布备份状态报告的频率,以及将此类报告写入集群日志的频率(前提是集群事件日志配置为允许查看)日志记录和检查点).BackupReportFrequency表示备份状态报告之间的间隔时间(以秒为单位)。

    缺省值为0。

  • BackupWriteSize

    版本(或更高版本) NDB 7.5.0
    类型或单位 字节
    默认的 256 k
    范围 32K - 4294967039 (0xFFFFFEFF)
    弃用 NDB 7.6.4
    重新启动类型

    N (ndb 7.5.0)

    此参数指定由备份日志和备份数据缓冲区写入磁盘的消息的默认大小。

    该参数的默认值为256KB。

  • BackupMaxWriteSize

    版本(或更高版本) NDB 7.5.0
    类型或单位 字节
    默认的 1米
    范围 256K - 4294967039 (0xFFFFFEFF)
    弃用 NDB 7.6.4
    重新启动类型

    N (ndb 7.5.0)

    此参数指定备份日志和备份数据缓冲区写入磁盘的消息的最大大小。

    该参数的默认值为1MB。

  • CompressedBackup

    版本(或更高版本) NDB 7.5.0
    类型或单位 布尔
    默认的
    范围 真的,假的
    重新启动类型

    N (ndb 7.5.0)

    启用该参数后,备份文件将被压缩。所使用的压缩相当于gzip,快,可节省数据节点上存储未压缩备份文件所需空间的50%或以上。压缩备份可以为单个数据节点启用,也可以为所有数据节点启用(通过在(ndbd违约)部份config.ini文件)。

    重要的

    不能将压缩备份恢复到运行不支持此特性的MySQL版本的集群。

    默认值为0(禁用)。

请注意

备份文件的位置由BackupDataDir数据节点配置参数。

额外的需求。在指定这些参数时,下列关系必须为真。否则数据节点无法启动。

  • BackupDataBufferSize >= BackupWriteSize + 188KB

  • backupuplogbuffersize >= BackupWriteSize + 16KB

  • BackupMaxWriteSize >= BackupWriteSize

NDB集群实时性能参数

(ndbd)本节讨论的参数用于调度和锁定线程到多处理器数据节点主机上的特定cpu。

请注意

要使用这些参数,数据节点进程必须以系统根用户身份运行。

  • BuildIndexThreads

    版本(或更高版本) NDB 7.5.0
    类型或单位 数字
    默认的 0
    范围 0 - 128
    版本(或更高版本) NDB 7.6.4
    类型或单位 数字
    默认的 128
    范围 0 - 128
    重新启动类型

    N (ndb 7.5.0)

    该参数确定在系统或节点启动期间以及运行时重建有序索引时要创建的线程数ndb_restore——rebuild-indexes.只有当每个数据节点有多个表片段时(例如,当评论= " NDB_TABLE = PARTITION_BALANCE = FOR_RA_BY_LDM_X_2”创建表).

    将此参数设置为0(默认值)将禁用多线程构建有序索引。

    使用时支持ndbdndbmtd

    属性可以在数据节点初始重启期间启用多线程构建TwoPassInitialNodeRestartCopy数据节点配置参数为真正的

  • LockExecuteThreadToCPU

    版本(或更高版本) NDB 7.5.0
    类型或单位 CPU id集
    默认的 0
    范围 ...
    重新启动类型

    N (ndb 7.5.0)

    与连用时ndbd,这个参数(现在是一个字符串)指定分配给处理NDBCLUSTER执行线程。与连用时ndbmtd,该参数的值是一个以逗号分隔的CPU id列表,分配给处理执行线程。列表中的每个CPU ID必须为0 ~ 65535(含)之间的整数。

    指定的id数量应与所确定的执行线程数量相匹配MaxNoOfExecutionThreads.但是,在使用此参数时,不能保证线程以任何给定顺序分配给cpu。您可以使用。获得此类型的更细粒度控制ThreadConfig

    LockExecuteThreadToCPU没有默认值。

  • LockMaintThreadsToCPU

    版本(或更高版本) NDB 7.5.0
    类型或单位 CPU ID
    默认的 0
    范围 0 - 64k
    重新启动类型

    N (ndb 7.5.0)

    分配给处理器的CPU IDNDBCLUSTER维护线程。

    取值范围为0 ~ 65535(含)的整数。缺省值为0

  • Numa

    版本(或更高版本) NDB 7.5.0
    类型或单位 数字
    默认的 1
    范围 ...
    重新启动类型

    N (ndb 7.5.0)

    此参数确定非统一内存访问(NUMA)是由操作系统控制还是由数据节点进程控制,数据节点是否使用ndbdndbmtd.默认情况下,NDB尝试在主机操作系统提供NUMA支持的任何数据节点上使用交错NUMA内存分配策略。

    设置Numa = 0意味着datanode进程本身不试图为内存分配设置策略,并允许此行为由操作系统决定,操作系统可能进一步由分开的进程指导使用工具。也就是说,Numa = 0产生系统默认行为,可由使用.对于许多Linux系统,系统默认行为是在分配时将套接字本地内存分配给任何给定的进程。这在使用时可能会有问题ndbmtd;这是因为nbdmtd在启动时分配所有内存,导致不平衡,为不同的套接字提供不同的访问速度,特别是在主存中锁定页面时。

    设置Numa = 1表示进程使用的数据节点libnuma请求交错内存分配。(这也可以在操作系统级别上使用使用)。使用交错分配实际上告诉数据节点进程忽略非均匀内存访问,但不试图利用任何快速本地内存的优势;相反,数据节点进程试图避免由于远程内存缓慢而导致的不平衡。如果不需要交叉分配,请设置Numa到0,这样就可以在操作系统级别上确定所需的行为。

    Numaconfiguration参数仅在Linux系统下支持libnuma.so是可用的。

  • RealtimeScheduler

    版本(或更高版本) NDB 7.5.0
    类型或单位 布尔
    默认的
    范围 真的,假的
    重新启动类型

    N (ndb 7.5.0)

    将该参数设置为1可以实时调度数据节点线程。

    默认值是0(禁用调度)。

  • SchedulerExecutionTimer

    版本(或更高版本) NDB 7.5.0
    类型或单位 µ年代
    默认的 50
    范围 0 - 11000
    重新启动类型

    N (ndb 7.5.0)

    此参数指定线程在发送之前在调度程序中执行的时间(以微秒为单位)。将其设置为0可以最小化响应时间;为了获得更高的吞吐量,可以以牺牲更长的响应时间为代价来提高值。

    默认值是50 μsec,我们的测试表明,在高负载情况下,它可以稍微提高吞吐量,而不会严重延迟请求。

  • SchedulerResponsiveness

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 5
    范围 0 - 10
    重新启动类型

    N (ndb 7.5.0)

    中设置余额NDB速度和吞吐量之间的调度器。该参数接受一个整数,取值范围为0 ~ 10(含10),默认值为5。相对于吞吐量,较高的值提供更好的响应时间。较低的值以较长的响应时间为代价提供了更高的吞吐量。

  • SchedulerSpinTimer

    版本(或更高版本) NDB 7.5.0
    类型或单位 µ年代
    默认的 0
    范围 0 - 500
    重新启动类型

    N (ndb 7.5.0)

    此参数指定线程在休眠前在调度程序中执行的时间(以微秒为单位)。

    缺省值为0。

  • TwoPassInitialNodeRestartCopy

    版本(或更高版本) NDB 7.5.0
    类型或单位 布尔
    默认的
    范围 真的,假的
    版本(或更高版本) NDB 7.6.4
    类型或单位 布尔
    默认的 真正的
    范围 真的,假的
    重新启动类型

    N (ndb 7.5.0)

    通过将此配置参数设置为,可以为数据节点的初始重启启用有序索引的多线程构建真正的,它允许在初始节点重新启动时进行两次数据复制。从NDB 7.6.4开始,这是默认值(Bug #26704312, Bug #27109117)。

    你还必须设置BuildIndexThreads到非零值。

多线程配置参数(ndbmtd)。ndbmtd默认情况下作为单线程进程运行,并且必须配置为使用多个线程,使用两种方法之一,这两种方法都需要在config.ini文件。方法的一个适当值MaxNoOfExecutionThreads配置参数。第二种方法可以为ndbmtd多线程使用ThreadConfig.下面几段将提供关于这些参数及其在多线程数据节点中的使用的信息。

  • MaxNoOfExecutionThreads

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 2
    范围 2 - 72
    重新启动类型

    是(ndb 7.5.0)

    S (ndb 7.6.1)

    此参数直接控制所使用的执行线程数ndbmtd,最多72个。虽然这个参数是在(ndbd)(ndbd违约)各部分config.ini文件,它是专属的ndbmtd并不适用于ndbd

    设置MaxNoOfExecutionThreads设置由文件中的矩阵确定的每种类型的线程数存储/ ndb / src /内核/ vm / mt_thr_config.cpp.这个表显示了线程数的可能值MaxNoOfExecutionThreads

    表21.11 MaxNoOfExecutionThreads值和线程类型(LQH, TC, Send, Receive)对应的线程数。

    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应该设置为LDM线程使用的数量ndbmtd,由该参数的设置决定。这个比例不应大于4:1;从NDB 7.5.7和NDB 7.6.3开始,这种情况的配置是特别不允许的。(错误# 25333414)

    LDM线程的数量也决定了线程使用的分区的数量NDB表未显式分区;这是LDM线程数乘以集群中的数据节点数。(如果ndbd是用在数据节点上,而不是ndbmtd,则总有一个LDM线程;在这种情况下,自动创建的分区数量等于数据节点的数量。看到章节21.1.2,“NDB集群节点,节点组,片段副本和分区”,以获取更多资料。

    如果磁盘页缓冲区不够大,在使用超过默认LDM线程数的情况下为Disk Data表添加大表空间可能会导致资源和CPU使用问题;的描述DiskPageBufferMemory配置参数,以获取更多信息。

    线程类型将在本节后面描述(参见ThreadConfig).

    将此参数设置在允许的值范围之外会导致管理服务器在启动时出现错误而中止误差线数量:非法值价值参数MaxNoOfExecutionThreads

    MaxNoOfExecutionThreads, 0或1的值在内部由NDB到2,因此2被认为是该参数的默认值和最小值。

    MaxNoOfExecutionThreads通常打算将其设置为与可用CPU线程数相等,并为每种类型分配适合典型工作负载的线程数。它不会将特定的线程分配给指定的cpu。如果需要改变所提供的设置,或者将线程绑定到cpu,则应该使用ThreadConfig相反,它允许您直接将每个线程分配给所需的类型、CPU或两者兼而有之。

    多线程数据节点进程总是生成,至少,下面列出的线程:

    • 1个本地查询处理器(LDM)线程

    • 1个接线

    • 1订阅管理器(SUMA或复制)线程

    对于一个MaxNoOfExecutionThreads值为8或更少,则不创建TC线程,而是由主线程执行TC处理。

    在NDB 7.6之前,更改LDM线程数总是需要重新启动系统,无论是使用此参数更改还是使用ThreadConfig.在NDB 7.6及以后版本中,可以通过节点初始重启来实现更改(),但须符合下列条件:

    • 如果在更改之后,LDM线程的数量仍然与以前相同,那么仅仅是简单的节点重新启动(滚动重新启动或重新启动)N)以实现更改。

    • 否则(也就是说,如果LDM线程的数量发生了变化),仍然可以使用节点初始重启来实现更改(),但须符合以下两个条件:

      1. 每个LDM线程最多处理8个片段

      2. 表片段的总数是LDM线程数的整数倍。

    在NDB 7.6之前,如果集群的IndexMemory使用率大于50%,更改此情况需要初始重新启动集群。(最多30-35%IndexMemory建议在这种情况下使用。)否则,资源使用和LDM线程分配无法在节点之间实现平衡,这可能导致LDM线程未充分利用和过度利用,最终导致数据节点故障。在NDB 7.6及以后版本中,初始重启为需要对该参数进行更改。

  • NoOfFragmentLogParts

    版本(或更高版本) NDB 7.5.0
    类型或单位 数字
    默认的 4
    范围 4, 6, 8, 10, 12, 16, 20, 24, 32
    重新启动类型

    In (ndb 7.5.0)

    为属于此的重做日志设置日志文件组的数量ndbmtd.此参数的值应设置为与所使用的LDM线程数相等ndbmtd由设置确定为MaxNoOfExecutionThreads.从NDB 7.5.7和7.6.3开始,每个LDM使用超过4个重做日志部件的配置是不允许的。(错误# 25333414)

    参见MaxNoOfExecutionThreads获取更多信息。

  • ThreadConfig

    版本(或更高版本) NDB 7.5.0
    类型或单位 字符串
    默认的
    范围 ...
    重新启动类型

    是(ndb 7.5.0)

    S (ndb 7.6.1)

    此参数与ndbmtd将不同类型的线程分配给不同的cpu。其值为字符串,格式语法如下:

    ThreadConfig: =条目(,条目[…]]条目: =类型= {参数(,参数[…]]}类型:= LDM | main | recv | send | rep | IO | tc | watchdog | idxbld .输出说明参数: = =数量| cpubind =cpu_list| cpuset =cpu_list| spintime =数量|实时= {0}| 1 | nosend = {0} | 1 | thread_prio = {0 . .10} | cpubind_exclusive=cpu_list| cpuset_exclusive =cpu_list

    大括号(...),即使列表中只有一个参数,也需要围绕参数列表。

    一个参数(parameter)指定以下任何或所有信息:

    • 给定类型的线程数().

    • 给定类型的线程要非独占绑定到的cpu集。这是由任意一个决定的cpubindcpuset).cpubind导致每个线程被绑定(非排他性)到集合中的一个CPU;cpuset意味着每个线程都绑定(非独占)到指定的cpu集。

      在Solaris上,您可以指定一组cpu,将给定类型的线程专门绑定到这些cpu上。cpubind_exclusive使每个线程被绑定到集合中的一个CPU;cpuset_exclsuive意味着每个线程都只绑定到指定的cpu集。

      只有一个cpubindcpusetcpubind_exclusive,或cpuset_exclusive可以在单个配置中提供。

    • spintime确定线程在进入睡眠之前的等待时间(以微秒为单位)。

      的默认值spintime是值SchedulerSpinTimer数据节点配置参数。

      spintime不适用于I/O线程、看门狗或离线索引构建线程,因此不能为这些线程类型设置。

    • 实时可设置为0或1。如果设置为1,线程以实时优先级运行。这也意味着thread_prio不能设置。

      实时参数默认设置为RealtimeScheduler数据节点配置参数。

      实时不能为脱机索引构建线程设置。

    • 通过设置nosend到1,你可以防止一个主要ldm代表,或tc帮助发送线程的线程。该参数默认为0,不能用于其他类型的线程。

      nosend新增于NDB 7.6.4。

    • thread_prio线程优先级,可以从0到10设置,其中10表示最高优先级。缺省值是5。此参数的精确效果是特定于平台的,本节稍后将对此进行描述。

      不能为脱机索引构建线程设置线程优先级。

    Thread_prio根据平台设置和效果。实施thread_prio不同于Linux/FreeBSD, Solaris和Windows。在下面的列表中,我们依次讨论它对每个平台的影响:

    • Linux和FreeBSD:我们绘制地图thread_prio属性的值不错的系统调用。由于进程的nice值越低,表示进程优先级越高,优先级越高thread_prio有降低的作用吗不错的价值。

      表21.12 Linux和FreeBSD上thread_prio到nice值的映射

      thread_prio价值 不错的价值
      0 19
      1 16
      2 12
      3. 8
      4 4
      5 0
      6 4
      7 -8
      8 -12年
      9 -16年
      10 -20年

      一些操作系统可能提供最高20级的进程良好度,但这不是所有目标版本都支持;因此,我们选择19作为最大值不错的可设置的值。

    • Solaris:设置thread_prioon Solaris设置Solaris FX优先级,映射如下表所示:

      表21.13 Solaris上thread_prio到FX优先级的映射

      thread_prio价值 Solaris外汇优先级
      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核心上运行。

    • 窗户:我们绘制地图thread_prio传递给Windows API的Windows线程优先级值SetThreadPriority ()函数。这种映射关系如下表所示:

      表21.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

    类型属性表示NDB线程类型。支持的线程类型和允许的范围每个的值在下面的列表中提供:

    • ldm:本地查询处理程序(DBLQH内核块),用于处理数据。使用的LDM线程越多,数据的分区就越高。每个LDM线程维护自己的数据集和索引分区,以及自己的重做日志。为设置的值ldm必须为1、2、4、6、8、12、16、24或32中的一个。

      更改LDM线程的数量通常需要初始的系统重新启动,以便对集群操作有效和安全。这一要求在NDB 7.6中有所放宽,本节稍后会解释。(这也是真的,当这是使用MaxNoOfExecutionThreads)。NDB 7.5及更早版本:如果IndexMemory使用率超过50%,需要重新启动集群;最多30-35%IndexMemory建议在这种情况下使用。否则,内存和LDM线程的分配无法在节点之间实现平衡,最终可能导致数据节点故障。

      在使用超过默认ldm数量的情况下,为Disk Data表添加大的表空间(数百gb或更多)可能会导致资源和CPU使用问题DiskPageBufferMemory不够大。

    • tc:事务协调线程(DBTC内核块),包含正在进行的事务的状态。TC最大线程数为32。

      最佳情况下,每个新事务都可以分配给一个新的TC线程。在大多数情况下,1个TC线程对应2个LDM线程就足以保证这种情况发生。在写数量相对于读数量相对较小的情况下,可能每4个LQH线程只需要1个TC线程来维护事务状态。相反,在执行大量更新的应用程序中,可能需要使TC线程与LDM线程的比率接近1(例如,3个TC线程与4个LDM线程)。

      设置tc置0导致TC处理由主线程完成。在大多数情况下,这实际上与将其设置为1相同。

      取值范围:0 ~ 32

    • 主要:数据字典和事务协调器(DBDIH而且DBTC内核块),提供模式管理。这总是由一个专用线程处理。

      取值范围:仅限1。

    • recv:接收线程(CMVMI内核块)。每个接收线程处理一个或多个用于与NDB集群中其他节点通信的套接字,每个节点一个套接字。NDB集群支持多个接收线程;最多可以有16个这样的线程。

      范围:1 ~ 16

    • 发送:发送线程(CMVMI内核块)。为了提高吞吐量,可以从一个或多个单独的专用线程(最多8个)执行发送。

      以前,所有线程都直接处理自己的发送;这仍然可以通过将发送线程的数量设置为0来实现(当MaxNoOfExecutionThreads小于10)。虽然这样做会对吞吐量产生不利影响,但在某些情况下还可以减少延迟。

      取值范围:0 ~ 16

    • 代表:复制线程(SUMA内核块)。异步复制操作总是由一个单独的专用线程处理。

      取值范围:仅限1。

    • io:文件系统和其他杂项操作。这些任务要求不高,总是由一个专用的I/O线程作为一个组来处理。

      取值范围:仅限1。

    • 监管机构:与此类型相关的参数设置实际上应用于几个线程,每个线程都有特定的用途。这些线程包括SocketServer线程,从其他节点接收连接设置;的SocketClient线程,它试图建立到其他节点的连接;以及线程看门狗线程,它检查线程是否正在进行。

      取值范围:仅限1。

    • idxbld:离线索引构建线程。与前面列出的其他永久线程类型不同,这些线程是临时线程,仅在节点或系统重新启动或运行时创建和使用ndb_restore——rebuild-indexes.它们可能绑定到与绑定到永久线程类型的CPU集重叠的CPU集。

      thread_prio实时,spintime不能为脱机索引构建线程设置值。此外,对于这种类型的线程,将被忽略。

      如果idxbld未指定时,默认行为如下:

      • 如果I/O线程也没有绑定,那么离线索引构建线程就没有绑定,并且这些线程使用任何可用的内核。

      • 如果I/O线程被绑定,那么脱机索引构建线程将被绑定到整个绑定线程集,因为这些线程不应该执行其他任务。

      取值范围:0 ~ 1。

      该线程类型是在NDB 7.6.4中添加的。(Bug #25835748, Bug #26928111)

    在NDB 7.6之前,正在更改ThreadCOnfig需要重新启动系统。在NDB 7.6及以后版本中,在某些情况下可以放宽这一要求:

    • 如果在更改之后,LDM线程的数量仍然与以前相同,那么仅仅是简单的节点重新启动(滚动重新启动或重新启动)N)以实现更改。

    • 否则(也就是说,如果LDM线程的数量发生了变化),仍然可以使用节点初始重启来实现更改(),但须符合以下两个条件:

      1. 每个LDM线程最多处理8个片段

      2. 表片段的总数是LDM线程数的整数倍。

    其他情况下,需要重启系统才能修改该参数。

    NDB 7.6.4及以后版本可以通过以下两个标准来区分线程类型:

    • 线程是否是执行线程。螺纹类型主要ldmrecv代表tc,发送是执行线程;io监管机构,idxbld线程不被认为是执行线程。

    • 给定任务的线程分配是永久的还是临时的。目前所有线程类型除外idxbld被认为是永久的;idxbld线程被视为临时线程。

    简单的例子:

    #例1。ThreadConfig=ldm={count=2,cpubind=1,2},main={cpubind=12},rep={cpubind=11} #示例2。主要Threadconfig = = {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。)以下ThreadConfigsetting执行这些分配,另外将所有这些线程绑定到特定的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上,就像我们在刚才的示例中所做的那样。

    下面的示例合并了使用这两种方法定义的cpu组cpuset而且cpubind,以及线程优先级的使用。

    ThreadConfig=ldm={count=4, cpubind= 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}, \ main={count=1,cpubind=10},rep={count=1,cpubind=11}

    在本例中,我们创建了两个LDM组;第一次使用cpubind第二种用途cpusetthread_prio而且spintime为每个组设置相同的值。这意味着总共有8个LDM线程。)你应该确保NoOfFragmentLogParts也设置为8。)四个TC线程只使用两个cpu;使用时是可能的cpuset在组中指定的cpu比线程少。(这不是真的cpubind)。发送线程使用两个线程usingcpubind将这些线程绑定到cpu 10和11。主线程和代表线程可以重用这些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可以重叠那些为其他(永久)线程类型指定的,第一个使用cpuset第二种用法cpubind

    ThreadConfig=main,ldm={count=4, cpubind=1 -4},tc={count=4,cpuset=5,6,7}, \ io={cpubind=8},idxbld={cpubind=1 -8} ThreadConfig=main,ldm={count=1,cpubind=1},idxbld={count=1,cpubind=1}

    下面的例子为I/O线程指定了一个CPU,而不是索引构建线程:

    ThreadConfig=main,ldm={count=4,cpuset=1-4},tc={count=4,cpuset=5,6,7}, \ io={cpubind=8}

    ThreadConfig刚刚显示的设置将线程锁定到编号为1到8的8个内核,它等价于这里显示的设置:

    ThreadConfig =主要,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/irqbalance0 xfffff0,以及使用isolcpus启动选项grub.conf.有关具体信息,请参阅您的操作系统或平台文档。10bet官方网站

磁盘数据配置参数。影响“磁盘数据”行为的配置参数包括:

  • DiskPageBufferEntries

    版本(或更高版本) NDB 7.5.0
    类型或单位 32 k页面
    默认的 10
    范围 1 - 1000
    重新启动类型

    N (ndb 7.5.0)

    这是要分配的页条目(页引用)的数量。它被指定为32K页的数量DiskPageBufferMemory.默认值对于大多数情况已经足够了,但是如果遇到Disk Data表上非常大的事务问题,则可能需要增加该参数的值。每个页面条目大约需要100个字节。

  • DiskPageBufferMemory

    版本(或更高版本) NDB 7.5.0
    类型或单位 字节
    默认的 64米
    范围 4m - 1t
    重新启动类型

    N (ndb 7.5.0)

    这决定了用于在磁盘上缓存页面的空间量,并在(ndbd)(ndbd违约)部份config.ini文件。它以字节为单位。每页大小为32kb。这意味着NDB集群磁盘数据存储始终使用N* 32kb内存N是某个非负整数。

    该参数的默认值为64米(2000页,每张32 KB)。

    如果的值为DiskPageBufferMemory是否设置过低,与使用超过默认数量的LDM线程有关ThreadConfig(例如{ldm = 6…})时,在尝试将大型(例如500G)数据文件添加到基于磁盘的数据文件时,可能会出现问题NDB表,在这个表中,进程占用一个CPU核的时间是无限长的。

    这是因为,作为向表空间添加数据文件的一部分,区段页被锁定在额外的PGMAN工作线程中的内存中,以便快速访问元数据。当添加一个大文件时,这个worker没有足够的内存来存放所有数据文件元数据。在这种情况下,您应该增加DiskPageBufferMemory,或添加更小的表空间文件。你也可能需要调整DiskPageBufferEntries

    您可以查询ndbinfo.diskpagebuffer表,以帮助确定是否应增加此参数的值以尽量减少不必要的磁盘寻道。看到第21.5.14.20节“ndbinfo diskpagebuffer表”,以获取更多资料。

  • SharedGlobalMemory

    版本(或更高版本) NDB 7.5.0
    类型或单位 字节
    默认的 128米
    范围 0 - 64t
    重新启动类型

    N (ndb 7.5.0)

    该参数决定了用于日志缓冲区、磁盘操作(如页面请求和等待队列)以及表空间、日志文件组、撤销文件和数据文件。共享全局内存池还提供用于满足UNDO_BUFFER_SIZE选项与创建日志文件组而且修改日志文件组属性的设置为此选项暗示的任何默认值InitialLogFileGroup数据节点配置参数。SharedGlobalMemory可以设置在(ndbd)(ndbd违约)部份config.ini配置文件,以字节为单位。

    默认值为128米

  • DiskIOThreadPool

    版本(或更高版本) NDB 7.5.0
    类型或单位 线程
    默认的 2
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    该参数决定用于“磁盘数据”文件访问的未绑定线程数。之前DiskIOThreadPool引入时,每个Disk Data文件只生成一个线程,这可能会导致性能问题,特别是在使用非常大的数据文件时。与DiskIOThreadPool,您可以(例如)使用多个并行工作的线程访问单个大型数据文件。

    该参数仅适用于磁盘数据I/O线程。

    该参数的最佳值取决于硬件和配置,包括以下因素:

    • 磁盘数据文件的物理分布。将数据文件、undo日志文件和数据节点文件系统放置在不同的物理磁盘上,可以获得更好的性能。如果您对部分或所有这些文件集执行此操作,那么您可以设置DiskIOThreadPool以启用单独的线程来处理每个磁盘上的文件。

    • 磁盘性能和类型。磁盘数据文件处理可容纳的线程数也取决于磁盘的速度和吞吐量。更快的磁盘和更高的吞吐量允许更多的磁盘I/O线程。我们的测试结果表明,与传统磁盘相比,固态磁盘驱动器可以处理更多的磁盘I/O线程,因此的值更高DiskIOThreadPool

    缺省值为2。

  • Disk数据文件系统参数。下面列表中的参数可以将NDB集群磁盘数据文件放置在特定的目录中,而不需要使用符号链接。

    有关更多信息,请参见章节21.5.10.1,“NDB集群磁盘数据对象”

  • Disk数据对象创建参数。下面两个参数使您在第一次启动集群时可以在不使用SQL语句的情况下创建Disk Data日志文件组、表空间或两者。

    • InitialLogFileGroup

      版本(或更高版本) NDB 7.5.0
      类型或单位 字符串
      默认的 (见文件)10bet官方网站
      范围 ...
      重新启动类型

      S (ndb 7.5.0)

      此参数可用于指定在执行集群初始启动时创建的日志文件组。InitialLogFileGroup如下所示:

      InitialLogFileGroup = [name= .的名字] [undo_buffer_size =大小;]file-specification-listfile-specification-list文件说明(;文件说明(;……]文件说明文件名大小

      的名字是可选的,默认为DEFAULT-LG.的undo_buffer_size也是可选的;如果省略,默认为64米.每一个文件说明对应于撤销日志文件,且必须在file-specification-list.撤消日志文件将根据所设置的值放置FileSystemPathFileSystemPathDD,FileSystemPathUndoFiles,就好像它们是由创建日志文件组修改日志文件组声明。

      考虑以下几点:

      InitialLogFileGroup = name=LG1;undo_buffer_size = 128;undo1.log: 250;undo2.log: 150

      这相当于以下SQL语句:

      新建LOGFILE组LOGFILE 'undo1.log' INITIAL_SIZE 250M在LOGFILE组中添加撤销文件'undo2.log'

      这个日志文件组是在数据节点启动时创建的——初始

      将初始日志文件组的资源与值所指示的资源一起添加到全局内存池SharedGlobalMemory

      如果使用此参数,则应始终在(ndbd违约)部份config.ini文件。在不同的数据节点上设置不同的值时,NDB集群的行为没有定义。

    • InitialTablespace

      版本(或更高版本) NDB 7.5.0
      类型或单位 字符串
      默认的 (见文件)10bet官方网站
      范围 ...
      重新启动类型

      S (ndb 7.5.0)

      用于指定集群初始启动时创建的NDB集群磁盘数据表空间。InitialTablespace如下所示:

      InitialTablespace = [name= .的名字] [extent_size =大小;]file-specification-list

      的名字的值是可选的,默认为DEFAULT-TS.的extent_size也是可选的;默认为1米.的file-specification-list的语法相同InitialLogfileGroup参数,唯一的区别是每个文件说明使用InitialTablespace对应一个数据文件。类型中必须至少指定一个file-specification-list.数据文件是根据所设置的值放置的FileSystemPathFileSystemPathDD,FileSystemPathDataFiles,就好像它们是由创建表空间修改表空间声明。

      例如,考虑下面的行指定InitialTablespace(ndbd违约)部份config.ini档案(与InitialLogfileGroup时,此参数应始终在(ndbd违约)节,因为没有定义在不同数据节点上设置不同值时NDB集群的行为):

      InitialTablespace = name=TS1;extent_size = 8米;data1.dat: 2 g;data2.dat: 4 g

      这相当于以下SQL语句:

      创建表空间TS1添加数据文件“data1.dat”EXTENT_SIZE 8M修改表空间TS1添加数据文件“data2.dat”

      这个表空间是在数据节点启动时创建的——初始,以后在创建NDB集群磁盘数据表时都可以使用。

Disk Data和GCP Stop错误。使用磁盘数据表时遇到的错误节点nodeid由于检测到GCP停止,杀死了该节点(错误2303)通常被称为GCP停止错误.当重做日志没有足够快地刷新到磁盘时,就会发生这种错误;这通常是由于磁盘速度慢和磁盘吞吐量不足。

通过使用更快的磁盘,以及将Disk Data文件放在与数据节点文件系统分开的磁盘上,可以帮助防止这些错误的发生。减少价值TimeBetweenGlobalCheckpoints倾向于减少为每个全局检查点写入的数据量,因此可以在尝试写入全局检查点时提供一些防止重做日志缓冲区溢出的保护;但是,减少这个值也会减少写入GCP的时间,因此必须谨慎操作。

除了给出的考虑因素之外DiskPageBufferMemory如前所述,同样重要的是DiskIOThreadPool配置参数设置正确;有DiskIOThreadPool设置过高很可能导致GCP停止错误(Bug #37227)。

GCP停止可以由保存或提交超时引起;的TimeBetweenEpochsTimeout数据节点配置参数确定提交的超时时间。但是,可以通过将该参数设置为0来禁用这两种类型的超时。

配置发送缓冲区内存分配的参数。发送缓冲区内存从所有传输器之间共享的内存池中动态分配,这意味着可以根据需要调整发送缓冲区的大小。(以前,NDB内核为集群中的每个节点使用固定大小的发送缓冲区,该缓冲区在节点启动时分配,并且在节点运行时不能更改。)的TotalSendBufferMemory而且OverLoadLimit数据节点配置参数允许设置内存分配的限制。有关这些参数使用的更多信息(以及SendBufferMemory),看21.3.3.13节“配置NDB集群发送缓冲区参数”

另请参阅21.5.7节“在线添加NDB集群数据节点”

重做日志过度提交处理。当将重做日志刷新到磁盘花费太多时间时,可以控制数据节点对操作的处理。当给定的重做日志刷新时间超过RedoOverCommitLimit秒,超过RedoOverCommitCounter次数,导致任何挂起的事务被中止。当发生这种情况时,发送事务的API节点可以处理本应提交的操作,方法是将操作排队并重新尝试,也可以终止它们,由DefaultOperationRedoProblemAction.数据节点设置超时时间和超时次数的参数说明如下表所示:

  • RedoOverCommitCounter

    版本(或更高版本) NDB 7.5.0
    类型或单位 数字
    默认的 3.
    范围 0 - 4294967039 (0xFFFFFEFF)
    版本(或更高版本) NDB 7.5.17
    类型或单位 数字
    默认的 3.
    范围 1 - 4294967039 (0xFFFFFEFF)
    版本(或更高版本) NDB 7.6.13
    类型或单位 数字
    默认的 3.
    范围 1 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    RedoOverCommitLimit当尝试将给定的重做日志写入磁盘这多次或更多次时,任何未提交的事务都被中止,并且这些事务起源于哪里的API节点根据其值处理构成这些事务的操作DefaultOperationRedoProblemAction(通过将需要重新尝试的操作排队或中止它们)。

  • RedoOverCommitLimit

    版本(或更高版本) NDB 7.5.0
    类型或单位
    默认的 20.
    范围 0 - 4294967039 (0xFFFFFEFF)
    版本(或更高版本) NDB 7.5.17
    类型或单位
    默认的 20.
    范围 1 - 4294967039 (0xFFFFFEFF)
    版本(或更高版本) NDB 7.6.13
    类型或单位
    默认的 20.
    范围 1 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    该参数设置了在超时前尝试将给定重做日志写入磁盘的上限(以秒为单位)。数据节点试图刷新此重做日志,但耗时较长的次数RedoOverCommitLimit,是保存和比较的RedoOverCommitCounter,如果刷新所需的时间比该参数的值长,则由于刷新超时而未提交的任何事务都将中止。当发生这种情况时,产生这些事务的API节点将根据其属性处理组成这些事务的操作DefaultOperationRedoProblemAction设置(它要么对要重新尝试的操作进行排队,要么中止它们)。

控制重启尝试。方法启动失败时,可以对数据节点的重新启动尝试进行细粒度控制MaxStartFailRetries而且StartFailRetryDelay数据节点配置参数。

MaxStartFailRetries限制在放弃启动数据节点之前的总重试次数,StartFailRetryDelay设置重试间隔的秒数。这些参数列在这里:

  • StartFailRetryDelay

    版本(或更高版本) NDB 7.5.0
    类型或单位 无符号
    默认的 0
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    使用此参数设置数据节点在启动失败时两次重新启动之间的秒数。默认为0(无延迟)。

    这个参数和MaxStartFailRetries被忽略,除非StopOnError等于0。

  • MaxStartFailRetries

    版本(或更高版本) NDB 7.5.0
    类型或单位 无符号
    默认的 3.
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    N (ndb 7.5.0)

    使用此参数可以限制数据节点在启动失败时尝试重新启动的次数。默认是3次尝试。

    这个参数和StartFailRetryDelay被忽略,除非StopOnError等于0。

NDB索引统计参数。下面列表中的参数与生成NDB索引统计相关。

  • IndexStatAutoCreate

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 0
    范围 0 1
    重新启动类型

    N (ndb 7.5.0)

    在创建索引时启用(set = 1)或禁用(set = 0)自动统计信息收集。默认禁用。

  • IndexStatAutoUpdate

    版本(或更高版本) NDB 7.5.0
    类型或单位 整数
    默认的 0
    范围 0 1
    重新启动类型

    N (ndb 7.5.0)

    启用(设置为1)或禁用(设置为0)监视索引的更改,并触发检测到的自动统计信息更新。属性的设置决定了触发更新所需的更改量和程度IndexStatTriggerPct而且IndexStatTriggerScale选项。

  • IndexStatSaveSize

    版本(或更高版本) NDB 7.5.0
    类型或单位 字节
    默认的 32768
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    In (ndb 7.5.0)

    类中保存的任何给定索引的统计信息所允许的最大字节空间NDB中的系统表和mysqld内存缓存。在NDB 7.5及更早的版本中,这会消耗IndexMemory

    无论大小有多大限制,至少要生产一个样品。这个大小是按IndexStatSaveScale

    指定的大小。IndexStatSaveSize的值进行缩放IndexStatTriggerPct对于较大的指数,乘以0.01。这将进一步乘以索引大小以2为底的对数。设置IndexStatTriggerPct等于0禁用缩放效果。

  • IndexStatSaveScale

    版本(或更高版本) NDB 7.5.0
    类型或单位 百分比
    默认的 One hundred.
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    In (ndb 7.5.0)

    指定的大小。IndexStatSaveSize的值进行缩放IndexStatTriggerPct对于较大的指数,乘以0.01。这将进一步乘以索引大小以2为底的对数。设置IndexStatTriggerPct等于0禁用缩放效果。

  • IndexStatTriggerPct

    版本(或更高版本) NDB 7.5.0
    类型或单位 百分比
    默认的 One hundred.
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    In (ndb 7.5.0)

    更新中触发索引统计信息更新的百分比变化。该值按比例缩放IndexStatTriggerScale.您可以通过设置完全禁用此触发器IndexStatTriggerPct为0。

  • IndexStatTriggerScale

    版本(或更高版本) NDB 7.5.0
    类型或单位 百分比
    默认的 One hundred.
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    In (ndb 7.5.0)

    规模IndexStatTriggerPct用这个量乘以0.01对于一个大的指数。值为0禁用伸缩。

  • IndexStatUpdateDelay

    版本(或更高版本) NDB 7.5.0
    类型或单位
    默认的 60
    范围 0 - 4294967039 (0xFFFFFEFF)
    重新启动类型

    In (ndb 7.5.0)

    给定索引的自动索引统计信息更新之间的最小延迟(以秒为单位)。将此变量设置为0将禁用任何延迟。默认为60秒。

重新启动类型。本节中各参数说明所使用的重启类型信息如下表所示:

表21.15 NDB集群重启类型

象征 重新启动类型 描述
N 节点 可以使用滚动重新启动更新该参数(参见21.5.5节“滚动重启NDB集群”
年代 系统 必须完全关闭所有集群节点,然后重新启动,才能对该参数进行更改
最初的 数据节点必须使用——初始选项