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

[](<>)[](<>)[](<>)

这`[mysqld]`和`[api]`中的部分`配置文件`文件定义用于访问集群数据的 MySQL 服务器（SQL 节点）和其他应用程序（API 节点）的行为。显示的参数都不是必需的。如果未提供计算机或主机名，则任何主机都可以使用此 SQL 或 API 节点。

一般来说，一个`[mysqld]`部分用于指示 MySQL 服务器向集群提供 SQL 接口，以及`[api]`部分用于应用程序以外[**mysqld**](mysqld.html)进程访问集群数据，但这两个名称实际上是同义词；例如，您可以列出充当 SQL 节点的 MySQL 服务器的参数。`[api]`部分。

笔记

有关 NDB Cluster 的 MySQL 服务器选项的讨论，请参阅[第 23.4.3.9.1 节，“NDB 集群的 MySQL 服务器选项”](mysql-cluster-options-variables.html#mysql-cluster-program-options-mysqld).有关与 NDB Cluster 相关的 MySQL 服务器系统变量的信息，请参阅[第 23.4.3.9.2 节，“NDB 集群系统变量”](mysql-cluster-options-variables.html#mysql-cluster-system-variables).

-   [](<>) `Id`

    [](<>)

    [](<>)

    | 版本（或更高版本） | 新开发银行 8.0.13 |
    | --------- | ------------ |
    | 类型或单位 | 未签名 |
    | 默认 | [...] |
    | 范围 | 1 - 255 |
    | [重启类型](mysql-cluster-api-definition.html#mysql-cluster-api-definition-restart-types) | IS（NDB 8.0.13） |

    这个`身份证件`是一个整数值，用于标识所有集群内部消息中的节点。允许的值范围为1到255（含）。对于群集中的每个节点，无论节点类型如何，该值都必须是唯一的。

    笔记

    在NDB 8.0中，数据节点ID必须小于145。如果计划部署大量数据节点，最好将API节点（和管理节点）的节点ID限制为大于144的值。（以前，数据节点ID支持的最大值为48。）

    [`诺代德`](mysql-cluster-api-definition.html#ndbparam-api-nodeid)是标识API节点时使用的首选参数名称。(`身份证件`继续支持向后兼容，但现在已弃用，并在使用时生成警告。它还可能在未来被移除。）

-   [](<>) `连接地图`

    [](<>)

    [](<>)

    | 版本（或更高版本） | NDB 8.0.13 |
    | --------- | ---------- |
    | 类型或单位 | 一串 |
    | 违约 | [...] |
    | 范围 | ... |
    | [重启类型](mysql-cluster-api-definition.html#mysql-cluster-api-definition-restart-types) | N（NDB 8.0.13） |

    指定要连接的数据节点。

-   [](<>) `诺代德`

    [](<>)

    [](<>)

    | 版本（或更高版本） | NDB 8.0.13 |
    | --------- | ---------- |
    | 类型或单位 | 未签名 |
    | 违约 | [...] |
    | 范围 | 1 - 255 |
    | [重启类型](mysql-cluster-api-definition.html#mysql-cluster-api-definition-restart-types) | IS（NDB 8.0.13） |

    这个`诺代德`是一个整数值，用于标识所有集群内部消息中的节点。允许的值范围为1到255（含）。对于群集中的每个节点，无论节点类型如何，该值都必须是唯一的。

    笔记

    在NDB 8.0中，数据节点ID必须小于145。如果计划部署大量数据节点，最好将API节点（和管理节点）的节点ID限制为大于144的值。（以前，数据节点ID支持的最大值为48。）

    [`诺代德`](mysql-cluster-api-definition.html#ndbparam-api-nodeid)是标识管理节点时使用的首选参数名称。化名，`身份证件`，在非常旧的NDB Cluster版本中用于此目的，并继续支持向后兼容性；它现在已被弃用，使用时会生成警告，并可能在NDB Cluster的未来版本中被删除。

-   [](<>) `执行计算机`

    [](<>)

    [](<>)

    | 版本（或更高版本） | NDB 8.0.13 |
    | --------- | ---------- |
    | 类型或单位 | 名称 |
    | 违约 | [...] |
    | 范围 | ... |
    | 反对 | 是（在NDB 7.5中） |
    | [重启类型](mysql-cluster-api-definition.html#mysql-cluster-api-definition-restart-types) | S（NDB 8.0.13） |

    这是指`身份证件`为中定义的一台计算机（主机）设置`[计算机]`配置文件的。

    重要的

    此参数已弃用，并可能在将来的版本中删除。使用[`主机名`](mysql-cluster-api-definition.html#ndbparam-api-hostname)而不是参数。

-   [](<>)[](<>)

    此节点的节点ID只能提供给显式请求它的连接。请求“任意”节点ID的管理服务器不能使用此ID。在同一台主机上运行多个管理服务器时，可以使用此参数[`主机名`](mysql-cluster-api-definition.html#ndbparam-api-hostname)不足以区分不同的过程。用于测试。

-   [](<>) `主机名`

    [](<>)

    [](<>)

    | 版本（或更高版本） | NDB 8.0.13 |
    | --------- | ---------- |
    | 类型或单位 | 名称或IP地址 |
    | 违约 | [...] |
    | 范围 | ... |
    | [重启类型](mysql-cluster-api-definition.html#mysql-cluster-api-definition-restart-types) | N（NDB 8.0.13） |

    指定此参数可定义SQL节点（API节点）所在计算机的主机名。要指定主机名，请使用此参数或`执行计算机`是必需的。

    如果没有`主机名`或`执行计算机`在给定的`[mysql]`或`[api]`部分`配置。伊尼`然后，SQL或API节点可以使用相应的“插槽”从任何可以与管理服务器主机建立网络连接的主机进行连接。*这不同于数据节点的默认行为，其中`本地服务器`被假定为`主机名`除非另有规定*.

-   [](<>) [`LocationDomainId`](mysql-cluster-api-definition.html#ndbparam-api-locationdomainid)

    [](<>)

    [](<>)

    | 版本（或更高版本） | NDB 8.0.13 |
    | --------- | ---------- |
    | 类型或单位 | 整数 |
    | 违约 | 0 |
    | 范围 | 0 - 16 |
    | [重启类型](mysql-cluster-api-definition.html#mysql-cluster-api-definition-restart-types) | S（NDB 8.0.13） |

    将SQL或其他API节点分配给特定的[可用域](https://docs.us-phoenix-1.oraclecloud.com/Content/General/Concepts/regions.htm)（也称为可用性区域）在云中。通知`NDB`哪些节点位于哪些可用性域中，可以通过以下方式在云环境中提高性能：

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

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

    -   传输方的组号可以基于使用的可用性域，因此SQL和其他API节点也可以在可能的情况下与同一可用性域中的本地数据节点通信。

    -   仲裁器可以从不存在数据节点的可用性域中选择，或者，如果找不到此类可用性域，则可以从第三个可用性域中选择。

    `LocationDomainId`取一个介于0和16之间（含0和16）的整数值，默认值为0；使用0与不设置参数相同。

-   [](<>) `仲裁级别`

    [](<>)

    [](<>)

    | 版本（或更高版本） | NDB 8.0.13 |
    | --------- | ---------- |
    | 类型或单位 | 0-2 |
    | 违约 | 0 |
    | 范围 | 0 - 2 |
    | [重启类型](mysql-cluster-api-definition.html#mysql-cluster-api-definition-restart-types) | N（NDB 8.0.13） |

    此参数定义哪些节点可以充当仲裁器。管理节点和SQL节点都可以是仲裁器。值为0表示给定节点从未用作仲裁器，值为1表示该节点作为仲裁器具有高优先级，值为2表示该节点具有低优先级。正常配置使用管理服务器作为仲裁器，设置其`仲裁级别`为1（管理节点的默认值），所有SQL节点的默认值为0（SQL节点的默认值）。

    通过设置`仲裁级别`如果在所有管理节点和SQL节点上设置为0，则可以完全禁用仲裁。您还可以通过覆盖此参数来控制仲裁；为此，请设置[`仲裁`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-arbitration)中的参数`[ndbd默认值]`部分`配置。伊尼`全局配置文件。

-   [](<>) `仲裁延迟`

    [](<>)

    [](<>)

    | 版本（或更高版本） | NDB 8.0.13 |
    | --------- | ---------- |
    | 类型或单位 | 毫秒 |
    | 违约 | 0 |
    | 范围 | 0-4294967039（0xFFFFFEFF） |
    | [重启类型](mysql-cluster-api-definition.html#mysql-cluster-api-definition-restart-types) | N（NDB 8.0.13） |

    将此参数设置为0以外的任何其他值（默认值）意味着仲裁员对仲裁请求的响应将延迟指定的毫秒数。通常不需要更改此值。

-   [](<>) [`BatchByteSize`](mysql-cluster-api-definition.html#ndbparam-api-batchbytesize)

    [](<>)

    [](<>)

    | 版本（或更高版本） | NDB 8.0.13 |
    | --------- | ---------- |
    | 类型或单位 | 字节 |
    | 违约 | 16K |
    | 范围 | 1K-1M |
    | [重启类型](mysql-cluster-api-definition.html#mysql-cluster-api-definition-restart-types) | N（NDB 8.0.13） |

    对于转换为索引的完整表扫描或范围扫描的查询，以适当大小的批获取记录对于获得最佳性能非常重要。可以根据记录的数量设置适当的大小([`批量大小`](mysql-cluster-api-definition.html#ndbparam-api-batchsize))以字节为单位(`BatchByteSize`).实际批量大小受这两个参数的限制。

    根据此参数的设置，执行查询的速度可能会变化40%以上。

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

-   [](<>) [`批量大小`](mysql-cluster-api-definition.html#ndbparam-api-batchsize)

    [](<>)

    [](<>)

    | 版本（或更高版本） | NDB 8.0.13 |
    | --------- | ---------- |
    | 类型或单位 | 记录 |
    | 违约 | 256 |
    | 范围 | 1 - 992 |
    | [重启类型](mysql-cluster-api-definition.html#mysql-cluster-api-definition-restart-types) | N（NDB 8.0.13） |

    此参数以记录数为单位，默认设置为256。最大尺寸为992。

-   [](<>) [`外部缓冲存储器`](mysql-cluster-api-definition.html#ndbparam-api-extrasendbuffermemory)

    [](<>)

    [](<>)

    | 版本（或更高版本） | NDB 8.0.13 |
    | --------- | ---------- |
    | 类型或单位 | 字节 |
    | 违约 | 0 |
    | 范围 | 0-4294967039（0xFFFFFEFF） |
    | [重启类型](mysql-cluster-api-definition.html#mysql-cluster-api-definition-restart-types) | N（NDB 8.0.13） |

    此参数指定除使用设置的任何内存外，要分配的transporter send缓冲区内存量[`TotalSendBufferMemory`](mysql-cluster-api-definition.html#ndbparam-api-totalsendbuffermemory), [`发送缓冲存储器`](mysql-cluster-tcp-definition.html#ndbparam-tcp-sendbuffermemory)，或两者兼而有之。

-   [](<>) [`心脏跳动优先`](mysql-cluster-api-definition.html#ndbparam-api-heartbeatthreadpriority)

    [](<>)

    [](<>)

    | 版本（或更高版本） | NDB 8.0.13 |
    | --------- | ---------- |
    | 类型或单位 | 一串 |
    | 违约 | [...] |
    | 范围 | ... |
    | [重启类型](mysql-cluster-api-definition.html#mysql-cluster-api-definition-restart-types) | N（NDB 8.0.13） |

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

    ```
    HeartbeatThreadPriority = policy[, priority]

    policy:
      {FIFO | RR}
    ```

    设置此参数时，必须指定策略。这是其中之一`先进先出`（先进先出）或`RR`（循环）。这可以选择后跟优先级（整数）。

-   [](<>) [`MaxScanBatchSize`](mysql-cluster-api-definition.html#ndbparam-api-maxscanbatchsize)

    [](<>)

    [](<>)

    | 版本（或更高版本） | NDB 8.0.13 |
    | --------- | ---------- |
    | 类型或单位 | 字节 |
    | 违约 | 256K |
    | 范围 | 32K-16M |
    | [重启类型](mysql-cluster-api-definition.html#mysql-cluster-api-definition-restart-types) | N（NDB 8.0.13） |

    批次大小是从每个数据节点发送的每个批次的大小。大多数扫描都是并行执行的，以防止MySQL服务器并行接收来自多个节点的太多数据；此参数设置对所有节点上的总批量大小的限制。

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

-   [](<>) `TotalSendBufferMemory`

    [](<>)

    [](<>)

    | 版本（或更高版本） | NDB 8.0.13 |
    | --------- | ---------- |
    | 类型或单位 | 字节 |
    | 违约 | 0 |
    | 范围 | 256K-4294967039（0xFFFFFEFF） |
    | [重启类型](mysql-cluster-api-definition.html#mysql-cluster-api-definition-restart-types) | N（NDB 8.0.13） |

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

    如果设置了该参数，其最小允许值为256KB；0表示尚未设置参数。有关更多详细信息，请参阅[第23.4.3.14节，“配置NDB群集发送缓冲区参数”](mysql-cluster-config-send-buffers.html).

-   [](<>) [`自动恢复连接`](mysql-cluster-api-definition.html#ndbparam-api-autoreconnect)

    [](<>)

    [](<>)

    | 版本（或更高版本） | NDB 8.0.13 |
    | --------- | ---------- |
    | 类型或单位 | 布尔值 |
    | 违约 | 错误的 |
    | 范围 | 真假 |
    | [重启类型](mysql-cluster-api-definition.html#mysql-cluster-api-definition-restart-types) | N（NDB 8.0.13） |

    这个参数是`错误的`默认情况下。这会迫使断开连接的API节点（包括充当SQL节点的MySQL服务器）使用到集群的新连接，而不是尝试重新使用现有连接，因为在使用动态分配的节点ID时，重新使用连接可能会导致问题。（Bug#45921）

    笔记

    可以使用NDB API覆盖此参数。有关更多信息，请参阅[Ndb\_簇\_连接：：设置\_汽车\_重新连接（）](https://dev.mysql.com/doc/ndbapi/en/ndb-ndb-cluster-connection.html#ndb-ndb-cluster-connection-set-auto-reconnect)和[Ndb\_簇\_连接：：获取\_汽车\_重新连接（）](https://dev.mysql.com/doc/ndbapi/en/ndb-ndb-cluster-connection.html#ndb-ndb-cluster-connection-get-auto-reconnect).

-   [](<>) [`DefaultOperationRedoProblemAction`](mysql-cluster-api-definition.html#ndbparam-api-defaultoperationredoproblemaction)

    [](<>)

    [](<>)

    | 版本（或更高版本） | NDB 8.0.13 |
    | --------- | ---------- |
    | 类型或单位 | 列举 |
    | 违约 | 队列 |
    | 范围 | 中止，排队 |
    | [重启类型](mysql-cluster-api-definition.html#mysql-cluster-api-definition-restart-types) | N（NDB 8.0.13） |

    此参数（以及[`氧化还原极限`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-redoovercommitlimit)和[`氧化还原计数器`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-redoovercommitcounter))在将重做日志刷新到磁盘时，控制数据节点对操作的处理。当给定的重做日志刷新花费的时间超过[`氧化还原极限`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-redoovercommitlimit)秒，超过[`氧化还原计数器`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-redoovercommitcounter)次，导致任何挂起的事务被中止。

    发生这种情况时，节点可以根据`DefaultOperationRedoProblemAction`，列在这里：

    -   `中止`：任何来自已中止事务的挂起操作也将被中止。

    -   `队列`：已中止事务的挂起操作将排队等待重新尝试。这是默认设置。当重做日志空间不足时（即P\_尾\_出现问题错误。

-   [](<>) [`DefaultHashMapSize`](mysql-cluster-api-definition.html#ndbparam-api-defaulthashmapsize)

    [](<>)

    [](<>)

    | 版本（或更高版本） | NDB 8.0.13 |
    | --------- | ---------- |
    | 类型或单位 | 水桶 |
    | 违约 | 3840 |
    | 范围 | 0 - 3840 |
    | [重启类型](mysql-cluster-api-definition.html#mysql-cluster-api-definition-restart-types) | N（NDB 8.0.13） |

    所使用的表哈希映射的大小[`NDB`](mysql-cluster.html)可使用此参数配置。`DefaultHashMapSize`可以取三个可能的值（0、240、3840）中的任意一个。下表描述了这些值及其影响。

    [](<>)

    **表23.17 DefaultHashMapSize参数值**

    | 价值 | 描述/效果 |
    | --- | ----- |
    | `0` | 使用集群中所有数据节点和API节点中该参数的最低值集（如果有）；如果未在任何数据或API节点上设置，请使用默认值。 |
    | `240` | 旧的默认哈希映射大小 |
    | `3840` | NDB 8.0中默认使用的哈希映射大小 |

    此参数最初的预期用途是方便升级和降级到旧NDB群集版本，以及从旧NDB群集版本升级和降级，在旧NDB群集版本中，由于此更改在其他方面不向后兼容，哈希映射大小不同。在升级到NDB Cluster 8.0或从NDB Cluster 8.0降级时，这不是问题。

-   [](<>) [`广域网`](mysql-cluster-api-definition.html#ndbparam-api-wan)

    [](<>)

    [](<>)

    | 版本（或更高版本） | NDB 8.0.13 |
    | --------- | ---------- |
    | 类型或单位 | 布尔值 |
    | 违约 | 错误的 |
    | 范围 | 真假 |
    | [重启类型](mysql-cluster-api-definition.html#mysql-cluster-api-definition-restart-types) | N（NDB 8.0.13） |

    使用WAN TCP设置作为默认设置。

-   [](<>) [`ConnectBackoffMaxTime`](mysql-cluster-api-definition.html#ndbparam-api-connectbackoffmaxtime)

    [](<>)

    [](<>)

    | 版本（或更高版本） | NDB 8.0.13 |
    | --------- | ---------- |
    | 类型或单位 | 整数 |
    | 违约 | 0 |
    | 范围 | 0-4294967039（0xFFFFFEFF） |
    | [重启类型](mysql-cluster-api-definition.html#mysql-cluster-api-definition-restart-types) | N（NDB 8.0.13） |

    在具有许多未启动数据节点的NDB集群中，可以提高此参数的值，以避免连接到集群中尚未开始运行的数据节点的尝试，以及管理节点的中等高流量。只要API节点未连接到任何新数据节点，则[`StartConnectionBackOffMaxTime`](mysql-cluster-api-definition.html#ndbparam-api-startconnectbackoffmaxtime)参数被应用；否则`ConnectBackoffMaxTime`用于确定连接尝试之间等待的时间长度（以毫秒为单位）。

    时间流逝*在期间*计算此参数的运行时间时，不考虑节点连接尝试。以大约100毫秒的分辨率应用超时，从100毫秒的延迟开始；对于随后的每次尝试，这段时间的长度都会加倍，直到达到`ConnectBackoffMaxTime`毫秒，最高可达100000毫秒（100秒）。

    一旦API节点连接到一个数据节点，并且该节点（在心跳消息中）报告它已连接到其他数据节点，则到这些数据节点的连接尝试不再受此参数的影响，并且在连接之前每隔100毫秒进行一次。一旦数据节点启动，它就可以占用[`心跳间歇`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-heartbeatintervaldbapi)用于通知API节点已发生这种情况。

-   [](<>) [`StartConnectionBackOffMaxTime`](mysql-cluster-api-definition.html#ndbparam-api-startconnectbackoffmaxtime)

    [](<>)

    [](<>)

    | 版本（或更高版本） | NDB 8.0.13 |
    | --------- | ---------- |
    | 类型或单位 | 整数 |
    | 违约 | 0 |
    | 范围 | 0-4294967039（0xFFFFFEFF） |
    | [重启类型](mysql-cluster-api-definition.html#mysql-cluster-api-definition-restart-types) | N（NDB 8.0.13） |

    在具有许多未启动数据节点的NDB集群中，可以提高此参数的值，以避免连接到集群中尚未开始运行的数据节点的尝试，以及管理节点的中等高流量。只要API节点未连接到任何新数据节点，则`StartConnectionBackOffMaxTime`参数被应用；否则[`ConnectBackoffMaxTime`](mysql-cluster-api-definition.html#ndbparam-api-connectbackoffmaxtime)用于确定连接尝试之间等待的时间长度（以毫秒为单位）。

    时间流逝*在期间*计算此参数的运行时间时，不考虑节点连接尝试。以大约100毫秒的分辨率应用超时，从100毫秒的延迟开始；对于随后的每次尝试，这段时间的长度都会加倍，直到达到`StartConnectionBackOffMaxTime`毫秒，最高可达100000毫秒（100秒）。

    一旦API节点连接到一个数据节点，并且该节点（在心跳消息中）报告它已连接到其他数据节点，则到这些数据节点的连接尝试不再受此参数的影响，并且在连接之前每隔100毫秒进行一次。一旦数据节点启动，它就可以占用[`心跳间歇`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-heartbeatintervaldbapi)用于通知API节点已发生这种情况。

[](<>)**API节点调试参数。**你可以使用`冗长的`配置参数，以启用对给定API节点的输出进行调试。此参数采用整数值。0为默认值，并禁用此类调试；1启用对集群日志的调试输出；2.补充[`DBDICT`](https://dev.mysql.com/doc/ndb-internals/en/ndb-internals-kernel-blocks-dbdict.html)调试输出。（Bug#20638450）另见[1229号垃圾场](https://dev.mysql.com/doc/ndb-internals/en/dump-command-1229.html).

您还可以使用从作为NDB群集SQL节点运行的MySQL服务器获取信息[`显示状态`](show-status.html)在[**mysql**](mysql.html)客户端，如下所示：

```
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)
```

有关此语句输出中出现的状态变量的信息，请参阅[第23.4.3.9.3节，“NDB集群状态变量”](mysql-cluster-options-variables.html#mysql-cluster-status-variables).

笔记

要将新的SQL或API节点添加到正在运行的NDB群集的配置中，需要在添加新节点后执行所有群集节点的滚动重启`[mysqld]`或`[api]`到`配置。伊尼`文件（如果使用多个管理服务器，则为多个文件）。这必须在新的SQL或API节点连接到集群之前完成。

它是*不*如果新的SQL或API节点可以在集群配置中使用以前未使用的API插槽来连接到集群，则需要重新启动集群。

[](<>)**重启类型。**下表显示了本节中参数说明使用的重启类型的相关信息：

[](<>)

**表23.18 NDB集群重启类型**

| 象征 | 重启类型 | 描述 |
| --- | ---- | --- |
| N | 节点 | 可以使用滚动重新启动来更新参数（请参见[第23.6.5节，“执行NDB集群的滚动重启”](mysql-cluster-rolling-restart.html)) |
| S | 系统 | 必须完全关闭所有群集节点，然后重新启动，才能更改此参数 |
| 我 | 最初的 | 必须使用[`--首字母`](mysql-cluster-programs-ndbd.html#option_ndbd_initial)选项 |
