25.4.3.7 在 NDB 集群中定义 SQL 和其他 API 节点
在config.ini
文件中的[mysqld]
和[api]
部分定义了 MySQL 服务器( SQL 节点)和其他应用程序( API 节点)访问集群数据的行为。没有显示的参数是必需的。如果未提供计算机或主机名称,则任何主机都可以使用该 SQL 或 API 节点。
通常情况下,[mysqld]
部分用于指示 MySQL 服务器为集群提供 SQL 接口,而[api]
部分用于其他-than-mysqld进程访问集群数据,但这两个设计名称实际上是同义的;您可以在[api]
部分中列出 MySQL 服务器作为 SQL 节点的参数。
关于 NDB 集群中的 MySQL 服务器选项,请见第25.4.3.9.1节,“NDB 集群中的 MySQL 服务器选项”。关于 NDB 集群中的 MySQL 服务器系统变量,请见第25.4.3.9.2节,“NDB 集群中的系统变量”。
-
Version (or later) NDB 8.4.0 Type or units 无符号 Default [...] Range 1 - 255 Restart Type 初始系统重启:需要完全关闭集群,擦除并从备份中恢复集群文件系统,然后重新启动集群。 (NDB 8.4.0)
节点 ID 是一个整数值,用于在所有集群内部消息中标识节点。允许的值范围是 1 到 255,包括。这对于每个节点都必须唯一,不管该节点是什么类型。
Note数据节点 ID 必须小于 145。如果您计划部署大量数据节点,那么限制 API 节点(和管理节点)的节点 ID 到大于 144 的值是一个好主意。
NodeId
是识别 API 节点的首选参数名称。 (Id
继续支持 backward compatibility,但现在已弃用,使用时将生成警告,并且可能在将来被删除。) -
Version (or later) NDB 8.4.0 Type or units string Default [...] Range ... Restart Type 节点重启:需要滚动重启集群。 (NDB 8.4.0)
指定要连接的数据节点。
-
Version (or later) NDB 8.4.0 Type or units 无符号 Default [...] Range 1 - 255 Restart Type 初始系统重启:需要完全关闭集群,使用备份来擦除和恢复集群文件系统,然后重新启动集群。 (NDB 8.4.0)
NodeId
是一个整数值,用于在所有集群内部消息中标识节点。允许的值范围是1到255之间的整数。这对于每个节点都必须唯一,不管该节点是什么类型。Note数据节点 ID 必须小于 145。如果您计划部署大量数据节点,建议将 API 节点(和管理节点)的节点 ID 限制为大于 144 的值。
NodeId
是识别管理节点时使用的首选参数名称。NDB 集群的非常老版本中曾使用别名Id
,现在仍然支持 backward compatibility,但已弃用,使用时将生成警告,并且在未来的 NDB 集群版本中可能被删除。 -
Version (or later) NDB 8.4.0 Type or units name Default [...] Range ... Deprecated Yes (在 NDB 7.5 中) Restart Type 系统重启:需要完全关闭和重新启动集群。 (NDB 8.4.0)
这指的是在配置文件中
[computer]
部分定义的计算机(主机)的Id
设置。Important这个参数已弃用,可能在未来的版本中被删除。请使用
HostName
参数代替。 -
该节点 ID 只能给出到明确请求它的连接。管理服务器不能使用“any”节点 ID。这参数可以在同一主机上运行多个管理服务器时使用,并且
HostName
不足以区分进程。旨为测试使用。 -
Version (or later) NDB 8.4.0 Type or units 名称或IP地址 Default [...] Range ... Restart Type 节点重启:需要对集群进行滚动重启。 (NDB 8.4.0)
指定该参数将定义计算机上的 SQL 节点(API 节点)的主机名。使用
HostName
指定一个与localhost
不同的主机名。如果在
config.ini
文件中的某个[mysql]
或[api]
部分中没有指定HostName
,那么 SQL 或 API 节点可能会使用对应的““slot””从任何可以与管理服务器主机建立网络连接的主机连接。 这与数据节点的默认行为不同,其中localhost
将被假设为HostName
,除非另有指定。 -
Version (or later) NDB 8.4.0 Type or units 整数 Default 0 Range 0 - 16 Restart Type 系统重启:需要完全关闭和重新启动集群。 (NDB 8.4.0)
将 SQL 或其他 API 节点分配到特定的可用性域(也称为可用性区)中,以便在云环境中提高性能。通过将
NDB
通知哪些节点位于哪些可用性域,可以实现以下优点:-
如果请求数据不在同一节点上,可以将读取指令发送到同一可用性域中的另一个节点。
-
不同可用性域之间的节点通信将使用
NDB
传输器的WAN支持,无需进一步的手动干预。 -
传输器的组号可以基于所用的可用性域,以便 SQL 和其他 API 节点尽可能地与同一可用性域中的数据节点通信。
-
仲裁员可以从无数据节点的可用性域中选择,也可以如果找不到这样的可用性域,从第三个可用性域中选择。
LocationDomainId
将一个整数值(0-16)传递给它,0 是默认值;使用 0 等同于未设置该参数。 -
-
Version (or later) NDB 8.4.0 Type or units 0-2 Default 0 Range 0 - 2 Restart Type 节点重启:需要对集群进行滚动重启。 (NDB 8.4.0)
这个参数定义了哪些节点可以作为仲裁者。管理节点和 SQL 节点都可以是仲裁者。值为 0 表示给定的节点从不用作仲裁者,值为 1 给予节点高优先级作为仲裁者,值为 2 给予节点低优先级。正常配置使用管理服务器作为仲裁者,将其
ArbitrationRank
设置为 1(管理节点的默认值)并将所有 SQL 节点的设置为 0(SQL 节点的默认值)。通过在所有管理和 SQL 节点上设置
ArbitrationRank
为 0,可以完全禁用仲裁。您也可以通过覆盖这个参数来控制仲裁;要做到这一点,请在config.ini
全局配置文件的[ndbd default]
部分中设置Arbitration
参数。 -
Version (or later) NDB 8.4.0 Type or units 毫秒 Default 0 Range 0 - 4294967039 (0xFFFFFEFF) Restart Type 节点重启:需要对集群进行滚动重启。 (NDB 8.4.0)
将该参数设置为除 0 之外的值(默认值)意味着仲裁器对仲裁请求的响应将被延迟指定毫秒数。通常不需要更改这个值。
-
Version (or later) NDB 8.4.0 Type or units 字节 Default 16K Range 1K - 1M Restart Type 节点重启:需要对集群进行滚动重启。 (NDB 8.4.0)
对于被翻译为全表扫描或范围扫描的查询,最佳性能需要在合适的批次中 fetch 记录。可以同时设置批次大小,以记录数量(
BatchSize
)和字节(BatchByteSize
)为单位。实际批次大小受两个参数的限制。查询速度可以因该参数设置而变化,变化幅度高达40%以上。
该参数以字节为单位,默认值为16K。
-
Version (or later) NDB 8.4.0 Type or units 记录 Default 256 Range 1-992 Restart Type 节点重启:需要对集群进行滚动重启。 (NDB 8.4.0)
节点重启:需要对集群进行滚动重启。 (NDB 8.4.0)
该参数以记录数量为单位,默认值为256,最大值为992。
NDB 8.4.0字节00-4294967039(0xFFFFFEFF)此参数以记录数来衡量,默认设置为 256。最大值为 992。
-
Version (or later) NDB 8.4.0 Type or units bytes Default 0 Range 0 - 4294967039 (0xFFFFFEFF) Restart Type 节点重启:需要对集群进行滚动重启。 (NDB 8.4.0)
该参数指定了在使用
TotalSendBufferMemory
、SendBufferMemory
或两者之一设置的传输器发送缓冲区内存外再分配的内存量。 -
Version (or later) NDB 8.4.0 Type or units 字符串 Default [...] Range ... Restart Type 节点重启:需要对集群进行滚动重启。 (NDB 8.4.0)
使用该参数可以设置心跳线程的调度策略和优先级,以便于管理节点和 API 节点。设置该参数的语法如以下所示:
HeartbeatThreadPriority = policy[, priority] policy: {FIFO | RR}
设置该参数时,您必须指定策略。这是
FIFO
(先进先出)或RR
(循环轮询)之一,后面可选地跟随优先级(一个整数)。 -
Version (or later) NDB 8.4.0 Type or units 字节 Default 256K Range 32K - 16M Restart Type 节点重启:需要对集群进行滚动重启。 (NDB 8.4.0)
批处理大小是每个数据节点发送的批处理大小。多数扫描操作都是并行进行的,以保护 MySQL 服务器免受来自许多节点的太多数据;该参数设置了所有节点上的总批处理大小限制。
该参数的默认值设置为256KB。其最大值是16MB。
-
Version (or later) NDB 8.4.0 Type or units 字节 Default 0 Range 256K - 4294967039 (0xFFFFFEFF) Restart Type 节点重启:需要对集群进行滚动重启。 (NDB 8.4.0)
这个参数用于确定在这个节点上为所有配置的传输器分配共享发送缓冲区内存的总量。
如果设置了这个参数,它的最小允许值是256KB;0表示该参数未被设置。对于更多详细信息,请参见第25.4.3.14节,“NDB 集群发送缓冲区参数配置”。
-
这个参数默认为
false
。这强制断开的API节点(包括作为SQL节点的MySQL服务器)使用新的连接来连接集群,而不是尝试重新使用现有的连接,因为重新使用连接可以在使用动态分配的节点ID时导致问题。 (Bug #45921)Note可以使用 NDB API Override 这个参数。更多信息,请见Ndb_cluster_connection::set_auto_reconnect()和Ndb_cluster_connection::get_auto_reconnect().
-
DefaultOperationRedoProblemAction
Version (or later) NDB 8.4.0 Type or units 枚举 Default 队列 Range 终止、队列 Restart Type 节点重启:需要对集群进行滚动重启。 (NDB 8.4.0)
该参数(与
RedoOverCommitLimit
和RedoOverCommitCounter
一起)控制数据节点处理操作的方式,当 redo 日志flush 到磁盘花费太多时间时。这发生在某个 redo 日志 flush 花费超过RedoOverCommitLimit
秒,超过RedoOverCommitCounter
次,导致任何挂起的事务被中止。当这种情况发生时,节点可以以两种方式响应,根据
DefaultOperationRedoProblemAction
的值列举如下:-
ABORT
: 中止的事务的任何挂起操作也将被中止。 -
QUEUE
: 中止的事务的挂起操作将被队列化以便重试。这是默认值。挂起操作仍将被中止当 redo 日志空间不足时—that is,当P_TAIL_PROBLEM错误发生时。
-
-
Version (or later) NDB 8.4.0 Type or units buckets Default 3840 Range 0 - 3840 Restart Type 节点重启:需要对集群进行滚动重启。 (NDB 8.4.0)
使用
NDB
时,可以通过该参数来配置表哈希映射的大小。DefaultHashMapSize
可以取三个可能值(0、240、3840)。这些值及其效果在以下表中有描述。第25.16章 DefaultHashMapSize 参数值
Value Description / Effect 0
使用集群中的所有数据节点和API节点中设置的最低值,如果没有设置,则使用默认值。 240
旧的哈希映射大小 3840
NDB 8.4 中使用的默认哈希映射大小
该参数的原始用途是为了 facilitiate 对于更老版本 NDB 集群的升级和降级,以便在这些版本中哈希映射大小不同,因为这项变化不是 backward compatible 的。
-
Version (or later) NDB 8.4.0 Type or units 布尔值 Default false Range true, false Restart Type 节点重启:需要对集群进行滚动重启。 (NDB 8.4.0)
使用 WAN TCP 设置作为默认值。
-
Version (or later) NDB 8.4.0 Type or units 整数 Default 0 Range 0 - 4294967039 (0xFFFFFEFF) Restart Type 节点重启:需要对集群进行滚动重启。 (NDB 8.4.0)
在具有许多未启动数据节点的 NDB 集群中,可以将该参数值提高,以避免连接到尚未开始在集群中运行的数据节点,以及对管理节点的高流量。只要 API 节点没有连接到新的数据节点,该参数的
StartConnectBackoffMaxTime
值将被应用;否则,ConnectBackoffMaxTime
将用于确定在毫秒级别等待连接尝试的时间。节点连接尝试中所经过的时间不计入该参数的计算中。超时将以约 100 ms 分辨率应用,初始延迟为 100 ms;对于每个后续尝试,这个延迟将被加倍,直到达到
ConnectBackoffMaxTime
毫秒,最大值为 100000 ms(100s)。一旦 API 节点连接到数据节点,并且该节点在心跳消息中报告已经连接到其他数据节点,那么对这些数据节点的连接尝试将不再受该参数影响,直到连接成功。连接数据节点可能需要
HeartbeatIntervalDbApi
时间以便 API 节点收到通知。 -
Version (or later) NDB 8.4.0 Type or units integer Default 0 Range 0 - 4294967039 (0xFFFFFEFF) Restart Type 节点重启:需要对集群进行滚动重启。 (NDB 8.4.0)
在具有许多未启动数据节点的 NDB 集群中,可以将该参数的值提高,以避免连接到尚未开始功能的数据节点,以及对管理节点的高流量。只要 API 节点不连接到任何新数据节点,该参数的
StartConnectBackoffMaxTime
值将被应用;否则,使用ConnectBackoffMaxTime
来确定连接尝试之间的等待时间(以毫秒为单位)。节点连接尝试期间所经过的时间不被考虑在该参数的计算中。超时将以约 100 ms 的分辨率应用,初始延迟为 100 ms;对于每个后续尝试,这个延迟将被加倍,直到达到
StartConnectBackoffMaxTime
毫秒,最大值为 100000 ms(100s)。API 节点连接到数据节点后,如果该节点在心跳消息中报告已经连接到其他数据节点,那么对这些数据节点的连接尝试将不再受这个参数的影响,并且每隔 100 ms 就会继续尝试连接,直到连接成功。一个数据节点启动后,它可能需要
HeartbeatIntervalDbApi
的时间,以便 API 节点收到这个信息。
API 节点调试参数. 您可以使用ApiVerbose
配置参数来启用给定 API 节点的调试输出。这参数接受整数值。0 是默认值,禁用调试输出;1 启用调试输出到集群日志中;2 还添加DBDICT
调试输出。 (Bug #20638450) 请参见DUMP 1229。
您还可以使用SHOW STATUS
语句在 MySQL 服务器(运行作为 NDB 集群 SQL 节点)中获取信息,例如:
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集群配置中,需要对所有集群节点进行rolling restart,以便在config.ini
文件(如果您使用多个管理服务器,则为文件)中添加新的[mysqld]
或[api]
部分。这样做必须在新SQL或API节点连接到集群之前完成。
如果新SQL或API节点可以使用集群配置中未使用的API插槽来连接集群,那么不需要对集群进行任何重启操作。
Restart types. NDB集群参数描述中的重启类型信息,如下表所示:
Table 25.17 NDB Cluster restart types
Symbol | Restart Type | Description |
---|---|---|
N | Node | 可以使用rolling restart更新该参数(见第25.6.5节,“NDB集群的rolling restart”) |
S | System | 必须将所有集群节点完全关闭,然后重新启动,以便更改该参数 |
I | Initial | 数据节点必须使用--initial 选项重新启动 |