文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (美国信纸) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  在 NDB 集群中定义 SQL 和其他 API 节点

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

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

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

注意

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

  • Id

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

    初始系统重启:需要完全关闭集群,从 备份 中擦除并恢复集群文件系统,然后重启集群。(NDB 8.4.0)

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

    注意

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

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

  • ConnectionMap

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

    节点重启:需要 滚动重启 集群。(NDB 8.4.0)

    指定要连接的数据节点。

  • NodeId

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

    初始系统重启:需要完全关闭集群,从 备份 中擦除并恢复集群文件系统,然后重启集群。(NDB 8.4.0)

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

    注意

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

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

  • ExecuteOnComputer

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

    系统重启:需要完全关闭并重启集群。(NDB 8.4.0)

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

    重要

    此参数已弃用,并且可能会在未来的版本中删除。请改用 HostName 参数。

  • 仅当连接明确请求时,才能将此节点的节点 ID 提供给连接。请求 任何 节点 ID 的管理服务器不能使用此节点 ID。当在同一主机上运行多个管理服务器时,可以使用此参数,而 HostName 不足以区分进程。旨在用于测试。

  • HostName

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

    节点重启:需要 滚动重启 集群。(NDB 8.4.0)

    指定此参数定义 SQL 节点 (API 节点) 所在计算机的主机名。使用 HostName 指定与 localhost 不同的主机名。

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

  • LocationDomainId

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

    系统重启:需要完全关闭并重启集群。(NDB 8.4.0)

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

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

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

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

    • 仲裁器可以选择来自没有数据节点的可用性域,或者,如果找不到这样的可用性域,则可以选择来自第三个可用性域。

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

  • ArbitrationRank

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

    节点重启:需要 滚动重启 集群。(NDB 8.4.0)

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

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

  • ArbitrationDelay

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

    节点重启:需要 滚动重启 集群。(NDB 8.4.0)

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

  • BatchByteSize

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

    节点重启:需要 滚动重启 集群。(NDB 8.4.0)

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

    查询执行速度可能会因此参数的设置方式而相差 40% 以上。

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

  • BatchSize

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

    节点重启:需要 滚动重启 集群。(NDB 8.4.0)

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

  • ExtraSendBufferMemory

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

    节点重启:需要 滚动重启 集群。(NDB 8.4.0)

    此参数指定要分配的传输器发送缓冲区内存量,它将添加到使用 TotalSendBufferMemorySendBufferMemory 或两者设置的任何内存量。

  • HeartbeatThreadPriority

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

    节点重启:需要 滚动重启 集群。(NDB 8.4.0)

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

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

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

  • MaxScanBatchSize

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

    节点重启:需要 滚动重启 集群。(NDB 8.4.0)

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

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

  • TotalSendBufferMemory

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

    节点重启:需要 滚动重启 集群。(NDB 8.4.0)

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

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

  • AutoReconnect

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

    节点重启:需要 滚动重启 集群。(NDB 8.4.0)

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

    注意

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

  • DefaultOperationRedoProblemAction

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

    节点重启:需要 滚动重启 集群。(NDB 8.4.0)

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

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

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

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

  • DefaultHashMapSize

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

    节点重启:需要 滚动重启 集群。(NDB 8.4.0)

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

    表 25.16 DefaultHashMapSize 参数值

    描述 / 影响
    0 在集群中的所有数据节点和 API 节点之间,使用此参数设置的最低值;如果未在任何数据节点或 API 节点上设置,则使用默认值。
    240 旧的默认哈希映射大小
    3840 NDB 8.4 中默认使用的哈希映射大小

    此参数最初的意图是简化对旧版 NDB Cluster 版本的升级和降级,在这些版本中,哈希映射大小不同,因为此更改不向后兼容。

  • Wan

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

    节点重启:需要 滚动重启 集群。(NDB 8.4.0)

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

  • ConnectBackoffMaxTime

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

    节点重启:需要 滚动重启 集群。(NDB 8.4.0)

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

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

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

  • StartConnectBackoffMaxTime

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

    节点重启:需要 滚动重启 集群。(NDB 8.4.0)

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

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

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

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

您还可以使用 SHOW STATUS(在 mysql 客户端中)从充当 NDB Cluster 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 Cluster 状态变量”

注意

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

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

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

表 25.17 NDB Cluster 重启类型

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