Documentation Home
MySQL 8.0 参考手册  / 第 23 章 MySQL NDB Cluster 8.0  / 23.4 NDB Cluster的配置  / 23.4.3 NDB Cluster 配置文件  /  21.4.3.7 在 NDB Cluster 中定义 SQL 和其他 API 节点

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

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

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

笔记

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

  • Id

    版本(或更高版本) 新开发银行 7.5.0
    类型或单位 未签名
    默认 [...]
    范围 1 - 255
    重启类型

    是(新开发银行 7.5.0)

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

    笔记

    无论使用 NDB Cluster 版本如何,数据节点 ID 都必须小于 49。如果您计划部署大量数据节点,最好将 API 节点(和管理节点)的节点 ID 限制为大于 48 的值。

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

  • ConnectionMap

    版本(或更高版本) 新开发银行 7.5.0
    类型或单位 细绳
    默认 [...]
    范围 ...
    重启类型

    N(新开发银行 7.5.0)

    指定要连接的数据节点。

  • NodeId

    版本(或更高版本) 新开发银行 7.5.0
    类型或单位 未签名
    默认 [...]
    范围 1 - 255
    重启类型

    是(新开发银行 7.5.0)

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

    笔记

    无论使用 NDB Cluster 版本如何,数据节点 ID 都必须小于 49。如果您计划部署大量数据节点,最好将 API 节点(和管理节点)的节点 ID 限制为大于 48 的值。

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

  • ExecuteOnComputer

    版本(或更高版本) 新开发银行 7.5.0
    类型或单位 姓名
    默认 [...]
    范围 ...
    弃用 新开发银行 7.5.0
    重启类型

    S(NDB 7.5.0)

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

    重要的

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

  • HostName

    版本(或更高版本) 新开发银行 7.5.0
    类型或单位 名称或 IP 地址
    默认 [...]
    范围 ...
    重启类型

    N(新开发银行 7.5.0)

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

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

  • LocationDomainId

    版本(或更高版本) 新开发银行 7.6.4
    类型或单位 整数
    默认 0
    范围 0 - 16
    添加 新开发银行 7.6.4
    重启类型

    S(NDB 7.5.0)

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

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

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

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

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

    LocationDomainId取 0 到 16 之间的整数值,默认值为 0;使用 0 与不设置参数相同。

  • ArbitrationRank

    版本(或更高版本) 新开发银行 7.5.0
    类型或单位 0-2
    默认 0
    范围 0 - 2
    重启类型

    N(新开发银行 7.5.0)

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

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

  • ArbitrationDelay

    版本(或更高版本) 新开发银行 7.5.0
    类型或单位 毫秒
    默认 0
    范围 0 - 4294967039 (0xFFFFFEFF)
    重启类型

    N(新开发银行 7.5.0)

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

  • BatchByteSize

    版本(或更高版本) 新开发银行 7.5.0
    类型或单位 字节
    默认 16K
    范围 1K - 1M
    重启类型

    N(新开发银行 7.5.0)

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

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

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

  • BatchSize

    版本(或更高版本) 新开发银行 7.5.0
    类型或单位 记录
    默认 256
    范围 1 - 992
    重启类型

    N(新开发银行 7.5.0)

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

  • ExtraSendBufferMemory

    版本(或更高版本) 新开发银行 7.5.0
    类型或单位 字节
    默认 0
    范围 0 - 4294967039 (0xFFFFFEFF)
    重启类型

    N(新开发银行 7.5.0)

    TotalSendBufferMemory此参数指定要分配的传输器发送缓冲区内存量,以及使用、 SendBufferMemory或两者 设置的任何内存量 。

  • HeartbeatThreadPriority

    版本(或更高版本) 新开发银行 7.5.0
    类型或单位 细绳
    默认 [...]
    范围 ...
    重启类型

    N(新开发银行 7.5.0)

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

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

    设置该参数时,必须指定策略。这是FIFO(first in, first in) 或 RR(round robin) 之一。这后面可以选择优先级(整数)。

  • MaxScanBatchSize

    版本(或更高版本) 新开发银行 7.5.0
    类型或单位 字节
    默认 256K
    范围 32K - 16M
    重启类型

    N(新开发银行 7.5.0)

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

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

  • TotalSendBufferMemory

    版本(或更高版本) 新开发银行 7.5.0
    类型或单位 字节
    默认 0
    范围 256K - 4294967039 (0xFFFFFEFF)
    重启类型

    N(新开发银行 7.5.0)

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

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

  • AutoReconnect

    版本(或更高版本) 新开发银行 7.5.0
    类型或单位 布尔值
    默认 错误的
    范围 真假
    重启类型

    N(新开发银行 7.5.0)

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

    笔记

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

  • DefaultOperationRedoProblemAction

    版本(或更高版本) 新开发银行 7.5.0
    类型或单位 枚举
    默认 队列
    范围 中止,队列
    重启类型

    N(新开发银行 7.5.0)

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

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

    • ABORT:来自已中止事务的任何未决操作也将中止。

    • QUEUE:来自已中止事务的未决操作排队等待重试。这是默认值。当重做日志空间不足时,挂起的操作仍然会被中止——也就是说,当发生P_TAIL_PROBLEM错误时。

  • DefaultHashMapSize

    版本(或更高版本) 新开发银行 7.5.0
    类型或单位 水桶
    默认 3840
    范围 0 - 3840
    重启类型

    N(新开发银行 7.5.0)

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

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

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

  • Wan

    版本(或更高版本) 新开发银行 7.5.0
    类型或单位 布尔值
    默认 错误的
    范围 真假
    重启类型

    N(新开发银行 7.5.0)

    默认使用 WAN TCP 设置。

  • ConnectBackoffMaxTime

    版本(或更高版本) 新开发银行 7.5.0
    类型或单位 整数
    默认 0
    范围 0 - 4294967039 (0xFFFFFEFF)
    重启类型

    N(新开发银行 7.5.0)

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

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

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

  • StartConnectBackoffMaxTime

    版本(或更高版本) 新开发银行 7.5.0
    类型或单位 整数
    默认 0
    范围 0 - 4294967039 (0xFFFFFEFF)
    重启类型

    N(新开发银行 7.5.0)

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

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

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

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

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

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

笔记

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

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

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

表 21.16 NDB Cluster 重启类型

象征 重启类型 描述
节点 可以使用滚动重启更新参数(请参阅 第 21.6.5 节,“执行 NDB Cluster 的滚动重启”
小号 系统 所有集群节点必须完全关闭,然后重新启动,以影响此参数的更改
最初的 必须使用该 --initial选项重新启动数据节点