21.3.3.7 在 NDB 群集中定义 SQL 和其他 API 节点

config.ini文件中的[mysqld][api]部分定义了用于访问群集数据的 MySQL 服务器(SQL 节点)和其他应用程序(API 节点)的行为。无需显示任何参数。如果未提供计算机或主机名,则任何主机都可以使用此 SQL 或 API 节点。

一般而言,[mysqld]部分用于 table 示为群集提供 SQL 接口的 MySQL 服务器,而[api]部分用于除访问群集数据的mysqld进程以外的应用程序,但是这两个名称实际上是同义词。例如,您可以在[api]部分中列出充当 SQL 节点的 MySQL 服务器的参数。

Note

有关 NDB 群集的 MySQL 服务器选项的讨论,请参见第 21.3.3.9.1 节“ NDB 群集的 MySQL 服务器选项”。有关与 NDB 群集有关的 MySQL 服务器系统变量的信息,请参见第 21.3.3.9.2 节“ NDB 集群系统变量”

  • Id

table21.181 此 table 提供了 ID API 节点配置参数的类型和值信息

PropertyValue
版本(或更高版本)NDB 7.5.0
类型或单位unsigned
Default[none]
Range1 - 255
Restart TypeIS

Id是一个整数值,用于标识所有群集内部消息中的节点。允许的值范围是 1 到 255(包括 1 和 255)。无论节点的类型如何,该值对于群集中的每个节点都必须是唯一的。

Note

不管使用的 NDB 群集版本如何,数据节点 ID 都必须小于 49.如果计划部署大量数据节点,则最好将 API 节点(和 Management 节点)的节点 ID 限制为大于 48 的值。

NodeId是用于标识 API 节点的首选参数名称。 (Idcontinue 支持向后兼容,但现在已弃用,并且在使用时会生成警告.将来还会删除它.)

  • ConnectionMap

table21.182 此 table 提供 ConnectionMap API 节点配置参数的类型和值信息

PropertyValue
版本(或更高版本)NDB 7.5.0
类型或单位string
Default[none]
Range...
Restart TypeN

指定要连接的数据节点。

  • NodeId

table21.183 该 table 提供了 NodeId API 节点配置参数的类型和值信息

PropertyValue
版本(或更高版本)NDB 7.5.0
类型或单位unsigned
Default[none]
Range1 - 255
Restart TypeIS

NodeId是一个整数值,用于标识所有群集内部消息中的节点。允许的值范围是 1 到 255(包括 1 和 255)。无论节点的类型如何,该值对于群集中的每个节点都必须是唯一的。

Note

不管使用的 NDB 群集版本如何,数据节点 ID 都必须小于 49.如果计划部署大量数据节点,则最好将 API 节点(和 Management 节点)的节点 ID 限制为大于 48 的值。

NodeId是用于标识 Management 节点的首选参数名称。别名Id在此版本的 NDB Cluster 的较旧版本中用于此目的,并且为了向后兼容而 continue 受支持。现在已弃用它,并在使用时生成警告,并且在以后的 NDB Cluster 版本中可能会删除它。

  • ExecuteOnComputer

table21.184 此 table 提供 ExecuteOnComputer API 节点配置参数的类型和值信息

PropertyValue
版本(或更高版本)NDB 7.5.0
类型或单位name
Default[none]
Range...
Restart TypeS
DeprecatedNDB 7.5.0

这是指为配置文件的[computer]部分中定义的其中一台计算机(主机)设置的Id

Important

从 NDB 7.5.0 开始不推荐使用此参数,并且在将来的发行版中可能会删除该参数。请使用HostName参数。

  • HostName

table21.185 此 table 提供了 HostName API 节点配置参数的类型和值信息

PropertyValue
版本(或更高版本)NDB 7.5.0
类型或单位名称或 IP 地址
Default[none]
Range...
Restart TypeN

指定此参数定义了 SQL 节点(API 节点)所在的计算机的主机名。要指定主机名,此参数或ExecuteOnComputer是必需的。

如果在config.ini文件的给定[mysql][api]部分中未指定HostNameExecuteOnComputer,则 SQL 或 API 节点可以使用来自任何主机的相应“插槽”进行连接,该主机可以构建与 Management 服务器主机的网络连接。 *这与数据节点的默认行为不同,在数据行为中,除非另有说明,否则将HostName假定为localhost

table21.186 此 table 提供了 LocationDomainId API 节点配置参数的类型和值信息

PropertyValue
版本(或更高版本)NDB 7.6.4
类型或单位integer
Default0
Range0 - 16
Restart TypeS
AddedNDB 7.6.4

将 SQL 或其他 API 节点分配给云中特定的availability domain(也称为可用性区域)。通过通知NDB哪个节点位于哪个可用性域中,可以通过以下方式在云环境中提高性能:

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

    • 保证不同可用性域中的节点之间的通信使用NDB传输者的 WAN 支持,而无需任何进一步的手动干预。

    • 传输者的组号可以基于使用哪个可用性域,以便 SQL 和其他 API 节点也尽可能与同一可用性域中的本地数据节点通信。

    • 仲裁器可以从不存在数据节点的可用性域中选择,或者,如果找不到这样的可用性域,则可以从第三个可用性域中选择。

LocationDomainId取 0 到 16 之间的一个整数值,其中 0 是默认值;使用 0 等于不设置参数。

  • ArbitrationRank

table21.187 此 table 提供 ArbitrationRank API 节点配置参数的类型和值信息

PropertyValue
版本(或更高版本)NDB 7.5.0
类型或单位0-2
Default0
Range0 - 2
Restart TypeN

此参数定义哪些节点可以充当仲裁器。Management 节点和 SQL 节点都可以是仲裁器。值为 0table 示从不将给定节点用作仲裁器,值为 1 则将该节点作为仲裁器具有较高的优先级,而值为 2 则将其赋予较低的优先级。普通配置使用 Management 服务器作为仲裁器,将其ArbitrationRank设置为 1(Management 节点的默认值),将所有 SQL 节点的ArbitrationRank设置为 0(SQL 节点的默认值)。

通过在所有 Management 和 SQL 节点上将ArbitrationRank设置为 0,可以完全禁用仲裁。您也可以通过覆盖此参数来控制仲裁。为此,请在config.ini全局配置文件的[ndbd default]部分中设置Arbitration参数。

  • ArbitrationDelay

table21.188 此 table 提供 ArbitrationDelay API 节点配置参数的类型和值信息

PropertyValue
版本(或更高版本)NDB 7.5.0
类型或单位milliseconds
Default0
Range0 -4294967039(0xFFFFFEFF)
Restart TypeN

将此参数设置为除 0 以外的任何其他值(默认值)意味着仲裁器对仲裁请求的响应将延迟指定的毫秒数。通常没有必要更改此值。

table21.189 此 table 提供了 BatchByteSize API 节点配置参数的类型和值信息

PropertyValue
版本(或更高版本)NDB 7.5.0
类型或单位bytes
Default16K
Range1 K-1M
Restart TypeN

对于转换为索引的全 table 扫描或范围扫描的查询,获取适当大小的批记录以获得最佳性能很重要。可以根据记录数(BatchSize)和字节数(BatchByteSize)设置适当的大小。实际批量大小受两个参数限制。

根据设置此参数的方式,执行查询的速度可以相差 40%以上。

此参数以字节为单位。默认值为 16K。

table21.190 该 table 提供了 BatchSize API 节点配置参数的类型和值信息

PropertyValue
版本(或更高版本)NDB 7.5.0
类型或单位records
Default256
Range1 - 992
Restart TypeN

此参数以记录数为单位,默认设置为 256.最大大小为 992.

table21.191 下 table 提供 ExtraSendBufferMemory API 节点配置参数的类型和值信息

PropertyValue
版本(或更高版本)NDB 7.5.0
类型或单位bytes
Default0
Range0 -4294967039(0xFFFFFEFF)
Restart TypeN

该参数指定除使用TotalSendBufferMemorySendBufferMemory或同时使用这两者设置的传输器之外,还要分配的传输器发送缓冲内存量。

table21.192 此 table 提供了 HeartbeatThreadPriority API 节点配置参数的类型和值信息

PropertyValue
版本(或更高版本)NDB 7.5.0
类型或单位string
Default[none]
Range...
Restart TypeS

使用此参数可以设置 Management 和 API 节点的心跳线线程的调度策略和优先级。设置此参数的语法如下所示:

HeartbeatThreadPriority = policy[, priority]

policy:
  {FIFO | RR}

设置此参数时,必须指定一个策略。这是FIFO(先进先出)或RR(循环赛)之一。可以选择后面跟优先级(整数)。

table21.193 该 table 提供了 MaxScanBatchSize API 节点配置参数的类型和值信息

PropertyValue
版本(或更高版本)NDB 7.5.0
类型或单位bytes
Default256K
Range32 K-1600 万
Restart TypeN

批次大小是从每个数据节点发送的每个批次的大小。大多数扫描是并行执行的,以防止 MySQL Server 并行接收来自多个节点的过多数据。此参数为所有节点上的总批大小设置限制。

此参数的默认值设置为 256KB。最大大小为 16MB。

  • TotalSendBufferMemory

table21.194 下 table 提供了 TotalSendBufferMemory API 节点配置参数的类型和值信息

PropertyValue
版本(或更高版本)NDB 7.5.0
类型或单位bytes
Default0
Range256 K-4294967039(0xFFFFFEFF)
Restart TypeN

此参数用于确定要在此节点上分配的内存总量,以在所有已配置的传输器之间共享共享发送缓冲区内存。

如果设置了此参数,则其最小允许值为 256KB; 0table 示尚未设置参数。有关更多详细信息,请参见第 21.3.3.13 节,“配置 NDB 群集发送缓冲区参数”

table21.195 下 table 提供了 AutoReconnect API 节点配置参数的类型和值信息

PropertyValue
版本(或更高版本)NDB 7.5.0
类型或单位boolean
Defaultfalse
Rangetrue, false
Restart TypeN

默认情况下,此参数为false。这会强制断开连接的 API 节点(包括充当 SQL 节点的 MySQL 服务器)使用与群集的新连接,而不是尝试重用现有的连接,因为重新使用连接会在使用动态分配的节点 ID 时引起问题。错误#45921)

Note

可以使用 NDB API 覆盖此参数。有关更多信息,请参见Ndb_cluster_connection::set_auto_reconnect()Ndb_cluster_connection::get_auto_reconnect()

table21.196 该 table 提供了 DefaultOperationRedoProblemAction API 节点配置参数的类型和值信息

PropertyValue
版本(或更高版本)NDB 7.5.0
类型或单位enumeration
DefaultQUEUE
RangeABORT, QUEUE
Restart TypeS

当花费太多时间将重做日志刷新到磁盘时,此参数(以及RedoOverCommitLimitRedoOverCommitCounter)控制数据节点对操作的处理。当给定的重做日志刷新花费的时间超过RedoOverCommitLimit秒(大于RedoOverCommitCounter次),从而导致任何挂起的事务被中止时,就会发生这种情况。

发生这种情况时,节点可以根据以下所列的DefaultOperationRedoProblemAction值以两种方式之一进行响应:

  • ABORT:中止的事务中的所有挂起操作也将中止。

    • QUEUE:已中止的事务中的待处理操作排队 await 重试。这是默认值。当重做日志空间不足时(即发生 P_TAIL_PROBLEM 错误时),挂起操作仍会中止。
  • DefaultHashMapSize

table21.197 此 table 提供 DefaultHashMapSize API 节点配置参数的类型和值信息

PropertyValue
版本(或更高版本)NDB 7.5.0
类型或单位buckets
Default3840
Range0 - 3840
Restart TypeN

NDB使用的 table 哈希 Map 的大小可以使用此参数进行配置。 DefaultHashMapSize可以采用三个可能的值(0、240、3840)中的任何一个。

此参数的最初预期用途是促进具有不同默认哈希 Map 大小的非常老的版本之间的升级,尤其是降级。从 NDB Cluster 7.3(或更高版本)升级到更高版本时,这不是问题。

当前不支持使用DefaultHashMapSize等于 3840 创建或修改任何 table 后在线减小此参数。

table21.198 下 table 提供了 wan API 节点配置参数的类型和值信息

PropertyValue
版本(或更高版本)NDB 7.5.0
类型或单位boolean
Defaultfalse
Rangetrue, false
Restart TypeN

默认使用 WAN TCP 设置。

table21.199 该 table 提供了 ConnectBackoffMaxTime API 节点配置参数的类型和值信息

PropertyValue
版本(或更高版本)NDB 7.5.0
类型或单位integer
Default0
Range0 -4294967039(0xFFFFFEFF)
Restart TypeN

在具有许多未启动的数据节点的 NDB 群集中,可以提高此参数的值,以规避与尚未开始在群集中起作用的数据节点的连接尝试,并缓和 Management 节点的高流量。只要 API 节点未连接到任何新数据节点,就会应用StartConnectBackoffMaxTime参数的值;否则,使用ConnectBackoffMaxTime来确定两次连接尝试之间 await 的时间长度(以毫秒为单位)。

计算此参数的经过时间时,将不考虑节点连接尝试过程中经过的时间。从大约 100 ms 的延迟开始,以大约 100 ms 的分辨率应用超时;对于随后的每次尝试,此时间段的长度都会加倍,直到达到ConnectBackoffMaxTime毫秒,最长为 100000 ms(100s)。

一旦 API 节点连接到数据节点,并且该节点(在心跳消息中)报告它已连接到其他数据节点,则与这些数据节点的连接尝试将不再受此参数影响,并且此后每 100 毫秒进行一次直到连接。数据节点启动后,它可以占用HeartbeatIntervalDbApi来通知 API 节点已发生这种情况。

table21.200 该 table 提供了 StartConnectBackoffMaxTime API 节点配置参数的类型和值信息

PropertyValue
版本(或更高版本)NDB 7.5.0
类型或单位integer
Default0
Range0 -4294967039(0xFFFFFEFF)
Restart TypeN

在具有许多未启动的数据节点的 NDB 群集中,可以提高此参数的值,以规避与尚未开始在群集中起作用的数据节点的连接尝试,并缓和 Management 节点的高流量。只要 API 节点未连接到任何新的数据节点,就应用StartConnectBackoffMaxTime参数的值;否则,ConnectBackoffMaxTime用于确定两次连接尝试之间 await 的时间长度(以毫秒为单位)。

计算此参数的经过时间时,将不考虑节点连接尝试过程中经过的时间。从大约 100 ms 的延迟开始,以大约 100 ms 的分辨率应用超时;对于随后的每次尝试,此时间段的长度都会加倍,直到达到StartConnectBackoffMaxTime毫秒,最长为 100000 ms(100s)。

一旦 API 节点连接到数据节点,并且该节点(在心跳消息中)报告它已连接到其他数据节点,则与这些数据节点的连接尝试将不再受此参数影响,并且此后每 100 毫秒进行一次直到连接。数据节点启动后,它可以占用HeartbeatIntervalDbApi来通知 API 节点已发生这种情况。

API 节点调试参数. 从 NDB 7.5.2 开始,可以使用ApiVerbose配置参数来启用给定 API 节点的调试输出。此参数为整数值。默认值为 0,并禁用此类调试; 1 启用调试输出到集群日志; 2 也添加了DBDICT调试输出。 (缺陷号 20638450)另请参见DUMP 1229

您还可以使用mysqlClient 端中的SHOW STATUS从作为 NDB 群集 SQL 节点运行的 MySQL 服务器获取信息,如下所示:

mysql> SHOW STATUS LIKE 'ndb%';
+-----------------------------+----------------+
| Variable_name               | Value          |
+-----------------------------+----------------+
| Ndb_cluster_node_id         | 5              |
| Ndb_config_from_host        | 198.51.100.112 |
| Ndb_config_from_port        | 1186           |
| Ndb_number_of_storage_nodes | 4              |
+-----------------------------+----------------+
4 rows in set (0.02 sec)

有关此语句的输出中出现的状态变量的信息,请参见第 21.3.3.9.3 节“ NDB 群集状态变量”

Note

要将新的 SQL 或 API 节点添加到正在运行的 NDB 群集的配置中,有必要在将新的[mysqld][api]部分添加到config.ini文件(如果使用多个,则文件)之后,对所有群集节点执行滚动重启。Management 服务器)。必须先完成此操作,然后新的 SQL 或 API 节点才能连接到群集。

如果新的 SQL 或 API 节点可以在群集配置中使用以前未使用的 API 插槽连接到群集,则无需重新启动群集。

重新启动类型. 下 table 显示了本节中的参数描述所使用的重新启动类型的信息:

table21.201 NDB 群集重新启动类型

SymbolRestart TypeDescription
NNode可以使用滚动重启来更新参数(请参见第 21.5.5 节“执行 NDB 群集的滚动重启”)
SSystem必须完全关闭所有群集节点,然后重新启动,以更改此参数
IInitial必须使用--initial选项重新启动数据节点