文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  在 NDB Cluster 中定义 SQL 和其他 API 节点

25.4.3.7 在 NDB Cluster 中定义 SQL 和其他 API 节点

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

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

注意

有关 NDB Cluster 的 MySQL 服务器选项的讨论,请参阅 第 25.4.3.9.1 节,“NDB Cluster 的 MySQL 服务器选项”。有关与 NDB Cluster 相关的 MySQL 服务器系统变量的信息,请参阅 第 25.4.3.9.2 节,“NDB Cluster 系统变量”

  • Id

    版本(或更高版本) NDB
    类型或单位 无符号
    默认值 [...]
    范围 1 - 255
    重启类型

    初始系统重启: 需要完全关闭集群,从 备份中擦除和恢复集群文件系统,然后重新启动集群。

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

    注意

    数据节点 ID 必须小于 145。如果您计划部署大量数据节点,最好将 API 节点(和管理节点)的节点 ID 限制为大于 144 的值。

    NodeId 是用于识别 API 节点时首选的参数名称。(Id 继续支持向后兼容性,但现在已弃用,并在使用时生成警告。它也可能在将来被删除。)

  • ConnectionMap

    版本(或更高版本) NDB
    类型或单位 字符串
    默认值 [...]
    范围 ...
    重启类型

    节点重启: 需要对集群进行 滚动重启

    指定要连接的数据节点。

  • NodeId

    版本(或更高版本) NDB
    类型或单位 无符号
    默认值 [...]
    范围 1 - 255
    重启类型

    初始系统重启: 需要完全关闭集群,从 备份中擦除和恢复集群文件系统,然后重新启动集群。

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

    注意

    数据节点 ID 必须小于 145。如果您计划部署大量数据节点,最好将 API 节点(和管理节点)的节点 ID 限制为大于 144 的值。

    NodeId 是用于识别管理节点时首选的参数名称。别名 Id 在非常旧版本的 NDB Cluster 中用于此目的,并且继续支持向后兼容性;它现在已弃用,并在使用时生成警告,并且可能在 NDB Cluster 的未来版本中被删除。

  • ExecuteOnComputer

    版本(或更高版本) NDB
    类型或单位 名称
    默认值 [...]
    范围 ...
    已弃用 是(在 NDB 7.5 中)
    重启类型

    系统重启: 需要完全关闭并重启集群。

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

    重要

    此参数已弃用,并且可能会在将来的版本中删除。请使用 HostName 参数代替。

  • 此节点的节点 ID 只能给出给明确请求它的连接。请求 any 节点 ID 的管理服务器不能使用此节点 ID。当在同一主机上运行多个管理服务器时,可以使用此参数,而 HostName 不足以区分进程。用于测试目的。

  • HostName

    版本(或更高版本) NDB
    类型或单位 名称或 IP 地址
    默认值 [...]
    范围 ...
    重启类型

    节点重启: 需要对集群进行 滚动重启

    指定此参数定义 SQL 节点(API 节点)驻留的计算机的主机名。使用 HostName 指定除 localhost 之外的其他主机名。

    如果在 config.ini 文件的给定 [mysql][api] 部分中未指定 HostName,则 SQL 或 API 节点可以使用对应 slot 从可以建立到管理服务器主机机器的网络连接的任何主机连接。 这与数据节点的默认行为不同,在数据节点中,除非另有指定,否则 localhost 被假定为 HostName.

  • LocationDomainId

    版本(或更高版本) NDB
    类型或单位 整数
    默认值 0
    范围 0 - 16
    重启类型

    系统重启: 需要完全关闭并重启集群。

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

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

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

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

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

    LocationDomainId 取介于 0 到 16(含)之间的整数,其中 0 为默认值;使用 0 与不设置参数相同。

  • ArbitrationRank

    版本(或更高版本) NDB
    类型或单位 0-2
    默认值 0
    范围 0 - 2
    重启类型

    节点重启: 需要对集群进行 滚动重启

    此参数定义哪些节点可以充当仲裁器。管理节点和 SQL 节点都可以充当仲裁器。值为 0 表示给定节点永远不会用作仲裁器,值为 1 表示节点具有高仲裁器优先级,值为 2 表示节点具有低优先级。正常配置使用管理服务器作为仲裁器,将其 ArbitrationRank 设置为 1(管理节点的默认值),并将所有 SQL 节点的 ArbitrationRank 设置为 0(SQL 节点的默认值)。

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

  • ArbitrationDelay

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

    节点重启: 需要对集群进行 滚动重启

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

  • BatchByteSize

    版本(或更高版本) NDB
    类型或单位 字节
    默认值 16K
    范围 1K - 1M
    重启类型

    节点重启: 需要对集群进行 滚动重启

    对于被转换为完整表扫描或索引上的范围扫描的查询,以适当大小的批次获取记录对于最佳性能至关重要。可以根据记录数量 (BatchSize) 和字节数 (BatchByteSize) 来设置适当的大小。实际的批次大小受这两个参数限制。

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

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

  • BatchSize

    版本(或更高版本) NDB
    类型或单位 记录
    默认值 256
    范围 1 - 992
    重启类型

    节点重启: 需要对集群进行 滚动重启

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

  • ExtraSendBufferMemory

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

    节点重启: 需要对集群进行 滚动重启

    此参数指定要分配的传输器发送缓冲区内存量,该内存量除了使用 TotalSendBufferMemorySendBufferMemory 或两者设置的任何内存量之外。

  • HeartbeatThreadPriority

    版本(或更高版本) NDB
    类型或单位 字符串
    默认值 [...]
    范围 ...
    重启类型

    节点重启: 需要对集群进行 滚动重启

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

    HeartbeatThreadPriority = policy[, priority]
    
    policy:
      {FIFO | RR}

    设置此参数时,您必须指定策略。这可以是 FIFO(先进先出)或 RR(循环)。可选地,它后面可以是优先级(整数)。

  • MaxScanBatchSize

    版本(或更高版本) NDB
    类型或单位 字节
    默认值 256K
    范围 32K - 16M
    重启类型

    节点重启: 需要对集群进行 滚动重启

    批次大小是每个数据节点发送的每个批次的大小。大多数扫描都是并行执行的,以保护 MySQL 服务器免受来自许多节点的并行接收过多数据;此参数设置所有节点的总批次大小的限制。

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

  • TotalSendBufferMemory

    版本(或更高版本) NDB
    类型或单位 字节
    默认值 0
    范围 256K - 4294967039 (0xFFFFFEFF)
    重启类型

    节点重启: 需要对集群进行 滚动重启

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

    如果设置了此参数,则其允许的最小值为 256KB;0 表示参数未设置。有关详细信息,请参阅 第 25.4.3.14 节,“配置 NDB Cluster 发送缓冲区参数”

  • AutoReconnect

    版本(或更高版本) NDB
    类型或单位 布尔值
    默认值 false
    范围 true, false
    重启类型

    节点重启: 需要对集群进行 滚动重启

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

    注意

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

  • DefaultOperationRedoProblemAction

    版本(或更高版本) NDB
    类型或单位 枚举
    默认值 QUEUE
    范围 ABORT, QUEUE
    重启类型

    节点重启: 需要对集群进行 滚动重启

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

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

    • ABORT:中止交易的任何挂起操作也将中止。

    • QUEUE:来自已中止交易的挂起操作将排队以重新尝试。这是默认值。当重做日志空间不足时,挂起操作仍会中止,即,当出现 P_TAIL_PROBLEM 错误时。

  • DefaultHashMapSize

    版本(或更高版本) NDB
    类型或单位
    默认值 3840
    范围 0 - 3840
    重启类型

    节点重启: 需要对集群进行 滚动重启

    使用此参数可以配置 NDB 使用的表哈希映射的大小。 DefaultHashMapSize 可以取三个可能的任何值(0、240、3840)。这些值及其影响在以下表格中描述。

    表 25.16 DefaultHashMapSize 参数值

    描述/效果
    0 对于集群中的所有数据节点和 API 节点,使用此参数的最低设置值(如果有);如果在任何数据或 API 节点上没有设置此参数,则使用默认值。
    240 旧的默认哈希映射大小
    3840 NDB 9.0 中默认使用的哈希映射大小

    此参数最初的用途是为了简化对旧版本 NDB Cluster 的升级和降级,在旧版本 NDB Cluster 中,哈希映射大小不同,因为此更改在其他方面不向后兼容。

  • Wan

    版本(或更高版本) NDB
    类型或单位 布尔值
    默认值 false
    范围 true, false
    重启类型

    节点重启: 需要对集群进行 滚动重启

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

  • ConnectBackoffMaxTime

    重启类型

    节点重启: 需要对集群进行 滚动重启

    在具有许多未启动的数据节点的 NDB 集群中,可以提高此参数的值,以规避对尚未开始在集群中运行的数据节点的连接尝试,以及适度地减少对管理节点的高流量。只要 API 节点未连接到任何新的数据节点,就会应用 StartConnectBackoffMaxTime 参数的值;否则,ConnectBackoffMaxTime 用于确定连接尝试之间等待的毫秒数。

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

    一旦 API 节点连接到数据节点,并且该节点报告(在心跳消息中)它已连接到其他数据节点,那么对这些数据节点的连接尝试将不再受此参数影响,并且此后每 100 毫秒尝试一次,直到连接成功。数据节点启动后,API 节点可能需要 HeartbeatIntervalDbApi 的时间才能收到有关此事件的通知。

  • StartConnectBackoffMaxTime

    重启类型

    节点重启: 需要对集群进行 滚动重启

    在具有许多未启动的数据节点的 NDB 集群中,可以提高此参数的值,以规避对尚未开始在集群中运行的数据节点的连接尝试,以及适度地减少对管理节点的高流量。只要 API 节点未连接到任何新的数据节点,就会应用 StartConnectBackoffMaxTime 参数的值;否则,ConnectBackoffMaxTime 用于确定连接尝试之间等待的毫秒数。

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

    一旦 API 节点连接到数据节点,并且该节点报告(在心跳消息中)它已连接到其他数据节点,那么对这些数据节点的连接尝试将不再受此参数影响,并且此后每 100 毫秒尝试一次,直到连接成功。数据节点启动后,API 节点可能需要 HeartbeatIntervalDbApi 的时间才能收到有关此事件的通知。

API 节点调试参数。 可以使用 ApiVerbose 配置参数启用来自给定 API 节点的调试输出。此参数接受整数。0 是默认值,禁用此类调试;1 将调试输出启用到集群日志;2 还会添加 DBDICT 调试输出。(错误 #20638450)另请参阅 DUMP 1229

还可以使用 SHOW STATUSmysql 客户端中,从作为 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)

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

注意

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

如果新的 SQL 或 API 节点可以使用集群配置中以前未使用的 API 插槽连接到集群,则不需要执行任何集群重启。

重启类型。 下表显示了本节参数描述中使用的重启类型的信息

表 25.17 NDB 集群重启类型

符号 重启类型 描述
N 节点 可以使用滚动重启更新参数(请参阅 第 25.6.5 节,“执行 NDB 集群的滚动重启”
S 系统 必须完全关闭所有集群节点,然后重新启动,以使更改此参数生效
I 初始 必须使用 --initial 选项重新启动数据节点