MySQL8-中文参考-四十-
MySQL8 中文参考(四十)
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-system-definition.html
25.4.3.8 定义系统
[system]
部分用于适用于整个集群的参数。 Name
系统参数用于 MySQL Enterprise Monitor;ConfigGenerationNumber
和 PrimaryMGMNode
在生产环境中不使用。 除非使用 NDB 集群与 MySQL Enterprise Monitor,否则不需要在 config.ini
文件中有 [system]
部分。
关于这些参数的更多信息可以在以下列表中找到:
-
ConfigGenerationNumber
版本(或更高版本) NDB 8.0.13 类型或单位 无符号 默认值 0 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13) 配置生成编号。当前未使用此参数。
-
Name
版本(或更高版本) NDB 8.0.13 类型或单位 字符串 默认值 [...] 范围 ... 重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13) 为集群设置名称。此参数对于使用 MySQL Enterprise Monitor 进行部署是必需的;否则不使用。
您可以通过检查
Ndb_system_name
状态变量来获取此参数的值。在 NDB API 应用程序中,您还可以使用get_system_name()
进行检索。 -
PrimaryMGMNode
版本(或更高版本) NDB 8.0.13 类型或单位 无符号 默认值 0 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13) 主管理节点的节点 ID。当前未使用此参数。
重启类型。 此部分中参数描述中使用的重启类型的信息显示在以下表中:
表 25.19 NDB 集群重启类型
符号 | 重启类型 | 描述 |
---|---|---|
N | 节点 | 可以使用滚动重启来更新该参数(参见第 25.6.5 节,“执行 NDB 集群的滚动重启”) |
S | 系统 | 所有集群节点必须完全关闭,然后重新启动,以更改此参数 |
I | 初始 | 必须使用--initial 选项重新启动数据节点 |
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-options-variables.html
25.4.3.9 NDB 集群的 MySQL 服务器选项和变量
本节提供了关于 MySQL 服务器选项、服务器和状态变量的信息,这些信息特定于 NDB 集群。有关如何使用这些信息以及不特定于 NDB 集群的其他选项和变量的一般信息,请参见第 7.1 节,“MySQL 服务器”。
有关在集群配置文件中使用的 NDB 集群配置参数(通常命名为 config.ini
)的信息,请参见第 25.4 节,“NDB 集群的配置”。
25.4.3.9.1 NDB 集群的 MySQL 服务器选项
本节提供了关于 NDB 集群相关的 mysqld 服务器选项的描述。有关不特定于 NDB 集群的 mysqld 选项的信息,以及有关在 mysqld 中使用选项的一般信息,请参见第 7.1.7 节,“服务器命令选项”。
有关与其他 NDB 集群进程一起使用的命令行选项的信息,请参见第 25.5 节,“NDB 集群程序”。
-
--ndbcluster
命令行格式 --ndbcluster[=value]
被 skip-ndbcluster
禁用是 类型 枚举 默认值 ON
有效数值 OFF``FORCE
使用 NDB 集群必须使用
NDBCLUSTER
存储引擎。如果 mysqld 二进制文件包含对NDBCLUSTER
存储引擎的支持,则该引擎默认处于禁用状态。使用--ndbcluster
选项来启用它。使用--skip-ndbcluster
明确禁用该引擎。如果同时使用
--initialize
,则--ndbcluster
选项将被忽略(并且NDB
存储引擎 不 会被启用)。(使用这个选项与--initialize
一起既不必要也不可取。) -
--ndb-allow-copying-alter-table=[ON|OFF]
命令行格式 --ndb-allow-copying-alter-table[={OFF|ON}]
系统变量 ndb_allow_copying_alter_table
范围 全局,会话 动态 是 SET_VAR
提示适用否 类型 布尔 默认值 ON
让
ALTER TABLE
和其他 DDL 语句在NDB
表上使用复制操作。将其设置为OFF
可防止此操作发生;这样做可能会提高关键应用程序的性能。 -
--ndb-applier-allow-skip-epoch
命令行格式 --ndb-applier-allow-skip-epoch
引入版本 8.0.28-ndb-8.0.28 系统变量 ndb_applier_allow_skip_epoch
范围 全局 动态 否 SET_VAR
提示适用否 与
--slave-skip-errors
一起使用,使NDB
忽略跳过的 epoch 事务。单独使用时没有效果。 -
--ndb-batch-size=*
#*
命令行格式 --ndb-batch-size
系统变量 ndb_batch_size
范围 全局,会话 动态 是 SET_VAR
提示适用否 类型 整数 默认值 32768
最小值 0
最大值 (≥ 8.0.29-ndb-8.0.29) 2147483648
最大值 2147483648
最大值 2147483648
最大值 (≤ 8.0.28-ndb-8.0.28) 31536000
单位 字节 这设置了用于 NDB 事务批处理的字节大小。
-
--ndb-cluster-connection-pool=*
#*
命令行格式 --ndb-cluster-connection-pool
系统变量 ndb_cluster_connection_pool
系统变量 ndb_cluster_connection_pool
范围 全局 范围 全局 动态 否 动态 否 SET_VAR
提示适用否 SET_VAR
提示适用否 类型 整数 默认值 1
最小值 1
最大值 63
通过将此选项设置为大于 1 的值(默认值),mysqld进程可以使用多个连接到集群,有效地模拟多个 SQL 节点。每个连接都需要在集群配置(
config.ini
)文件中拥有自己的[api]
或[mysqld]
部分,并计入集群支持的最大 API 连接数。假设您有 2 个集群主机计算机,每个计算机都运行一个 SQL 节点,其mysqld进程是使用
--ndb-cluster-connection-pool=4
启动的;这意味着集群必须为这些连接提供 8 个 API 插槽(而不是 2 个)。当 SQL 节点连接到集群时,所有这些连接都会建立,并以循环方式分配给线程。当在具有多个 CPU、多个核心或两者都有的主机上运行 mysqld 时,此选项才有用。为了获得最佳效果,该值应小于主机上可用的总核心数。将其设置为大于此值的值可能会严重降低性能。
重要
因为每个使用连接池的 SQL 节点占用多个 API 节点槽位——每个槽位在集群中都有自己的节点 ID,所以在启动任何使用连接池的 mysqld 进程时,不要在集群连接字符串中使用节点 ID。
在使用
--ndb-cluster-connection-pool
选项时在连接字符串中设置节点 ID 会导致 SQL 节点尝试连接到集群时出现节点 ID 分配错误。 -
--ndb-cluster-connection-pool-nodeids=*
列表*
命令行格式 --ndb-cluster-connection-pool-nodeids
系统变量 ndb_cluster_connection_pool_nodeids
范围 全局 动态 否 SET_VAR
提示适用否 类型 集合 默认值 指定用于连接到 SQL 节点使用的集群的节点 ID 的逗号分隔列表。此列表中的节点数必须与为
--ndb-cluster-connection-pool
选项设置的值相同。 -
--ndb-blob-read-batch-bytes=*
字节*
命令行格式 --ndb-blob-read-batch-bytes
系统变量 ndb_blob_read_batch_bytes
范围 全局,会话 动态 是 SET_VAR
提示适用否 类型 整数 默认值 65536
最小值 0
最大值 4294967295
此选项可用于设置 NDB 集群应用程序中
BLOB
数据读取的批处理大小(以字节为单位)。当当前事务中要读取的BLOB
数据量超过此批处理大小时,任何待处理的BLOB
读取操作将立即执行。此选项的最大值为 4294967295;默认值为 65536。将其设置为 0 会禁用
BLOB
读取批处理。注意
在 NDB API 应用程序中,您可以使用
setMaxPendingBlobReadBytes()
和getMaxPendingBlobReadBytes()
方法来控制BLOB
写入批处理。 -
--ndb-blob-write-batch-bytes=*
字节*
命令行格式 --ndb-blob-write-batch-bytes
系统变量 ndb_blob_write_batch_bytes
作用范围 全局,会话 动态 是 SET_VAR
提示适用否 类型 整数 默认值 65536
最小值 0
最大值 4294967295
单位 字节 此选项可用于设置 NDB 集群应用程序中
BLOB
数据写入的批处理大小(以字节为单位)。当当前事务中要写入的BLOB
数据量超过此批处理大小时,任何待处理的BLOB
写入操作将立即执行。此选项的最大值为 4294967295;默认值为 65536。将其设置为 0 将禁用
BLOB
写入批处理。注意
在 NDB API 应用程序中,您可以使用
setMaxPendingBlobWriteBytes()
和getMaxPendingBlobWriteBytes()
方法来控制BLOB
写入批处理。 -
--ndb-connectstring=*
connection_string*
命令行格式 --ndb-connectstring
类型 字符串 在使用
NDBCLUSTER
存储引擎时,此选项指定分发集群配置数据的管理服务器。有关语法,请参见第 25.4.3.3 节,“NDB 集群连接字符串”。 -
--ndb-default-column-format=[FIXED|DYNAMIC]
命令行格式 --ndb-default-column-format={FIXED|DYNAMIC}
系统变量 ndb_default_column_format
作用范围 全局 动态 是 SET_VAR
提示适用否 类型 枚举 默认值 FIXED
有效值 FIXED``DYNAMIC
设置新表的默认
COLUMN_FORMAT
和ROW_FORMAT
(参见第 15.1.20 节,“CREATE TABLE 语句”)。默认值为FIXED
。 -
--ndb-deferred-constraints=[0|1]
命令行格式 --ndb-deferred-constraints
系统变量 ndb_deferred_constraints
作用范围 全局,会话 动态 是 SET_VAR
提示适用否 类型 整数 默认值 0
最小值 0
最大值 1
控制是否将唯一索引的约束检查推迟到提交时间,支持这种检查。
0
是默认值。此选项通常不需要用于 NDB 集群或 NDB 集群复制的操作,并主要用于测试。
-
--ndb-schema-dist-timeout=#
命令行格式 --ndb-schema-dist-timeout=#
引入版本 8.0.17-ndb-8.0.17 系统变量 ndb_schema_dist_timeout
作用范围 全局 动态 否 SET_VAR
提示适用否 类型 整数 默认值 120
最小值 5
最大值 1200
单位 秒 指定此mysqld等待模式操作完成的最长时间(以秒为单位),然后将其标记为已超时。
-
--ndb-distribution=[KEYHASH|LINHASH]
命令行格式 --ndb-distribution={KEYHASH|LINHASH}
系统变量 ndb_distribution
作用范围 全局 动态 是 SET_VAR
提示适用否 类型 枚举 默认值 KEYHASH
有效值 LINHASH``KEYHASH
控制
NDB
表的默认分发方法。可以设置为KEYHASH
(键哈希)或LINHASH
(线性哈希)之一。KEYHASH
是默认值。 -
--ndb-log-apply-status
命令行格式 --ndb-log-apply-status[={OFF|ON}]
系统变量 ndb_log_apply_status
作用范围 全局 动态 否 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
导致副本mysqld记录从其直接来源接收的任何更新到
mysql.ndb_apply_status
表中的二进制日志中,使用自己的服务器 ID 而不是来源的服务器 ID。在循环或链式复制设置中,这允许这些更新传播到任何配置为当前mysqld的副本的mysql.ndb_apply_status
表中的 MySQL 服务器。在链式复制设置中,使用此选项允许下游(副本)集群了解其相对于所有上游贡献者(源)的位置。
在循环复制设置中,此选项导致对
ndb_apply_status
表的更改完成整个电路,最终传播回原始的 NDB 集群。这也允许充当复制源的集群看到其更改(时代)何时应用到圈中的其他集群。除非 MySQL 服务器使用
--ndbcluster
选项启动,否则此选项无效。 -
--ndb-log-empty-epochs=[ON|OFF]
命令行格式 --ndb-log-empty-epochs[={OFF|ON}]
系统变量 ndb_log_empty_epochs
作用范围 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
导致没有更改的时代被写入
ndb_apply_status
和ndb_binlog_index
表,即使启用了log_replica_updates
或log_slave_updates
。默认情况下,此选项已禁用。禁用
--ndb-log-empty-epochs
会导致没有更改的时代事务不会被写入二进制日志,尽管在ndb_binlog_index
中仍会写入一行。因为
--ndb-log-empty-epochs=1
会导致ndb_binlog_index
表的大小独立于二进制日志的大小增加,用户应准备好管理此表的增长,即使他们期望集群大部分时间处于空闲状态。 -
--ndb-log-empty-update=[ON|OFF]
命令行格式 --ndb-log-empty-update[={OFF|ON}]
系统变量 ndb_log_empty_update
作用范围 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
导致没有产生更改的更新被写入
ndb_apply_status
和ndb_binlog_index
表,即使启用了log_replica_updates
或log_slave_updates
。默认情况下,此选项已禁用(
OFF
)。禁用--ndb-log-empty-update
会导致没有更改的更新不会被写入二进制日志。 -
--ndb-log-exclusive-reads=[0|1]
命令行格式 --ndb-log-exclusive-reads[={OFF|ON}]
系统变量 ndb_log_exclusive_reads
作用范围 全局,会话 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 0
使用此选项启动服务器会导致主键读取被记录为独占锁,从而允许基于读冲突的 NDB 集群复制冲突检测和解决。您还可以通过将
ndb_log_exclusive_reads
系统变量的值分别设置为 1 或 0 来在运行时启用和禁用这些锁。0(禁用锁定)是默认值。更多信息,请参见读冲突检测和解决。
-
--ndb-log-fail-terminate
命令行格式 --ndb-log-fail-terminate
引入版本 8.0.21-ndb-8.0.21 系统变量 ndb_log_fail_terminate
范围 全局 动态 否 SET_VAR
提示适用否 类型 布尔值 默认值 FALSE
当指定此选项且无法完全记录所有找到的行事件时,mysqld 进程将被终止。
-
--ndb-log-orig
命令行格式 --ndb-log-orig[={OFF|ON}]
系统变量 ndb_log_orig
范围 全局 动态 否 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
记录
ndb_binlog_index
表中的起始服务器 ID 和时代。注意
这使得一个给定的时代可以在
ndb_binlog_index
中有多行,每行对应一个起始时代。更多信息,请参见第 25.7.4 节,“NDB 集群复制模式和表”。
-
--ndb-log-transaction-dependency
���令行格式 --ndb-log-transaction-dependency={true|false}
引入版本 8.0.33-ndb-8.0.33 系统变量 ndb_log_transaction_dependency
范围 全局 动态 否 SET_VAR
提示适用否 类型 布尔值 默认值 false
使
NDB
二进制日志线程为其写入二进制日志的每个事务计算事务依赖关系。默认值为FALSE
。此选项无法在运行时设置;相应的
ndb_log_transaction_dependency
系统变量是只读的。 -
--ndb-log-transaction-id
命令行格式 --ndb-log-transaction-id[={OFF|ON}]
系统变量 ndb_log_transaction_id
范围 全局 动态 否 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
导致副本mysqld在二进制日志的每一行中写入 NDB 事务 ID。默认值为
FALSE
。--ndb-log-transaction-id
需要启用 NDB 集群复制冲突检测和解决,使用NDB$EPOCH_TRANS()
函数(参见 NDB$EPOCH_TRANS()"))。更多信息,请参见第 25.7.12 节,“NDB 集群复制冲突解决”。废弃的
log_bin_use_v1_row_events
系统变量,默认值为OFF
,在使用--ndb-log-transaction-id=ON
时不能设置为ON
。 -
--ndb-log-update-as-write
命令行格式 --ndb-log-update-as-write[={OFF|ON}]
系统变量 ndb_log_update_as_write
范围 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 ON
源上的更新是否作为更新(
OFF
)或写入(ON
)写入二进制日志。当启用此选项,并且--ndb-log-updated-only
和--ndb-log-update-minimal
都被禁用时,不同类型的操作将按照以下列表描述的方式记录:-
INSERT
:作为WRITE_ROW
事件记录,没有前置图像;所有列都记录了后置图像。UPDATE
:作为WRITE_ROW
事件记录,没有前置图像;所有列都记录了后置图像。DELETE
:作为DELETE_ROW
事件记录,所有列都在前置图像中记录;后置图像未记录。
此选项可与前面提到的其他两个 NDB 日志选项一起用于 NDB 复制冲突解决;有关更多信息,请参见 ndb_replication 表。
-
-
--ndb-log-updated-only
命令行格式 --ndb-log-updated-only[={OFF|ON}]
系统变量 ndb_log_updated_only
范围 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 ON
控制mysqld是否仅将更新(
ON
)或完整行(OFF
)写入二进制日志。当启用此选项,并且同时禁用--ndb-log-update-as-write
和--ndb-log-update-minimal
时,不同类型的操作将按照以下列表中描述的方式记录:-
INSERT
: 记录为WRITE_ROW
事件,没有前置图像;所有列都记录在后置图像中。 -
UPDATE
: 记录为UPDATE_ROW
事件,主键列和更新列同时出现在前置和后置图像中。 -
DELETE
: 记录为DELETE_ROW
事件,主键列包含在前置图像中;后置图像不记录。
此选项可用于 NDB 复制冲突解决,与之前提到的其他两个 NDB 日志选项结合使用;有关这些选项如何相互作用的更多信息,请参阅 ndb_replication Table。
-
-
--ndb-log-update-minimal
命令行格式 --ndb-log-update-minimal[={OFF|ON}]
系统变量 ndb_log_update_minimal
范围 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
以最小方式记录更新,只在前置图像中写入主键值,在后置图像中只写入更改的列。如果复制到除
NDB
之外的存储引擎可能会导致兼容性问题。当启用此选项,并且同时禁用--ndb-log-updated-only
和--ndb-log-update-as-write
时,不同类型的操作将按照以下列表中描述的方式记录:-
INSERT
: 记录为WRITE_ROW
事件,没有前置图像;所有列都记录在后置图像中。 -
UPDATE
: 记录为UPDATE_ROW
事件,主键列在前置图像中;除主键列外的所有列都在后置图像中记录。 -
DELETE
: 记录为DELETE_ROW
事件,所有列都在前置图像中;后置图像不记录。
此选项可用于 NDB 复制冲突解决,与之前提到的其他两个 NDB 日志选项结合使用;有关更多信息,请参阅 ndb_replication Table。
-
-
--ndb-mgmd-host=*
host*[:*
port*]
命令行格式 --ndb-mgmd-host=host_name[:port_num]
类型 字符串 默认值 localhost:1186
可用于设置程序连接到的单个管理服务器的主机和端口号。如果程序在其连接信息中需要节点 ID 或对多个管理服务器的引用(或两者都需要),请改用
--ndb-connectstring
选项。 -
--ndb-nodeid=#
命令行格式 --ndb-nodeid=#
状态变量 Ndb_cluster_node_id
范围 全局 动态 否 类型 整数 默认值 N/A
最小值 1
最大值 255
最大值 63
在 NDB Cluster 中设置此 MySQL 服务器的节点 ID。
--ndb-nodeid
选项会覆盖使用--ndb-connectstring
设置的任何节点 ID,无论这两个选项的使用顺序如何。此外,如果使用了
--ndb-nodeid
,则必须在config.ini
的[mysqld]
或[api]
部分中找到匹配的节点 ID,或者文件中必须有一个“开放”的[mysqld]
或[api]
部分(即,一个没有指定NodeId
或Id
参数的部分)。如果节点 ID 作为连接字符串的一部分指定,这也是正确的。无论节点 ID 如何确定,它都显示为全局状态变量
Ndb_cluster_node_id
的值在SHOW STATUS
输出中,并且在SHOW ENGINE NDBCLUSTER STATUS
的connection
行中显示为cluster_node_id
。有关 NDB Cluster SQL 节点的节点 ID 的更多信息,请参见第 25.4.3.7 节,“在 NDB Cluster 中定义 SQL 和其他 API 节点”。
-
--ndbinfo={ON|OFF|FORCE}
命令行格式 --ndbinfo[=value]
(≥ 8.0.13-ndb-8.0.13)引入版本 8.0.13-ndb-8.0.13 类型 枚举 默认值 ON
有效值 ON``OFF``FORCE
启用
ndbinfo
信息数据库的插件。默认情况下,只要启用NDBCLUSTER
,此选项就为 ON。 -
--ndb-optimization-delay=*
毫秒*
命令行格式 --ndb-optimization-delay=#
系统变量 ndb_optimization_delay
范围 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 10
最小值 0
最大值 100000
单位 毫秒 设置在
NDB
表上通过OPTIMIZE TABLE
语句设置行之间等待的毫秒数。默认值为 10。 -
--ndb-optimized-node-selection
命令行格式 --ndb-optimized-node-selection
启用用于选择事务节点的优化。默认情况下启用;使用
--skip-ndb-optimized-node-selection
来禁用。 -
--ndb-transid-mysql-connection-map=*
state*
命令行格式 --ndb-transid-mysql-connection-map[=state]
类型 枚举 默认值 ON
有效值 ON``OFF``FORCE
启用或禁用处理
INFORMATION_SCHEMA
数据库中ndb_transid_mysql_connection_map
表的插件。接受ON
、OFF
或FORCE
值。ON
(默认)启用插件。OFF
禁用插件,使ndb_transid_mysql_connection_map
不可访问。FORCE
使 MySQL 服务器在插件加载和启动失败时无法启动。通过检查
SHOW PLUGINS
的输出,您可以查看ndb_transid_mysql_connection_map
表插件是否正在运行。 -
--ndb-wait-connected=*
seconds*
命令行格式 --ndb-wait-connected=#
系统变量 ndb_wait_connected
作用范围 全局 动态 否 SET_VAR
提示适用否 类型 整数 默认值(≥ 8.0.27-ndb-8.0.27) 120
默认值(≤ 8.0.26-ndb-8.0.26) 30
默认值 30
最小值 0
最大值 31536000
单位 秒 此选项设置 MySQL 服务器在接受 MySQL 客户端连接之前等待与 NDB Cluster 管理和数据节点建立连接的时间段。时间以秒为单位。默认值为
30
。 -
--ndb-wait-setup=*
seconds*
命令行格式 --ndb-wait-setup=#
系统变量 ndb_wait_setup
作用范围 全局 动态 否 SET_VAR
提示适用否 类型 整数 默认值(≥ 8.0.27-ndb-8.0.27) 120
默认值(≤ 8.0.26-ndb-8.0.26) 30
默认值 30
默认值 15
默认值 15
最小值 0
最大值 31536000
单位 秒 此变量显示 MySQL 服务器在超时并将
NDB
视为不可用之前等待NDB
存储引擎完成设置的时间段。时间以秒为单位。默认值为30
。 -
--skip-ndbcluster
命令行格式 --skip-ndbcluster
禁用
NDBCLUSTER
存储引擎。这是使用支持NDBCLUSTER
存储引擎构建的二进制文件的默认设置;只有在显式给出--ndbcluster
选项时,服务器才为该存储引擎分配内存和其他资源。有关示例,请参见第 25.4.1 节,“NDB Cluster 的快速测试设置”。
25.4.3.9.2 NDB Cluster 系统变量
本节提供了关于 MySQL 服务器特定于 NDB Cluster 和NDB
存储引擎的系统变量的详细信息。有关不特定于 NDB Cluster 的系统变量,请参见第 7.1.8 节,“服务器系统变量”。有关使用系统变量的一般信息,请参见第 7.1.9 节,“使用系统变量”。
-
ndb_autoincrement_prefetch_sz
命令行格式 --ndb-autoincrement-prefetch-sz=#
系统变量 ndb_autoincrement_prefetch_sz
范围 全局,会话 动态 是 SET_VAR
提示适用否 类型 整数 默认值 (≥ 8.0.19-ndb-8.0.19) 512
默认值 (≤ 8.0.18-ndb-8.0.18) 1
最小值 1
最大值 65536
确定自增列中间隔的概率。将其设置为
1
以最小化这种情况。将其设置为较高值以进行优化可以加快插入速度,但会降低在一批插入中使用连续自增编号的可能性。此变量仅影响在语句之间获取的
AUTO_INCREMENT
ID 的数量;在给定语句中,每次至少获取 32 个 ID。重要
此变量不影响使用
INSERT ... SELECT
执行的插入操作。 -
ndb_clear_apply_status
命令行格式 --ndb-clear-apply-status[={OFF|ON}]
系统变量 ndb_clear_apply_status
范围 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 ON
默认情况下,执行
RESET SLAVE
会导致 NDB 集群副本从其ndb_apply_status
表中清除所有行。您可以通过设置ndb_clear_apply_status=OFF
来禁用此功能。 -
ndb_conflict_role
命令行格式 --ndb-conflict-role=value
引入 8.0.23-ndb-8.0.23 系统变量 ndb_conflict_role
范围 全局 动态 是 SET_VAR
提示适用否 类型 枚举 默认值 NONE
有效值 NONE``PRIMARY``SECONDARY``PASS
确定此 SQL 节点(和 NDB 集群)在循环(“主动-主动”)复制设置中的角色。
ndb_slave_conflict_role
可以取PRIMARY
、SECONDARY
、PASS
或NULL
(默认)中的任何一个值。在更改ndb_slave_conflict_role
之前,必须停止副本 SQL 线程。此外,不可能直接在PASS
和PRIMARY
或SECONDARY
之间直接更改;在这种情况下,您必须确保 SQL 线程已停止,然后首先执行SET @@GLOBAL.ndb_slave_conflict_role = 'NONE'
。此变量取代了
ndb_slave_conflict_role
,自 NDB 8.0.23 起已被弃用。有关更多信息,请参见第 25.7.12 节,“NDB 集群复制冲突解决”。
-
ndb_data_node_neighbour
命令行格式 --ndb-data-node-neighbour=#
系统变量 ndb_data_node_neighbour
范围 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 0
最小值 0
最大值 255
设置“最近”数据节点的 ID——即,选择一个首选的非本地数据节点来执行事务,而不是在与 SQL 或 API 节点相同主机上运行的节点上执行。这用于确保在访问完全复制的表时,我们在此数据节点上访问它,以确保尽可能始终使用表的本地副本。这也可用于为事务提供提示。
这可以提高数据访问时间,如果一个节点比其他同一主机上的节点更接近,从而具有更高的网络吞吐量。
有关更多信息,请参见第 15.1.20.12 节,“设置 NDB 注释选项”。
注意
NDB API 应用程序提供了一个等效的方法
set_data_node_neighbour()
。 -
ndb_dbg_check_shares
命令行格式 --ndb-dbg-check-shares=#
引入版本 8.0.13-ndb-8.0.13 系统变量 ndb_dbg_check_shares
范围 全局,会话 动态 是 SET_VAR
提示适用否 类型 整数 默认值 0
最小值 0
最大值 1
当设置为 1 时,检查是否有未完成的共享。仅在调试构建中可用。
-
ndb_default_column_format
命令行格式 `--ndb-default-column-format={FIXED DYNAMIC}` 系统变量 ndb_default_column_format
范围 全局 动态 是 SET_VAR
提示适用否 类型 枚举 默认值 FIXED
有效值 FIXED``DYNAMIC
设置新表的默认
COLUMN_FORMAT
和ROW_FORMAT
(参见第 15.1.20 节,“CREATE TABLE Statement”)。默认值为FIXED
。 -
ndb_deferred_constraints
命令行格式 --ndb-deferred-constraints=#
系统变量 ndb_deferred_constraints
范围 全局,会话 动态 是 SET_VAR
提示适用否 类型 整数 默认值 0
最小值 0
最大值 1
控制是否延迟约束检查,如果支持的话。
0
是默认值。此变量通常不需要用于 NDB Cluster 或 NDB Cluster Replication 的操作,主要用于测试目的。
-
ndb_distribution
命令行格式 `--ndb-distribution={KEYHASH LINHASH}` 系统变量 ndb_distribution
范围 全局 动态 是 SET_VAR
提示适用否 类型 枚举 默认值 KEYHASH
有效值 LINHASH``KEYHASH
控制
NDB
表的默认分布方法。可以设置为KEYHASH
(键哈希)或LINHASH
(线性哈希)。KEYHASH
是默认值。 -
ndb_eventbuffer_free_percent
命令行格式 --ndb-eventbuffer-free-percent=#
系统变量 ndb_eventbuffer_free_percent
范围 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 20
最小值 1
最大值 99
设置事件缓冲区(ndb_eventbuffer_max_alloc)在达到最大值后,在重新开始缓冲之前应该保留的最大内存百分比。
-
ndb_eventbuffer_max_alloc
命令行格式 --ndb-eventbuffer-max-alloc=#
系统变量 ndb_eventbuffer_max_alloc
范围 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 0
最小值 0
最大值(≥ 8.0.26-ndb-8.0.26) 9223372036854775807
最大值 9223372036854775807
最大值 9223372036854775807
最大值(≤ 8.0.25-ndb-8.0.25) 4294967295
设置 NDB API 缓冲事件的最大内存量(以字节为单位)。0 表示没有限制,这也是默认值。
-
ndb_extra_logging
命令行格式 ndb_extra_logging=#
系统变量 ndb_extra_logging
范围 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 1
最小值 0
最大值 1
此变量使得可以在 MySQL 错误日志中记录特定于
NDB
存储引擎的信息。当此变量设置为 0 时,写入 MySQL 错误日志的唯一与
NDB
相关的信息与事务处理有关。如果设置为大于 0 但小于 10 的值,还会记录NDB
表模式和连接事件,以及是否正在使用冲突解决,以及其他NDB
错误和信息。如果值设置为 10 或更高,则还会将有关NDB
内部的信息,例如数据在集群节点之间的分发进度,写入 MySQL 错误日志。默认值为 1。 -
ndb_force_send
命令行格式 --ndb-force-send[={OFF|ON}]
系统变量 ndb_force_send
范围 全局,会话 动态 是 SET_VAR
提示适用否 类型 布尔 默认值 ON
立即将缓冲区发送到
NDB
,无需等待其他线程。默认为ON
。 -
ndb_fully_replicated
命令行格式 --ndb-fully-replicated[={OFF|ON}]
系统变量 ndb_fully_replicated
范围 全局,会话 动态 是 SET_VAR
提示适用否 类型 布尔 默认值 OFF
确定新的
NDB
表是否完全复制。可以使用CREATE TABLE
或ALTER TABLE
语句中的COMMENT="NDB_TABLE=FULLY_REPLICATED=..."
来为单个表覆盖此设置;有关语法和其他信息,请参见第 15.1.20.12 节,“设置 NDB 注释选项”。 -
ndb_index_stat_enable
命令行格式 --ndb-index-stat-enable[={OFF|ON}]
系统变量 ndb_index_stat_enable
范围 全局,会话 动态 是 SET_VAR
提示适用否 类型 布尔 默认值 ON
在查询优化中使用
NDB
索引统计信息。默认为ON
。在 NDB 8.0.27 之前,使用
--ndb-index-stat-enable
设置为OFF
启动服务器会阻止创建索引统计表。在 NDB 8.0.27 及更高版本中,无论此选项的值如何,这些表在服务器启动时都会被创建。 -
ndb_index_stat_option
命令行格式 --ndb-index-stat-option=value
系统变量 ndb_index_stat_option
范围 全局、会话 动态 是 SET_VAR
提示适用否 类型 字符串 默认值 loop_checkon=1000ms,loop_idle=1000ms,loop_busy=100ms, update_batch=1,read_batch=4,idle_batch=32,check_batch=32, check_delay=1m,delete_batch=8,clean_delay=0,error_batch=4, error_delay=1m,evict_batch=8,evict_delay=1m,cache_limit=32M, cache_lowpct=90
此变量用于为 NDB 索引统计生成提供调整选项。列表由逗号分隔的名称-值对组成,此列表不得包含任何空格字符。
在设置
ndb_index_stat_option
时未使用的选项不会更改其默认值。例如,您可以设置ndb_index_stat_option = 'loop_idle=1000ms,cache_limit=32M'
。时间值可以选择性地加上
h
(小时)、m
(分钟)或s
(秒)后缀。毫秒值可以选择性地使用ms
指定;不能使用h
、m
或s
指定毫秒值。整数值可以加上K
、M
或G
后缀。可以使用此变量设置的选项名称在接下来的表中显示。该表还提供了这些选项的简要描述、默认值以及(如果适用)它们的最小和最大值。
表 25.20 ndb_index_stat_option 选项和值
名称 描述 默认/单位 最小/最大 loop_enable
1000 ms 0/4G loop_idle
空闲时的休眠时间 1000 ms 0/4G loop_busy
等待更多工作时的休眠时间 100 ms 0/4G update_batch
1 0/4G read_batch
4 1/4G idle_batch
32 1/4G check_batch
8 1/4G check_delay
多久检查新统计数据 10 m 1/4G delete_batch
8 0/4G clean_delay
1 m 0/4G error_batch
4 1/4G error_delay
1 m 1/4G evict_batch
8 1/4G evict_delay
从读取时间开始清除 LRU 缓存 1 m 0/4G cache_limit
由此mysqld用于缓存的索引统计的最大内存量(以字节为单位);当超过此限制时清除缓存。 32 M 0/4G cache_lowpct
90 0/100 zero_total
将其设置为 1 会将 ndb_index_stat_status
中所有累积计数器重置为 0。当执行此操作时,此选项值也会重置为 0。0 0/1 名称 描述 默认/单位 最小/最大 -
ndb_join_pushdown
系统变量 ndb_join_pushdown
范围 全局,会话 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 ON
此变量控制是否将对
NDB
表的连接下推到 NDB 内核(数据节点)。以前,SQL 节点通过多次访问NDB
来处理连接;然而,当启用ndb_join_pushdown
时,可推送的连接将完整地发送到数据节点,其中可以在数据节点之间分发并在多个数据副本上并行执行,最终将单个合并结果返回给mysqld。这可以大大减少处理此类连接所需的 SQL 节点和数据节点之间的往返次数。默认情况下,
ndb_join_pushdown
已启用。NDB 下推连接的条件。 为了使连接可下推,必须满足以下条件:
-
只能比较列,并且所有要连接的列必须使用完全相同的数据类型。这意味着(例如)在
INT
列和BIGINT
列上的连接也无法被下推。以前,诸如
t1.a = t2.a + *
constant*
的表达式无法被下推。在 NDB 8.0 中取消了此限制。任何要比较的列上的任何操作的结果必须与列本身产生相同的类型。比较同一表中列的表达式也可以被下推。这些列(或对这些列进行的任何操作的结果)必须完全相同,包括相同的符号、长度、字符集和排序规则、精度和比例,如果适用的话。
-
查询引用
BLOB
或TEXT
列不受支持。 -
不支持显式锁定;但是,强制执行
NDB
存储引擎的特征隐式基于行的锁定。这意味着使用
FOR UPDATE
的连接无法被下推。 -
为了使连接被下推,连接中的子表必须使用
ref
、eq_ref
或const
访问方法之一进行访问,或者这些方法的某种组合。外连接的子表只能使用
eq_ref
进行推送。如果推送连接的根是
eq_ref
或const
,只有通过eq_ref
连接的子表才能被附加。(通过ref
连接的表可能会成为另一个推送连接的根。)如果查询优化器决定对候选子表使用
Using join cache
,那么该表无法作为子表推送。但是,它可能成为另一组推送表的根。 -
目前无法推送显式分区为
[LINEAR] HASH
、LIST
或RANGE
的表的连接。
通过使用
EXPLAIN
可以查看给定连接是否可以被推送;当连接可以被推送时,可以在输出的Extra
列中看到对pushed join
的引用,如下例所示:mysql> EXPLAIN -> SELECT e.first_name, e.last_name, t.title, d.dept_name -> FROM employees e -> JOIN dept_emp de ON e.emp_no=de.emp_no -> JOIN departments d ON d.dept_no=de.dept_no -> JOIN titles t ON e.emp_no=t.emp_no\G *************************** 1\. row *************************** id: 1 select_type: SIMPLE table: d type: ALL possible_keys: PRIMARY key: NULL key_len: NULL ref: NULL rows: 9 Extra: Parent of 4 pushed join@1 *************************** 2\. row *************************** id: 1 select_type: SIMPLE table: de type: ref possible_keys: PRIMARY,emp_no,dept_no key: dept_no key_len: 4 ref: employees.d.dept_no rows: 5305 Extra: Child of 'd' in pushed join@1 *************************** 3\. row *************************** id: 1 select_type: SIMPLE table: e type: eq_ref possible_keys: PRIMARY key: PRIMARY key_len: 4 ref: employees.de.emp_no rows: 1 Extra: Child of 'de' in pushed join@1 *************************** 4\. row *************************** id: 1 select_type: SIMPLE table: t type: ref possible_keys: PRIMARY,emp_no key: emp_no key_len: 4 ref: employees.de.emp_no rows: 19 Extra: Child of 'e' in pushed join@1 4 rows in set (0.00 sec)
注意
如果内连接的子表通过
ref
连接,并且结果按排序索引排序或分组,该索引无法提供排序行,这将强制写入到排序临时文件。还有两个关于推送连接性能的额外信息来源:
-
状态变量
Ndb_pushed_queries_defined
、Ndb_pushed_queries_dropped
、Ndb_pushed_queries_executed
和Ndb_pushed_reads
。 -
属于
DBSPJ
内核块的ndbinfo.counters
表中的计数器。
-
-
ndb_log_apply_status
命令行格式 --ndb-log-apply-status[={OFF|ON}]
系统变量 ndb_log_apply_status
范围 全局 动态 否 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
一个只读变量,显示服务器是否使用
--ndb-log-apply-status
选项启动。 -
ndb_log_bin
命令行格式 --ndb-log-bin[={OFF|ON}]
系统变量 ndb_log_bin
范围 全局,会话 动态 否 SET_VAR
提示适用否 类型 布尔值 默认值(≥ 8.0.16-ndb-8.0.16) OFF
默认值(≤ 8.0.15-ndb-8.0.15) ON
导致
NDB
表的更新写入二进制日志。如果服务器尚未使用log_bin
启用二进制日志记录,则此变量的设置不起作用。在 NDB 8.0 中,ndb_log_bin
默认为 0(FALSE)。 -
ndb_log_binlog_index
命令行格式 --ndb-log-binlog-index[={OFF|ON}]
系统变量 ndb_log_binlog_index
作用域 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 ON
导致将时代映射到二进制日志中的位置插入
ndb_binlog_index
表中。如果服务器尚未使用log_bin
启用二进制日志记录,则设置此变量不起作用。(此外,ndb_log_bin
不能被禁用。)ndb_log_binlog_index
默认为1
(ON
);通常,在生产环境中永远不需要更改此值。 -
ndb_log_empty_epochs
命令行格式 --ndb-log-empty-epochs[={OFF|ON}]
系统变量 ndb_log_empty_epochs
作用域 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
当此变量设置为 0 时,没有更改的时代事务不会写入二进制日志,尽管在
ndb_binlog_index
中仍会为空时代写入一行。 -
ndb_log_empty_update
命令行格式 --ndb-log-empty-update[={OFF|ON}]
系统变量 ndb_log_empty_update
作用域 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
当此变量设置为
ON
(1
)时,即使启用了log_replica_updates
或log_slave_updates
,没有更改的更新事务也会写入二进制日志。 -
ndb_log_exclusive_reads
命令行格式 --ndb-log-exclusive-reads[={OFF|ON}]
系统变量 ndb_log_exclusive_reads
范围 全局,会话 动态 是 SET_VAR
提示适用否 类型 布尔 默认值 0
此变量确定是否使用独占锁记录主键读取,从而允许基于读取冲突的 NDB 集群复制冲突检测和解决。要启用这些锁,请将
ndb_log_exclusive_reads
的值设置为 1。默认情况下,禁用此类锁定的值为 0。有关更多信息,请参见 读取冲突检测和解决。
-
ndb_log_orig
命令行格式 --ndb-log-orig[={OFF|ON}]
系统变量 ndb_log_orig
范围 全局 动态 否 SET_VAR
提示适用否 类型 布尔 默认值 OFF
显示原始服务器 ID 和时代是否记录在
ndb_binlog_index
表中。使用--ndb-log-orig
服务器选项设置。 -
ndb_log_transaction_id
系统变量 ndb_log_transaction_id
范围 全局 动态 否 SET_VAR
提示适用否 类型 布尔 默认值 OFF
此只读的布尔系统变量显示一个副本 mysqld 是否在二进制日志中写入 NDB 事务 ID(使用
NDB$EPOCH_TRANS()
冲突检测来使用“主动-主动”NDB 集群复制所需)。要更改设置,请使用--ndb-log-transaction-id
选项。ndb_log_transaction_id
在主流 MySQL Server 8.0 中不受支持。有关更多信息,请参见 第 25.7.12 节,“NDB 集群复制冲突解决”。
-
ndb_log_transaction_compression
命令行格式 --ndb-log-transaction-compression
引入 8.0.31-ndb-8.0.31 系统变量 ndb_log_transaction_compression
范围 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
副本mysqld是否在二进制日志中写入压缩事务;仅在mysqld编译支持
NDB
时存在。使用
--binlog-transaction-compression
启动 MySQL 服务器会强制启用此变量(ON
),这将覆盖在命令行或my.cnf
文件中设置的--ndb-log-transaction-compression
,如下所示:$> mysqld_safe --ndbcluster --ndb-connectstring=127.0.0.1 \ --binlog-transaction-compression=ON --ndb-log-transaction-compression=OFF & [1] 27667 $> 2022-07-07T12:29:20.459937Z mysqld_safe Logging to '/usr/local/mysql/data/myhost.err'. 2022-07-07T12:29:20.509873Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data $> mysql -e 'SHOW VARIABLES LIKE "%transaction_compression%"' +--------------------------------------------+-------+ | Variable_name | Value | +--------------------------------------------+-------+ | binlog_transaction_compression | ON | | binlog_transaction_compression_level_zstd | 3 | | ndb_log_transaction_compression | ON | | ndb_log_transaction_compression_level_zstd | 3 | +--------------------------------------------+-------+
要仅为
NDB
表禁用二进制日志事务压缩,请在启动mysqld后在mysql或其他客户端会话中将ndb_log_transaction_compression
系统变量设置为OFF
。在启动后设置
binlog_transaction_compression
变量对ndb_log_transaction_compression
的值没有影响。有关二进制日志事务压缩的更多信息,例如哪些事件被压缩或未压缩以及在使用此功能时需要注意的行为更改,请参阅第 7.4.4.5 节,“二进制日志事务压缩”。
-
ndb_log_transaction_compression_level_zstd
命令行格式 --ndb-log-transaction-compression-level-zstd=#
引入 8.0.31-ndb-8.0.31 系统变量 ndb_log_transaction_compression_level_zstd
范围 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 3
最小值 1
最大值 22
如果由
ndb_log_transaction_compression
启用,则用于将压缩事务写入副本二进制日志的ZSTD
压缩级别。如果mysqld未编译支持NDB
存储引擎,则不支持。更多信息请参阅第 7.4.4.5 节,“二进制日志事务压缩”。
-
ndb_metadata_check
命令行格式 --ndb-metadata-check[={OFF|ON}]
引入 8.0.16-ndb-8.0.16 系统变量 ndb_metadata_check
范围 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 ON
NDB
使用一个后台线程每隔ndb_metadata_check_interval
秒检查一次元数据更改,与 MySQL 数据字典进行比较。可以通过将ndb_metadata_check
设置为OFF
来禁用此元数据更改检测线程。该线程默认情况下是启用的。 -
ndb_metadata_check_interval
命令行格式 --ndb-metadata-check-interval=#
引入版本 8.0.16-ndb-8.0.16 系统变量 ndb_metadata_check_interval
范围 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 60
最小值 0
最大值 31536000
单位 秒 NDB
在后台运行一个元数据更改检测线程,以确定 NDB 字典相对于 MySQL 数据字典的更改。默认情况下,这些检查之间的间隔为 60 秒;可以通过设置ndb_metadata_check_interval
的值来调整。要启用或禁用线程,请使用ndb_metadata_check
。 -
ndb_metadata_sync
引入版本 8.0.19-ndb-8.0.19 系统变量 ndb_metadata_sync
范围 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 false
设置此变量会导致更改监视线程覆盖为
ndb_metadata_check
或ndb_metadata_check_interval
设置的任何值,并进入持续更改检测期。当线程确定没有更多要检测的更改时,它会停滞���直到二进制日志线程完成所有检测到的对象的同步。然后ndb_metadata_sync
设置为false
,更改监视线程将恢复到由ndb_metadata_check
和ndb_metadata_check_interval
设置确定的行为。在 NDB 8.0.22 及更高版本中,将此变量设置为
true
会导致排除对象列表被清除,将其设置为false
会清除要重试的对象列表。 -
ndb_optimized_node_selection
命令行格式 --ndb-optimized-node-selection=#
系统变量 ndb_optimized_node_selection
范围 全局 动态 否 SET_VAR
提示适用否 类型 整数 默认值 3
最小值 0
最大值 3
优化节点选择有两种形式,如下所述:
-
SQL 节点使用接近性来确定事务协调器;也就是说,SQL 节点“最近”的数据节点被选择为事务协调器。为此,具有与 SQL 节点共享内存连接的数据节点被认为是与 SQL 节点“最近”的;接下来最接近的(按照减少接近性的顺序)是:从
localhost
的 TCP 连接,然后是从localhost
以外的主机的 TCP 连接。 -
SQL 线程使用分布感知来选择数据节点。也就是说,由给定事务的第一个语句访问的集群分区所在的数据节点被用作整个事务的事务协调器。(仅当事务的第一个语句访问不超过一个集群分区时有效。)
此选项接受整数值
0
、1
、2
或3
中的一个。3
是默认值。这些值影响节点选择如下:-
0
:节点选择未经优化。在 SQL 线程继续到下一个数据节点之前,每个数据节点被用作事务协调器 8 次。 -
1
:接近 SQL 节点用于确定事务协调器。 -
2
:使用分布感知来选择事务协调器。但是,如果事务的第一个语句访问多个集群分区,则 SQL 节点会在将此选项设置为0
时恢复到循环轮询行为。 -
3
:如果可以使用分布感知来确定事务协调器,则使用它;否则使用接近性来选择事务协调器。(这是默认行为。)
接近性的确定如下:
-
从为
Group
参数设置的值开始(默认为 55)。 -
对于与其他 API 节点共享同一主机的 API 节点,将值减 1。假设
Group
的默认值,与 API 节点在同一主机上的数据节点的有效值为 54,远程数据节点为 55。 -
设置
ndb_data_node_neighbour
会进一步减少有效的Group
值 50,使得这个节点被视为最近的节点。只有当所有数据节点都在与 API 节点不同的主机上,并且希望将其中一个专用于 API 节点时才需要这样做。在正常情况下,前面描述的默认调整已经足够。
频繁更改
ndb_data_node_neighbour
是不明智的,因为这会改变集群连接的状态,从而可能破坏每个线程对新事务的选择算法,直到它稳定下来。 -
-
ndb_read_backup
命令行格式 --ndb-read-backup[={OFF|ON}]
系统变量 ndb_read_backup
作用范围 全局 动态 是 SET_VAR
Hint Applies否 类型 布尔值 默认值 (≥ 8.0.19-ndb-8.0.19) ON
默认值 (≤ 8.0.18-ndb-8.0.18) OFF
启用随后创建的任何
NDB
表的任何片段副本读取;这样做可以极大地提高表的读取性能,对写入的成本相对较小。如果 SQL 节点和数据节点使用相同的主机名或 IP 地址,则会自动检测到这一事实,因此首选将读取发送到同一主机。如果这些节点位于同一主机上但使用不同的 IP 地址,则可以通过将 SQL 节点上的
ndb_data_node_neighbour
的值��置为数据节点的节点 ID 来告诉 SQL 节点使用正确的数据节点。要为单个表启用或禁用从任何片段副本读取,您可以相应地为表设置
NDB_TABLE
选项READ_BACKUP
,在CREATE TABLE
或ALTER TABLE
语句中;有关更多信息,请参见第 15.1.20.12 节,“设置 NDB 注释选项”。 -
ndb_recv_thread_activation_threshold
命令行格式 --ndb-recv-thread-activation-threshold=#
系统变量 ndb_recv_thread_activation_threshold
作用范围 全局 动态 是 SET_VAR
Hint Applies否 类型 整数 默认值 8
最小值 0 (MIN_ACTIVATION_THRESHOLD)
最大值 16 (MAX_ACTIVATION_THRESHOLD)
当达到此数量的并发活动线程时,接收线程接管集群连接的轮询。
此变量的作用范围是全局的。它也可以在启动时设置。
-
ndb_recv_thread_cpu_mask
命令行格式 --ndb-recv-thread-cpu-mask=mask
系统变量 ndb_recv_thread_cpu_mask
作用范围 全局 动态 是 SET_VAR
提示适用否 类型 位图 默认值 [empty]
用于将接收线程锁定到特定 CPU 的 CPU 掩码。这是指定为十六进制位掩码的。例如,
0x33
表示每个接收线程使用一个 CPU。空字符串是默认值;将ndb_recv_thread_cpu_mask
设置为此值会删除先前设置的任何接收线程锁定。此变量的作用范围是全局的。也可以在启动时设置。
-
ndb_report_thresh_binlog_epoch_slip
命令行格式 --ndb-report-thresh-binlog-epoch-slip=#
系统变量 ndb_report_thresh_binlog_epoch_slip
作用范围 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 10
最小值 0
最大值 256
这代表事件缓冲区中完全缓冲的时代数量的阈值,但尚未被二进制日志注入器线程消耗。当超过这种滑动(滞后)程度时,将报告事件缓冲区状态消息,原因为
BUFFERED_EPOCHS_OVER_THRESHOLD
(请参阅第 25.6.2.3 节,“集群日志中的事件缓冲区报告”)。当从数据节点接收并完全缓冲一个时代时,滑动会增加;当二进制日志注入器线程消耗一个时代时,滑动会减少。仅当使用 NDB API 中的Ndb::setEventBufferQueueEmptyEpoch()
方法启用时,空时代才会被缓冲和排队,因此仅在此计算中包括。 -
ndb_report_thresh_binlog_mem_usage
命令行格式 --ndb-report-thresh-binlog-mem-usage=#
系统变量 ndb_report_thresh_binlog_mem_usage
作用范围 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 10
最小值 0
最大值 10
这是在报告二进制日志状态之前剩余可用内存百分比的阈值。例如,默认值为
10
,这意味着如果用于从数据节点接收二进制日志数据的可用内存量低于 10%,则会向集群日志发送状态消息。 -
ndb_row_checksum
系统变量 ndb_row_checksum
作用范围 全局,会话 动态 是 SET_VAR
提示适用否 类型 整数 默认值 1
最小值 0
最大值 1
传统上,
NDB
创建带有行校验和的表,这会检查硬件问题,但会牺牲性能。将ndb_row_checksum
设置为 0 意味着新建或更改表时不使用行校验和,这对所有类型的查询性能都有显著影响。此变量默认设置为 1,以提供向后兼容的行为。 -
ndb_schema_dist_lock_wait_timeout
命令行格式 --ndb-schema-dist-lock-wait-timeout=value
引入版本 8.0.18-ndb-8.0.18 系统变量 ndb_schema_dist_lock_wait_timeout
作用范围 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 30
最小值 0
最大值 1200
单位 秒 在模式分发期间等待的秒数,以获取每个 SQL 节点上获取的元数据锁,以便更改其本地数据字典以反映 DDL 语句更改。在经过此时间后,将返回警告,指出给定 SQL 节点的数据字典未更新。这样可以避免二进制日志线程在处理模式操作时等待过长时间。
-
ndb_schema_dist_timeout
命令行格式 --ndb-schema-dist-timeout=value
引入版本 8.0.16-ndb-8.0.16 系统变量 ndb_schema_dist_timeout
作用范围 全局 动态 否 SET_VAR
提示适用否 类型 整数 默认值 120
最小值 5
最大值 1200
单位 秒 在模式分发期间检测超时之前等待的秒数。这可能表明其他 SQL 节点正在经历过多的活动,或者它们在某种程度上被阻止获取必要资源。
-
ndb_schema_dist_upgrade_allowed
命令行格式 --ndb-schema-dist-upgrade-allowed=value
引入版本 8.0.17-ndb-8.0.17 系统变量 ndb_schema_dist_upgrade_allowed
作用范围 全局 动态 否 SET_VAR
提示适用否 类型 布尔值 默认值 true
允许在连接到
NDB
时升级模式分发表。当为真(默认值),此更改被推迟,直到所有 SQL 节点已升级到相同版本的 NDB Cluster 软件。注意
在升级执行之前,模式分发的性能可能会有所下降。
-
ndb_show_foreign_key_mock_tables
命令行格式 --ndb-show-foreign-key-mock-tables[={OFF|ON}]
系统变量 ndb_show_foreign_key_mock_tables
作用范围 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
显示
NDB
用于支持foreign_key_checks=0
的模拟表。启用此功能时,在创建和删除表时会显示额外警告。表的真实(内部)名称可以在SHOW CREATE TABLE
的输出中看到。 -
ndb_slave_conflict_role
命令行格式 --ndb-slave-conflict-role=value
已弃用 8.0.23-ndb-8.0.23 系统变量 ndb_slave_conflict_role
作用范围 全局 动态 是 SET_VAR
提示适用否 类型 枚举 默认值 NONE
有效值 NONE``PRIMARY``SECONDARY``PASS
在 NDB 8.0.23 中已弃用,并可能在将来的版本中被移除。请改用
ndb_conflict_role
。 -
ndb_table_no_logging
系统变量 ndb_table_no_logging
作用范围 会话 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
当此变量设置为
ON
或1
时,导致使用ENGINE NDB
创建或更改的所有表都是非记录日志的;也就是说,此表的数据更改不会写入重做日志或写入磁盘检查点,就好像使用CREATE TABLE
或ALTER TABLE
时使用NOLOGGING
选项创建或更改表一样。有关非记录
NDB
表的更多信息,请参阅 NDB_TABLE 选项。ndb_table_no_logging
对NDB
表模式文件的创建没有影响;要抑制这些文件,请改用ndb_table_temporary
。 -
ndb_table_temporary
系统变量 ndb_table_temporary
作用范围 会话 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
当设置为
ON
或1
时,此变量导致NDB
表不写入磁盘:这意味着不会创建表模式文件,也不会记录表。注意
设置此变量目前没有效果。这是一个已知问题;请参阅 Bug #34036。
-
ndb_use_copying_alter_table
系统变量 ndb_use_copying_alter_table
作用范围 全局, 会话 动态 否 SET_VAR
提示适用否 强制
NDB
在在线ALTER TABLE
操作出现问题时使用表的复制。默认值为OFF
。 -
ndb_use_exact_count
系统变量 ndb_use_exact_count
作用范围 全局, 会话 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
强制
NDB
在SELECT COUNT(*)
查询规划期间使用记录计数以加快此类查询的速度。默认值为OFF
,这样可以加快整体查询速度。 -
ndb_use_transactions
命令行格式 --ndb-use-transactions[={OFF|ON}]
系统变量 ndb_use_transactions
作用范围 全局, 会话 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 ON
通过将此变量的值设置为
OFF
,您可以禁用NDB
事务支持。一般情况下不建议这样做,尽管在某些情况下可能会有用,比如在导入一个或多个大事务的转储文件时,可以在给定的客户端会话中禁用事务支持;这样可以将多行插入分批执行,而不是作为单个事务。在这种情况下,一旦导入完成,您应该将此会话的变量值重置为ON
,或者直接终止会话。 -
ndb_version
系统变量 ndb_version
作用范围 全局 动态 否 SET_VAR
提示适用否 类型 字符串 默认值 NDB
引擎版本,作为一个复合整数。 -
ndb_version_string
系统变量 ndb_version_string
作用范围 全局 动态 否 SET_VAR
提示适用否 类型 字符串 默认值 NDB
引擎版本以ndb-*
x.y.z*
格式。 -
replica_allow_batching
命令行格式 --replica-allow-batching[={OFF|ON}]
引入版本 8.0.26-ndb-8.0.26 系统变量 replica_allow_batching
作用范围 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 (≥ 8.0.30-ndb-8.0.30) ON
默认值 (≤ 8.0.29-ndb-8.0.29) OFF
NDB 集群复制品上是否启用了批量更新。从 NDB 8.0.26 开始,您应该使用
replica_allow_batching
来替代在该版本中已弃用的slave_allow_batching
。在复制品上允许批量更新极大地提高了性能,特别是在复制
TEXT
、BLOB
和JSON
列时。因此,在 NDB 8.0.30 及更高版本中,默认情况下启用了replica_allow_batching
。设置此变量仅在使用
NDB
存储引擎的复制时才会生效;在 MySQL Server 8.0 中,它存在但不起作用。有关更多信息,请参见第 25.7.6 节,“启动 NDB 集群复制(单个复制通道)”")。 -
ndb_replica_batch_size
命令行格式 --ndb-replica-batch-size=#
引入版本 8.0.30-ndb-8.0.30 系统变量 ndb_replica_batch_size
作用范围 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 2097152
最小值 0
最大值 2147483648
单位 字节 确定复制应用程序线程使用的批量大小(以字节为单位)。在 NDB 8.0.30 及更高版本中,设置��变量而不是
--ndb-batch-size
选项,将此设置应用于副本,不包括任何其他会话。如果未设置此变量(默认为 2 MB),其有效值为
--ndb-batch-size
的值和 2 MB 中较大的一个。 -
ndb_replica_blob_write_batch_bytes
命令行格式 --ndb-replica-blob-write-batch-bytes=#
引入版本 8.0.30-ndb-8.0.30 系统变量 ndb_replica_blob_write_batch_bytes
作用范围 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 2097152
最小值 0
最大值 2147483648
单位 字节 控制复制应用程序线程用于 blob 数据的批量写入大小。
从 NDB 8.0.30 开始,您应该设置这个变量,而不是
--ndb-blob-write-batch-bytes
选项来控制副本上的 blob 批量写入大小,不包括任何其他会话。这样做的原因是,当未设置ndb_replica_blob_write_batch_bytes
时,有效的 blob 批量大小(即,blob 列待写入的最大字节数)由--ndb-blob-write-batch-bytes
的值和 2 MB(ndb_replica_blob_write_batch_bytes
的默认值)中较大的一个确定。将
ndb_replica_blob_write_batch_bytes
设置为 0 意味着NDB
在副本上对 blob 批量写入大小不设限。 -
server_id_bits
命令行格式 --server-id-bits=#
系统变量 server_id_bits
作用范围 全局 动态 否 SET_VAR
提示适用否 类型 整数 默认值 32
最小值 7
最大值 32
此变量指示在 32 位
server_id
中,实际标识服务器的最低有效位数。指示服务器实际上由少于 32 位标识使得一些剩余位可以用于其他目的,例如通过使用 NDB API 的事件 API 生成的用户数据存储在OperationOptions
结构的AnyValue
中(NDB 集群使用AnyValue
存储服务器 ID)。在提取用于检测复制循环等目的的
server_id
的有效服务器 ID 时,服务器会忽略剩余的位。在决定是否应根据服务器 ID 忽略事件时,I/O 和 SQL 线程中使用server_id_bits
变量来屏蔽server_id
的任何无关位。此数据可以通过 mysqlbinlog 从二进制日志中读取,前提是它以自己的
server_id_bits
变量设置为 32(默认值)运行。如果
server_id
的值大于或等于 2 的server_id_bits
次方;否则,mysqld 拒绝启动。此系统变量仅受 NDB 集群支持。标准 MySQL 8.0 服务器不支持。
-
slave_allow_batching
命令行格式 --slave-allow-batching[={OFF|ON}]
已弃用 8.0.26-ndb-8.0.26 系统变量 slave_allow_batching
范围 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值(≥ 8.0.30-ndb-8.0.30) ON
默认值(≤ 8.0.29-ndb-8.0.29) OFF
NDB 集群副本是否启用批量更新。从 NDB 8.0.26 开始,此变量已弃用,应改用
replica_allow_batching
。在副本上允许批量更新可以极大地提高性能,特别是在复制
TEXT
、BLOB
和JSON
列时。因此,在 NDB 8.0.30 及更高版本中,默认情况下replica_allow_batching
为ON
。从 NDB 8.0.30 开始,每当将此变量设置为OFF
时都会发出警告。设置此变量仅在使用
NDB
存储引擎的复制时才会生效;在 MySQL Server 8.0 中,它存在但不起作用。更多信息,请参见第 25.7.6 节,“启动 NDB 集群复制(单一复制通道)”")。 -
transaction_allow_batching
系统变量 transaction_allow_batching
作用范围 会话 动态 是 SET_VAR
Hint Applies否 类型 布尔值 默认值 OFF
当设置为
1
或ON
时,此变量允许在同一事务中批处理语句。要使用此变量,必须先通过将autocommit
设置为0
或OFF
来禁用自动提交;否则,设置transaction_allow_batching
不会生效。在执行仅进行写操作的事务时使用此变量是安全的,因为启用它可能导致从“之前”图像中读取。在发出
SELECT
之前,应确保任何待处理的事务已提交(如果需要,使用显式的COMMIT
)。重要
transaction_allow_batching
在同一事务中的给定语句的效果取决于先前语句的结果时不应使用。当前仅支持 NDB Cluster 的此变量。
下面列表中的系统变量都与ndbinfo
信息数据库相关。
-
ndbinfo_database
系统变量 ndbinfo_database
作用范围 全局 动态 否 SET_VAR
Hint Applies否 类型 字符串 默认值 ndbinfo
显示用于
NDB
信息数据库的名称;默认值为ndbinfo
。这是一个只读变量,其值在编译时确定。 -
ndbinfo_max_bytes
命令行格式 --ndbinfo-max-bytes=#
系统变量 ndbinfo_max_bytes
范围 全局,会话 动态 是 SET_VAR
提示适用否 类型 整数 默认值 0
最小值 0
最大值 65535
仅用于测试和调试。
-
ndbinfo_max_rows
命令行格式 --ndbinfo-max-rows=#
系统变量 ndbinfo_max_rows
范围 全局,会话 动态 是 SET_VAR
提示适用否 类型 整数 默认值 10
最小值 1
最大值 256
仅用于测试和调试。
-
ndbinfo_offline
系统变量 ndbinfo_offline
范围 全��� 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
将
ndbinfo
数据库置于离线模式,即使表和视图实际上不存在,或者存在但在NDB
中具有不同的定义时也可以打开这些表(或视图)。不会从这些表(或视图)返回任何行。 -
ndbinfo_show_hidden
命令行格式 --ndbinfo-show-hidden[={OFF|ON}]
系统变量 ndbinfo_show_hidden
范围 全局,会话 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
有效值 ON``OFF
是否在mysql客户端中显示
ndbinfo
数据库的底层内部表。默认值为OFF
。注意
当启用
ndbinfo_show_hidden
时,内部表仅在ndbinfo
数据库中显示;无论变量设置如何,它们都不会在TABLES
或其他INFORMATION_SCHEMA
表中可见。 -
ndbinfo_table_prefix
系统变量 ndbinfo_table_prefix
范围 全局 动态 否 SET_VAR
提示适用否 类型 字符串 默认值 ndb$
用于命名 ndbinfo 数据库基本表的前缀(通常隐藏,除非通过设置
ndbinfo_show_hidden
公开)。这是一个只读变量,默认值为ndb$
;前缀本身在编译时确定。 -
ndbinfo_version
系统变量 ndbinfo_version
范围 全局 动态 否 SET_VAR
提示适用否 类型 字符串 默认值 显示正在使用的
ndbinfo
引擎的版本;只读。
25.4.3.9.3 NDB Cluster 状态变量
本节提供了与 NDB Cluster 和NDB
存储引擎相关的 MySQL 服务器状态变量的详细信息。有关不特定于 NDB Cluster 的状态变量以及使用状态变量的一般信息,请参见第 7.1.10 节,“服务器状态变量”。
-
Handler_discover
MySQL 服务器可以询问
NDBCLUSTER
存储引擎是否知道具有给定名称的表。这称为发现。Handler_discover
指示使用此机制发现表的次数。 -
Ndb_api_adaptive_send_deferred_count
实际未发送的自适应发送调用次数。
更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_adaptive_send_deferred_count_session
实际未发送的自适应发送调用次数。
更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_adaptive_send_deferred_count_replica
该副本实际未发送的自适应发送调用次数。
更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_adaptive_send_deferred_count_slave
注意
在 NDB 8.0.23 中已弃用;请改用
Ndb_api_adaptive_send_deferred_count_replica
。该副本实际未发送的自适应发送调用次数。
更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_adaptive_send_forced_count
由此 MySQL 服务器(SQL 节点)发送的强制发送调用的自适应发送次数。
更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_adaptive_send_forced_count_session
在此客户端会话中发送的强制发送调用的自适应发送次数。
更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_adaptive_send_forced_count_replica
该副本发送的强制发送调用的自适应发送次数。
更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_adaptive_send_forced_count_slave
注意
在 NDB 8.0.23 中已弃用;请改用
Ndb_api_adaptive_send_forced_count_replica
。该副本发送的强制发送调用的自适应发送次数。
更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_adaptive_send_unforced_count
由此 MySQL 服务器(SQL 节点)发送的无强制发送的自适应发送调用次数。
有关更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_adaptive_send_unforced_count_session
在此客户端会话中发送的无强制发送的自适应发送调用次数。
有关更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_adaptive_send_unforced_count_replica
由此副本发送的无强制发送的自适应发送调用次数。
有关更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_adaptive_send_unforced_count_slave
注意
在 NDB 8.0.23 中已弃用;请改用
Ndb_api_adaptive_send_unforced_count_replica
。由此副本发送的无强制发送的自适应发送调用次数。
有关更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_bytes_sent_count_session
在此客户端会话中发送到数据节点的数据量(以字节为单位)。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但它仅与当前会话相关,并不受此mysqld的任何其他客户端影响。有关更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_bytes_sent_count_replica
由此副本发送到数据节点的数据量(以字节为单位)。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其范围实际上是全局的。 如果此 MySQL 服务器不充当副本,或不使用 NDB 表,则此值始终为 0。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_bytes_sent_count_slave
注意
在 NDB 8.0.23 中已弃用;请改用
Ndb_api_bytes_sent_count_replica
。发送到数据节点的数据量(以字节为单位)。
虽然这个变量可以通过
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
来读取,但实际上它在全局范围内有效。如果这个 MySQL 服务器不充当副本,或者不使用 NDB 表,这个值始终为 0。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_bytes_sent_count
由此 MySQL 服务器(SQL 节点)发送到数据节点的数据量(以字节为单位)。
虽然这个变量可以通过
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
来读取,但实际上它在全局范围内有效。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_bytes_received_count_session
从数据节点在此客户端会话中接收到的数据量(以字节为单位)。
虽然这个变量可以通过
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
来读取,但它只与当前会话相关,并不受这个mysqld的任何其他客户端影响。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_bytes_received_count_replica
从数据节点接收到的数据量(以字节为单位)。
虽然这个变量可以通过
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
来读取,但实际上它在全局范围内有效。如果这个 MySQL 服务器不充当副本,或者不使用 NDB 表,这个值始终为 0。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_bytes_received_count_slave
注意
在 NDB 8.0.23 中已弃用;请改用
Ndb_api_bytes_received_count_replica
。此副本从数据节点接收的数据量(以字节为单位)。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当副本,或者不使用 NDB 表,此值始终为 0。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_bytes_received_count
此 MySQL 服务器(SQL 节点)从数据节点接收的数据量(以字节为单位)。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_event_data_count_injector
NDB 二进制日志注入器线程接收的行更改事件数量。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_event_data_count
此 MySQL 服务器(SQL 节点)接收的行更改事件数量。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_event_nondata_count_injector
NDB 二进制日志注入线程接收的除行更改事件之外的事件数量。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。查看更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_event_nondata_count
MySQL 服务器(SQL 节点)接收的除行更改事件之外的事件数量。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。查看更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_event_bytes_count_injector
NDB 二进制日志注入线程接收的事件字节数。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。查看更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_event_bytes_count
MySQL 服务器(SQL 节点)接收的事件字节数。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。查看更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_pk_op_count_session
基于或使用主键的客户端会话中的操作数量。这包括对 blob 表的操作、隐式解锁操作、自增操作,以及用户可见的主键操作。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但它仅与当前会话相关,并不受此mysqld的任何其他客户端影响。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_pk_op_count_replica
这个复制品基于或使用主键的操作次数。这包括对 blob 表的操作、隐式解锁操作、自增操作,以及用户可见的主键操作。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当复制品,或不使用 NDB 表,则此值始终为 0。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_pk_op_count_slave
注意
在 NDB 8.0.23 中已弃用;请使用
Ndb_api_pk_op_count_replica
代替。这个复制品基于或使用主键的操作次数。这包括对 blob 表的操作、隐式解锁操作、自增操作,以及用户可见的主键操作。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当复制品,或不使用 NDB 表,则此值始终为 0。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_pk_op_count
这个 MySQL 服务器(SQL 节点)基于或使用主键的操作次数。这包括对 blob 表的操作、隐式解锁操作、自增操作,以及用户可见的主键操作。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_pruned_scan_count_session
此客户端会话中已被修剪为单个分区的扫描次数。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但它与当前会话相关,不受此mysqld的任何其他客户端影响。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_pruned_scan_count_replica
此副本进行的已被修剪为单个分区的扫描次数。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,此值始终为 0。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_pruned_scan_count_slave
注意
在 NDB 8.0.23 中已弃用;请改用
Ndb_api_pruned_scan_count_replica
。此副本进行的已被修剪为单个分区的扫描次数。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围���全局的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,此值始终为 0。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_pruned_scan_count
此 MySQL 服务器(SQL 节点)进行的已被修剪为单个分区的扫描次数。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_range_scan_count_session
在此客户端会话中启动的范围扫描次数。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但它仅与当前会话相关,并不受此mysqld的任何其他客户端影响。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_range_scan_count_replica
由此副本启动的范围扫描次数。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际上是全局范围的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,则此值始终为 0。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_range_scan_count_slave
注意
在 NDB 8.0.23 中已弃用;请改用
Ndb_api_range_scan_count_replica
。由此副本启动的范围扫描次数。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际上是全局范围的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,则此值始终为 0。更多信息,请参见第 25.6.15 节,“NDB API 统计计���器和变量”。
-
Ndb_api_range_scan_count
由此 MySQL 服务器(SQL 节点)启动的范围扫描次数。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际上是全局范围的。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_read_row_count_session
在此客户端会话中已读取的总行数。这包括此客户端会话中通过任何主键、唯一键或扫描操作读取的所有行。
尽管此变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但它仅与当前会话相关,并不受此mysqld的任何其他客户端影响。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_read_row_count_replica
此副本已读取的总行数。这包括此副本通过任何主键、唯一键或扫描操作读取的所有行。
尽管此变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但其实质上是全局范围的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,此值始终为 0。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_read_row_count_slave
注意
在 NDB 8.0.23 中已弃用;请改用
Ndb_api_read_row_count_replica
。此副本已读取的总行数。这包括此副本通过任何主键、唯一键或扫描操作读取的所有行。
尽管此变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但其实质上是全局范围的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,此值始终为 0。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_read_row_count
此 MySQL 服务器(SQL 节点)已读取的总行数。这包括此 MySQL 服务器(SQL 节点)通过任何主键、唯一键或扫描操作读取的所有行。
你应该意识到,对于由
SELECT
COUNT(*)
查询读取的行,这个值可能不完全准确,因为在这种情况下,MySQL 服务器实际上读取伪行,形式为[*
表片段 ID*]:[*
片段中的行数*]
,并对表中所有片段的行进行求和,以推导出所有行的估计计数。Ndb_api_read_row_count
使用这个估计值,而不是表中实际的行数。尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实质上是全局范围的。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_scan_batch_count_session
此客户端会话中接收的行批次数。1 批次定义为来自单个片段的扫描结果集。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但它仅与当前会话相关,并不受此mysqld的任何其他客户端影响。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_scan_batch_count_replica
此副本接收的行批次数。1 批次定义为来自单个片段的扫描结果集。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实质上是全局范围的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,此值始终为 0。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_scan_batch_count_slave
注意
在 NDB 8.0.23 中已弃用;请改用
Ndb_api_scan_batch_count_replica
。此副本接收的行批次数。1 批次定义为来自单个片段的扫描结果集。
虽然可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,则此值始终为 0。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_scan_batch_count
MySQL 服务器(SQL 节点)接收的行批次数。1 批次定义为来自单个片段的扫描结果集。
虽然可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_table_scan_count_session
在此客户端会话中已启动的表扫描次数,包括对内部表的扫描。
虽然可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但它仅与当前会话相关,并不受此mysqld的任何其他客户端影响。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_table_scan_count_replica
此副本已启动的表扫描次数,包括对内部表的扫描。
虽然可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,则此值始终为 0。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_table_scan_count_slave
注意
在 NDB 8.0.23 中已弃用;请改用
Ndb_api_table_scan_count_replica
。由此副本启动的表扫描次数,包括内部表的扫描。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,则此值始终为 0。更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_table_scan_count
由此 MySQL 服务器(SQL 节点)启动的表扫描次数,包括内部表的扫描。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_trans_abort_count_session
在此客户端会话中中止的事务数量。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但它仅与当前会话相关,并不受此mysqld的任何其他客户端影响。更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_trans_abort_count_replica
该副本中被中止的事务数量。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,则此值始终为 0。更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_trans_abort_count_slave
注意
在 NDB 8.0.23 中已弃用;请改用
Ndb_api_trans_abort_count_replica
。由此副本中止的事务数量。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
来读取此变量,但其实质上是全局范围的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,此值始终为 0。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_trans_abort_count
由此 MySQL 服务器(SQL 节点)中止的事务数量。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
来读取此变量,但其实质上是全局范围的。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_trans_close_count_session
在此客户端会话中关闭的事务数量。此值可能大于
Ndb_api_trans_commit_count_session
和Ndb_api_trans_abort_count_session
的总和,因为某些事务可能已被回滚。尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
来读取此变量,但它仅与当前会话相关,并不受此mysqld的任何其他客户端影响。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_trans_close_count_replica
由此副本关闭的事务数量。此值可能大于
Ndb_api_trans_commit_count_replica
和Ndb_api_trans_abort_count_replica
的总和,因为某些事务可能已被回滚。尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,则此值始终为 0。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_trans_close_count_slave
注意
在 NDB 8.0.23 中已弃用;请改用
Ndb_api_trans_close_count_replica
。由此副本关闭的事务数。此值可能大于
Ndb_api_trans_commit_count_replica
和Ndb_api_trans_abort_count_replica
的总和,因为某些事务可能已被回滚。尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,则此值始终为 0。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_trans_close_count
由此 MySQL 服务器(SQL 节点)关闭的事务数。此值可能大于
Ndb_api_trans_commit_count
和Ndb_api_trans_abort_count
的总和,因为某些事务可能已被回滚。尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_trans_commit_count_session
在此客户端会话中提交的事务数。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但它仅与当前会话相关,并不受此 mysqld 的任何其他客户端影响。更多信息,请参见 第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_trans_commit_count_replica
此副本提交的事务数量。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,则此值始终为 0。更多信息,请参见 第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_trans_commit_count_slave
注意
在 NDB 8.0.23 版本中已弃用;请使用
Ndb_api_trans_commit_count_replica
代替。此副本提交的事务数量。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,则此值始终为 0。更多信息,请参见 第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_trans_commit_count
此 MySQL 服务器(SQL 节点)提交的事务数量。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。更多信息,请参见 第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_trans_local_read_row_count_session
在此客户端会话中已读取的总行数。这包括在此客户端会话中进行的任何主键、唯一键或扫描操作读取的所有行。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
来读取,但它仅与当前会话相关,并不受此mysqld的任何其他客户端影响。更多信息,请参见 Section 25.6.15,“NDB API Statistics Counters and Variables”。
-
Ndb_api_trans_local_read_row_count_replica
这个副本已读取的总行数。这包括此副本执行的任何主键、唯一键或扫描操作读取的所有行。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
来读取,但它实际上是全局范围的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,此值始终为 0。更多信息,请参见 Section 25.6.15,“NDB API Statistics Counters and Variables”。
-
Ndb_api_trans_local_read_row_count_slave
注意
在 NDB 8.0.23 中已弃用;请改用
Ndb_api_trans_local_read_row_count_replica
。这个副本已读取的总行数。这包括此副本执行的任何主键、唯一键或扫描操作读取的所有行。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
来读取,但它实际上是全局范围的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,此值始终为 0。更多信息,请参见 Section 25.6.15,“NDB API Statistics Counters and Variables”。
-
Ndb_api_trans_local_read_row_count
这个 MySQL 服务器(SQL 节点)已读取的总行数。这包括此 MySQL 服务器(SQL 节点)执行的任何主键、唯一键或扫描操作读取的所有行。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
来读取,但它实际上是全局范围的。查看更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_trans_start_count_session
此客户端会话中启动的事务数量。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
来读取此变量,但它与当前会话相关,并不受此mysqld的任何其他客户端影响。查看更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_trans_start_count_replica
此副本启动的事务数量。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
来读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,则此值始终为 0。查看更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_trans_start_count_slave
注意
在 NDB 8.0.23 中已弃用;请改用
Ndb_api_trans_start_count_replica
。此副本启动的事务数量。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
来读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,则此值始终为 0。查看更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_trans_start_count
此 MySQL 服务器(SQL 节点)启动的事务数量。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
来读取此变量,但其实际范围是全局的。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_uk_op_count_session
这个客户端会话中基于或使用唯一键的操作次数。
虽然这个变量可以通过
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
来读取,但它只与当前会话相关,并不受这个mysqld的任何其他客户端影响。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_uk_op_count_replica
这个副本基于或使用唯一键的操作次数。
虽然这个变量可以通过
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
来读取,但实际上它在全局范围内有效。如果这个 MySQL 服务器不充当副本,或者不使用 NDB 表,这个值始终为 0。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_uk_op_count_slave
注意
在 NDB 8.0.23 中已弃用;请使用
Ndb_api_uk_op_count_replica
代替。这个副本基于或使用唯一键的操作次数。
虽然这个变量可以通过
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
来读取,但实际上它在全局范围内有效。如果这个 MySQL 服务器不充当副本,或者不使用 NDB 表,这个值始终为 0。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_uk_op_count
这个 MySQL 服务器(SQL 节点)基于或使用唯一键的操作次数。
虽然这个变量可以通过
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
来读取,但实际上它在全局范围内有效。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_wait_exec_complete_count_session
线程在此客户端会话中由于等待操作完成而被阻塞的次数。这包括所有
execute()
调用,以及对客户端不可见的 blob 和自增操作的隐式执行。尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但它仅与当前会话相关,并不受此mysqld的任何其他客户端影响。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_wait_exec_complete_count_replica
线程由于等待操作完成而被此副本阻塞的次数。这包括所有
execute()
调用,以及对客户端不可见的 blob 和自增操作的隐式执行。尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,此值始终为 0。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_wait_exec_complete_count_slave
注意
在 NDB 8.0.23 中已弃用;请改用
Ndb_api_wait_exec_complete_count_replica
。线程由于等待操作完成而被此副本阻塞的次数。这包括所有
execute()
调用,以及对客户端不可见的 blob 和自增操作的隐式执行。尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实是全局范围的。如果此 MySQL 服务器不充当复制品,或不使用 NDB 表,此值始终为 0。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_wait_exec_complete_count
一个线程在等待操作完成时被此 MySQL 服务器(SQL 节点)阻塞的次数。这包括所有
execute()
调用,以及对客户端不可见的 blob 和自增操作的隐式执行。尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实是全局范围的。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_wait_meta_request_count_session
一个线程在此客户端会话中被阻塞等待基于元数据的信号的次数,例如 DDL 请求、新纪元和事务记录的占用。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但它仅与当前会话相关,并不受此mysqld的任何其他客户端影响。更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_wait_meta_request_count_replica
一个线程在此复制品中被阻塞等待基于元数据的信号的次数,例如 DDL 请求、新纪元和事务记录的占用。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实是全局范围的。如果此 MySQL 服务器不充当复制品,或不使用 NDB 表,此值始终为 0。查看更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_wait_meta_request_count_slave
注意
在 NDB 8.0.23 中已弃用;请改用
Ndb_api_wait_meta_request_count_replica
。线程由于等待基于元数据的信号(例如 DDL 请求、新纪元和事务记录的占用)而被此复制品阻塞的次数。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际上是全局范围的。如果此 MySQL 服务器不充当复制品,或不使用 NDB 表,则此值始终为 0。查看更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_wait_meta_request_count
线程由于等待基于元数据的信号(例如 DDL 请求、新纪元和事务记录的占用)而被此 MySQL 服务器(SQL 节点)阻塞的次数。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际上是全局范围的。查看更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_wait_nanos_count_session
在此客户端会话中等待来自数据节点的任何类型信号所花费的总时间(以纳秒为单位)。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但它仅与当前会话相关,并且不受此mysqld的任何其他客户端影响。查看更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_wait_nanos_count_replica
复制品等待来自数据节点的任何类型信号所花费的总时间(以纳秒为单位)。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,则此值始终为 0。查看更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_wait_nanos_count_slave
注意
在 NDB 8.0.23 中已弃用;请改用
Ndb_api_wait_nanos_count_replica
。该副本等待来自数据节点的任何类型信号所花费的总时间(以纳秒为单位)。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,则此值始终为 0。查看更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_wait_nanos_count
该 MySQL 服务器(SQL 节点)等待来自数据节点的任何类型信号所花费的总时间(以纳秒为单位)。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。查看更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_wait_scan_result_count_session
在此客户端会话中,线程由于等待基于扫描的信号而被阻塞的次数,例如等待扫描结果,或等待扫描关闭时。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但它仅与当前会话相关,并不受此mysqld的任何其他客户端影响。查看更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_wait_scan_result_count_replica
线程由于等待扫描信号(例如等待扫描结果或等待扫描关闭)而被此副本阻塞的次数。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,则此值始终为 0。查看更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_wait_scan_result_count_slave
注意
在 NDB 8.0.23 中已弃用;请改用
Ndb_api_wait_scan_result_count_replica
。线程由于等待扫描信号(例如等待扫描结果或等待扫描关闭)而被此副本阻塞的次数。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,则此值始终为 0。查看更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_api_wait_scan_result_count
线程由于等待扫描信号(例如等待扫描结果或等待扫描关闭)而被此 MySQL 服务器(SQL 节点)阻塞的次数。
尽管可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取此变量��但其实际范围是全局的。查看更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。
-
Ndb_cluster_node_id
如果服务器充当 NDB 集群节点,则此变量的值为其在集群中的节点 ID。
如果服务器不是 NDB 集群的一部分,则此变量的值为 0。
-
Ndb_config_from_host
如果服务器是 NDB 集群的一部分,则此变量的值是从其获取配置数据的集群管理服务器的主机名或 IP 地址。
如果服务器不是 NDB 集群的一部分,则此变量的值为空字符串。
-
Ndb_config_from_port
如果服务器是 NDB 集群的一部分,则此变量的值是通过其连接到的用于获取配置数据的集群管理服务器的端口号。
如果服务器不是 NDB 集群的一部分,则此变量的值为 0。
-
Ndb_config_generation
显示集群当前配置的生成编号。这可用作指示器,用于确定自此 SQL 节点上次连接到集群以来集群的配置是否发生了更改。
-
Ndb_conflict_fn_epoch
在 NDB 集群复制冲突解决中使用,此变量显示使用
NDB$EPOCH()
冲突解决在给定的mysqld上找到的冲突行数,自上次重新启动以来。欲了解更多信息,请参阅第 25.7.12 节,“NDB 集群复制冲突解决”。
-
Ndb_conflict_fn_epoch_trans
在 NDB 集群复制冲突解决中使用,此变量显示使用
NDB$EPOCH_TRANS()
冲突解决在给定的mysqld上找到的冲突行数,自上次重新启动以来。欲了解更多信息,请参阅第 25.7.12 节,“NDB 集群复制冲突解决”。
-
Ndb_conflict_fn_epoch2
使用
NDB$EPOCH2()
时,在 NDB 集群复制冲突解决中找到的冲突行数,源自上次重新启动以来被指定为主服务器的源。欲了解更多信息,请参阅 NDB$EPOCH2()")。
-
Ndb_conflict_fn_epoch2_trans
在 NDB 集群复制冲突解决中使用,此变量显示使用
NDB$EPOCH_TRANS2()
冲突解决在给定的mysqld上找到的冲突行数,自上次重新启动以来。查看更多信息,请参见 NDB$EPOCH2_TRANS()")。
-
Ndb_conflict_fn_max
用于 NDB 集群复制冲突解决,此变量显示由于“最大时间戳获胜”冲突解决而在当前 SQL 节点上未应用行的次数,自上次启动此mysqld以来。
查看更多信息,请参见第 25.7.12 节,“NDB 集群复制冲突解决”。
-
Ndb_conflict_fn_max_del_win
显示由于 NDB 集群复制冲突解决使用
NDB$MAX_DELETE_WIN()
而在当前 SQL 节点上拒绝行的次数,自上次启动此mysqld以来。查看更多信息,请参见第 25.7.12 节,“NDB 集群复制冲突解决”。
-
Ndb_conflict_fn_max_del_win_ins
显示由于 NDB 集群复制冲突解决使用
NDB$MAX_DEL_WIN_INS()
而在当前 SQL 节点上拒绝插入行的次数,自上次启动此mysqld以来。查看更多信息,请参见第 25.7.12 节,“NDB 集群复制冲突解决”。
-
Ndb_conflict_fn_max_ins
用于 NDB 集群复制冲突解决,此变量显示自上次启动此mysqld以来,由于“最大时间戳获胜”冲突解决而未在当前 SQL 节点上插入行的次数。
查看更多信息,请参见第 25.7.12 节,“NDB 集群复制冲突解决”。
-
Ndb_conflict_fn_old
用于 NDB 集群复制冲突解决,此变量显示由于“相同时间戳获胜”冲突解决而在给定的mysqld上未应用行的次数,自上次重新启动以来。
更多信息,请参见第 25.7.12 节,“NDB 集群复制冲突解决”。
-
Ndb_conflict_last_conflict_epoch
在此副本上检测到冲突的最新时代。您可以将此值与
Ndb_replica_max_replicated_epoch
进行比较;如果Ndb_replica_max_replicated_epoch
大于Ndb_conflict_last_conflict_epoch
,则尚未检测到冲突。查看第 25.7.12 节,“NDB 集群复制冲突解决”,获取更多信息。
-
Ndb_conflict_reflected_op_discard_count
当使用 NDB 集群复制冲突解决时,这是未在辅助节点上应用的反射操作数量,因为在执行过程中遇到错误。
查看第 25.7.12 节,“NDB 集群复制冲突解决”,获取更多信息。
-
Ndb_conflict_reflected_op_prepare_count
当使用 NDB 集群复制的冲突解决时,此状态变量包含已定义的反射操作数量(即在辅助节点上准备执行的操作)。
查看第 25.7.12 节,“NDB 集群复制冲突解决”,获取更多信息。
-
Ndb_conflict_refresh_op_count
当使用 NDB 集群复制的冲突解决时,这是已准备在辅助节点上执行的刷新操作数量。
查看第 25.7.12 节,“NDB 集群复制冲突解决”,获取更多信息。
-
Ndb_conflict_last_stable_epoch
事务冲突函数发现的冲突行数
查看第 25.7.12 节,“NDB 集群复制冲突解决”,获取更多信息。
-
Ndb_conflict_trans_row_conflict_count
用于 NDB Cluster 复制冲突解决,该状态变量显示自上次重启以来,由事务冲突函数直接确定为冲突的行数。
目前,NDB Cluster 支持的唯一事务冲突检测函数是 NDB$EPOCH_TRANS(),因此该状态变量实际上与
Ndb_conflict_fn_epoch_trans
相同。欲了解更多信息,请参阅 第 25.7.12 节,“NDB Cluster 复制冲突解决”。
-
Ndb_conflict_trans_row_reject_count
用于 NDB Cluster 复制冲突解决,该状态变量显示由于被事务冲突检测函数确定为冲突而重新调整的行总数。这不仅包括
Ndb_conflict_trans_row_conflict_count
,还包括任何在冲突事务中或依赖于冲突事务的行。欲了解更多信息,请参阅 第 25.7.12 节,“NDB Cluster 复制冲突解决”。
-
Ndb_conflict_trans_reject_count
用于 NDB Cluster 复制冲突解决,该状态变量显示通过事务冲突检测函数发现的冲突事务数量。
欲了解更多信息,请参阅 第 25.7.12 节,“NDB Cluster 复制冲突解决”。
-
Ndb_conflict_trans_detect_iter_count
用于 NDB Cluster 复制冲突解决,显示提交时需要的内部迭代次数。应该(略微)大于或等于
Ndb_conflict_trans_conflict_commit_count
。欲了解更多信息,请参阅 第 25.7.12 节,“NDB Cluster 复制冲突解决”。
-
Ndb_conflict_trans_conflict_commit_count
用于 NDB Cluster 复制冲突解决,显示需要事务冲突处理后提交的时代事务数量。
更多信息,请参见 Section 25.7.12, “NDB Cluster Replication Conflict Resolution”。
-
Ndb_epoch_delete_delete_count
在使用删除-删除冲突检测时,检测到的删除-删除冲突数量,其中应用了删除操作,但指定的行不存在。
-
Ndb_execute_count
提供由操作向
NDB
内核进行的往返次数。 -
Ndb_last_commit_epoch_server
最近由
NDB
提交的时代。 -
Ndb_last_commit_epoch_session
最近由此
NDB
客户端提交的时代。 -
Ndb_metadata_detected_count
自此服务器上次启动以来,NDB 元数据更改检测线程发现与 MySQL 数据字典相关的更改次数。
-
Ndb_metadata_excluded_count
自上次重新启动以来,NDB 二进制日志线程无法在此 SQL 节点上同步的元数据对象数量。
如果对象被排除,则直到用户手动纠正不匹配为止,不再考虑自动同步。可以通过尝试使用类似
SHOW CREATE TABLE *
table*
,SELECT * FROM *
table*
或任何触发表发现的语句来执行此操作。在 NDB 8.0.22 之前,此变量名为
Ndb_metadata_blacklist_size
。 -
Ndb_metadata_synced_count
自上次重新启动以来,在此 SQL 节点上已同步的 NDB 元数据对象的数量。
-
Ndb_number_of_data_nodes
如果服务器是 NDB 集群的一部分,则此变量的值是集群中数据节点的数量。
如果服务器不是 NDB 集群的一部分,则此变量的值为 0。
-
Ndb_pushed_queries_defined
将联接下推到 NDB 内核以进行数据节点上的分布式处理的总次数。
注意
使用
EXPLAIN
测试可以下推的联接会对此数字产生影响。 -
Ndb_pushed_queries_dropped
被推送到 NDB 内核但无法在那里处理的联接数量。
-
Ndb_pushed_queries_executed
成功推送到
NDB
并在那里执行的连接数。 -
Ndb_pushed_reads
通过被推送的连接从 NDB 内核返回给mysqld的行数。
注意
对可以推送到
NDB
的连接执行EXPLAIN
不会增加此数字。 -
Ndb_pruned_scan_count
此变量保存自 NDB 集群上次启动以来执行的扫描总数,其中 NDB 集群能够使用分区修剪。
将此变量与
Ndb_scan_count
一起使用,有助于在模式设计中最大化服务器修剪扫描到单个表分区的能力,从而仅涉及复制一个数据节点。 -
Ndb_replica_max_replicated_epoch
此副本上最近提交的时代。您可以将此值与
Ndb_conflict_last_conflict_epoch
进行比较;如果Ndb_replica_max_replicated_epoch
是两者中较大的值,则尚未检测到冲突。更多信息,请参见第 25.7.12 节,“NDB 集群复制冲突解决”。
-
Ndb_scan_count
此变量保存自 NDB 集群上次启动以来执行的扫描总数。
-
Ndb_slave_max_replicated_epoch
注意
在 NDB 8.0.23 中已弃用;请改用
Ndb_slave_max_replicated_epoch
。此副本上最近提交的时代。您可以将此值与
Ndb_conflict_last_conflict_epoch
进行比较;如果Ndb_slave_max_replicated_epoch
是两者中较大的值,则尚未检测到冲突。更多信息,请参见第 25.7.12 节,“NDB 集群复制冲突解决”。
-
Ndb_system_name
如果这个 MySQL 服务器连接到一个 NDB 集群,这个只读变量显示集群系统名称。否则,该值为空字符串。
-
Ndb_trans_hint_count_session
在当前会话中已经启动的使用提示的事务数量。与
Ndb_api_trans_start_count_session
进行比较,以获得所有能够使用提示的 NDB 事务的比例。
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-tcp-definition.html
25.4.3.10 NDB 集群 TCP/IP 连接
TCP/IP 是 NDB 集群中所有节点之间连接的默认传输机制。通常情况下,不需要定义 TCP/IP 连接;NDB 集群会自动为所有数据节点、管理节点以及 SQL 或 API 节点设置这些连接。
注意
对于此规则的例外情况,请参阅第 25.4.3.11 节,“使用直接连接的 NDB 集群 TCP/IP 连接”。
要覆盖默认连接参数,需要在config.ini
文件中使用一个或多个[tcp]
部分定义连接。每个[tcp]
部分明确定义了两个 NDB 集群节点之间的 TCP/IP 连接,必须至少包含参数NodeId1
和NodeId2
,以及任何要覆盖的连接参数。
也可以通过在[tcp default]
部分中设置这些参数的默认值来更改这些参数的默认值。
重要
config.ini
文件中的任何[tcp]
部分应该在所有其他部分之后列出。但是,对于[tcp default]
部分,不需要这样做。这是 NDB 集群管理服务器读取config.ini
文件的方式存在的已知问题。
可以在config.ini
文件的[tcp]
和[tcp default]
部分中设置的连接参数列在此处:
-
AllowUnresolvedHostNames
版本(或更高版本) NDB 8.0.22 类型或单位 布尔值 默认值 false 范围 true, false 添加 NDB 8.0.22 重启类型 节点重启: 需要对集群进行滚动重启。(NDB 8.0.13) 默认情况下,当管理节点在连接时无法解析主机名时,会导致致命错误。可以通过在全局配置文件(通常命名为
config.ini
)的[tcp default]
部分中将AllowUnresolvedHostNames
设置为true
来覆盖此行为,在这种情况下,无法解析主机名将被视为警告,ndb_mgmd启动将继续无中断。 -
Checksum
版本(或更高版本) NDB 8.0.13 类型或单位 布尔值 默认值 false 范围 true, false 重启类型 节点重启: 需要对集群进行滚动重启。(NDB 8.0.13) 此参数默认情况下处于禁用状态。当启用时(设置为
Y
或1
),所有消息在放入发送缓冲区之前都会计算校验和。此功能确保消息在等待发送缓冲区或通过传输机制时不会损坏。 -
Group
当启用
ndb_optimized_node_selection
时,节点的接近程度在某些情况下用于选择要连接的节点。可以通过将此参数设置为较低值来影响接近程度,较低值被解释为“更近”。有关更多信息,请参阅系统变量的描述。 -
HostName1
版本(或更高) NDB 8.0.13 类型或单位 名称或 IP 地址 默认 [...] 范围 ... 重启类型 节点重启: 需要对集群进行滚动重启。(NDB 8.0.13) HostName1
和HostName2
参数可用于指定两个节点之间的 TCP 连接所使用的特定网络接口。这些参数的值可以是主机名或 IP 地址。 -
HostName2
版本(或更高) NDB 8.0.13 类型或单位 名称或 IP 地址 默认 [...] 范围 ... 重启类型 节点重启: 需要对集群进行滚动重启。(NDB 8.0.13) HostName1
和HostName2
参数可用于指定两个节点之间的 TCP 连接所使用的特定网络接口。这些参数的值可以是主机名或 IP 地址。 -
NodeId1
版本(或更高) NDB 8.0.13 类型或单位 数字 默认 [none] 范围 1 - 255 重启类型 节点重启: 需要对集群进行滚动重启。(NDB 8.0.13) 要识别两个节点之间的连接,需要在配置文件的
[tcp]
部分中提供它们的节点 ID 作为NodeId1
和NodeId2
的值。这些值是每个节点的唯一Id
值,如第 25.4.3.7 节,“在 NDB 集群中定义 SQL 和其他 API 节点”中所述。 -
NodeId2
版本(或更高) NDB 8.0.13 类型或单位 数�� 默认 [none] 范围 1 - 255 重启类型 节点重启: 需要对集群进行滚动重启。(NDB 8.0.13) 要识别两个节点之间的连接,需要在配置文件的
[tcp]
部分提供它们的节点 ID 作为NodeId1
和NodeId2
的值。这些是每个节点的相同唯一Id
值,如第 25.4.3.7 节,“在 NDB 集群中定义 SQL 和其他 API 节点”中所述。 -
NodeIdServer
版本(或更高版本) NDB 8.0.13 类型或单位 数值 默认 [无] 范围 1 - 63 重启类型 节点重启: 需要对集群进行滚动重启。(NDB 8.0.13) 设置 TCP 连接的服务器端。
-
OverloadLimit
版本(或更高版本) NDB 8.0.13 类型或单位 字节 默认 0 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启: 需要对集群进行滚动重启。(NDB 8.0.13) 当发送缓冲区中有超过这么多未发送字节时,连接被视为过载。
此参数可用于确定在连接被认为过载之前必须存在的未发送数据量。有关更多信息,请参见第 25.4.3.14 节,“配置 NDB 集群发送缓冲区参数”。
-
PreferIPVersion
版本(或更高版本) NDB 8.0.26 类型或单位 枚举 默认 4 范围 4, 6 添加 NDB 8.0.26 重启类型 初始系统重启: 需要完全关闭集群,从备份中擦除和恢复集群文件系统,然后重新启动集群。(NDB 8.0.13) 确定 DNS 解析对 IP 版本 4 或版本 6 的偏好。因为 NDB 集群所采用的配置检索机制要求所有连接使用相同的偏好,所以应该在
config.ini
全局配置文件的[tcp default]
中设置此参数。 -
PreSendChecksum
版本(或更高版本) NDB 8.0.13 类型或单位 布尔值 默认 false 范围 true, false 重启类型 节点重启: 需要对集群进行滚动重启。(NDB 8.0.13) 如果启用了此参数和
Checksum
,则执行预发送校验和检查,并检查节点之间的所有 TCP 信号是否存在错误。如果未启用Checksum
,则不起作用。 -
Proxy
版本(或更高版本) NDB 8.0.13 类型或单位 字符串 默认值 [...] 范围 ... 重启类型 节点重启: 需要对集群进行滚动重启。(NDB 8.0.13) 为 TCP 连接设置代理。
-
ReceiveBufferMemory
版本(或更高版本) NDB 8.0.13 类型或单位 字节 默认值 2M 范围 16K - 4294967039 (0xFFFFFEFF) 重启类型 节点重启: 需要对集群进行滚动重启。(NDB 8.0.13) 指定从 TCP/IP 套接字接收数据时使用的缓冲区大小。
此参数的默认值为 2MB。最小可能值为 16KB;理论上的最大值为 4GB。
-
SendBufferMemory
版本(或更高版本) NDB 8.0.13 类型或单位 无符号 默认值 2M 范围 256K - 4294967039 (0xFFFFFEFF) 重启类型 节点重启: 需要对集群进行滚动重启。(NDB 8.0.13) TCP 传输器使用缓冲区在执行发送调用到操作系统之前存储所有消息。当此缓冲区达到 64KB 时,其内容将被发送;当一轮消息已执行时,也会发送。为处理临时过载情况,还可以定义更大的发送缓冲区。
如果显式设置了此参数,则内存不会专门分配给每个传输器;相反,使用的值表示单个传输器可以使用的内存硬限制(即
TotalSendBufferMemory
总可用内存的一部分)。有关在 NDB Cluster 中配置动态传输器发送缓冲区内存分配的更多信息,请参见 Section 25.4.3.14,“配置 NDB Cluster 发送缓冲区参数”。发送缓冲区的默认大小为 2MB,在大多数情况下建议使用此大小。最小大小为 64KB;理论上的最大值为 4GB。
-
SendSignalId
版本(或更高版本) NDB 8.0.13 类型或单位 布尔值 默认值 false(调试版本为 true) 范围 true, false 重启类型 节点重启: 需要对集群进行滚动重启。(NDB 8.0.13) 为了能够追溯分布式消息数据报,有必要标识每个消息。当此参数设置为
Y
时,消息 ID 被传输到网络上。此功能在生产构建中默认禁用,在-debug
构建中启用。 -
TcpBind_INADDR_ANY
将此参数设置为
TRUE
或1
将绑定IP_ADDR_ANY
,以便可以从任何地方进行连接(用于自动生成的连接)。默认值为FALSE
(0
)。 -
TcpSpinTime
版本(或更高版本) NDB 8.0.20 类型或单位 微秒 默认 0 范围 0 - 2000 添加 NDB 8.0.20 重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13) 控制 TCP 传输器的自旋;若要启用,请设置为非零值。这适用于数据节点以及连接的管理或 SQL 节点的两侧。
-
TCP_MAXSEG_SIZE
版本(或更高版本) NDB 8.0.13 类型或单位 无符号 默认 0 范围 0 - 2G 重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13) 确定在 TCP 传输器初始化期间设置的内存大小。对于大多数常见用例,建议使用默认值。
-
TCP_RCV_BUF_SIZE
版本(或更高版本) NDB 8.0.13 类型或单位 无符号 默认 0 范围 0 - 2G 重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13) 确定在 TCP 传输器初始化期间设置的接收缓冲区的大小。默认和最小值为 0,允许操作系统或平台设置此值。对于大多数常见用例,建议使用默认值。
-
TCP_SND_BUF_SIZE
版本(或更高版本) NDB 8.0.13 类型或单位 无符号 默认 0 范围 0 - 2G 重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13) 确定在 TCP 传输器初始化期间设置的发送缓冲区的大小。默认和最小值为 0,允许操作系统或平台设置此值。��于大多数常见用例,建议使用默认值。
重启类型。 此部分中参数描述中使用的重启类型信息如下表所示:
表 25.21 NDB 集群重启类型
符号 | 重启类型 | 描述 |
---|---|---|
N | 节点 | 可以使用滚动重启来更新该参数(参见第 25.6.5 节,“执行 NDB 集群的滚动重启”) |
S | 系统 | 所有集群节点必须完全关闭,然后重新启动,以更改此参数 |
I | 初始 | 必须使用--initial 选项重新启动数据节点 |
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-tcp-definition-direct.html
25.4.3.11 NDB 集群使用直接连接的 TCP/IP 连接
使用数据节点之间的直接连接设置集群需要在集群 config.ini
文件的 [tcp]
部分明确指定连接的数据节点的交叉 IP 地址。
在下面的示例中,我们设想一个至少有四个主机的集群,分别用于管理服务器、SQL 节点和两个数据节点。整个集群位于 LAN 的 172.23.72.*
子网上。除了通常的网络连接外,两个数据节点使用标准交叉电缆直接连接,并使用 1.1.0.*
地址范围中的 IP 地址直接通信,如下所示:
# Management Server
[ndb_mgmd]
Id=1
HostName=172.23.72.20
# SQL Node
[mysqld]
Id=2
HostName=172.23.72.21
# Data Nodes
[ndbd]
Id=3
HostName=172.23.72.22
[ndbd]
Id=4
HostName=172.23.72.23
# TCP/IP Connections
[tcp]
NodeId1=3
NodeId2=4
HostName1=1.1.0.1
HostName2=1.1.0.2
只有在指定直接连接时才使用 HostName1
和 HostName2
参数。
使用数据节点之间的直接 TCP 连接可以通过使数据节点绕过以太网设备(如交换机、集线器或路由器)来提高集群的整体效率,从而减少集群的延迟。
注意
要充分利用这种方式的直接连接,当有两个以上的数据节点时,必须在同一节点组中的每个数据节点之间建立直接连接。
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-shm-definition.html
25.4.3.12 NDB 集群共享内存连接
NDB 集群节点之间的通信通常使用 TCP/IP 处理。共享内存(SHM)传输器的特点是通过在内存中写入信号而不是在套接字上传输来区分。共享内存传输器(SHM)可以在将 API 节点(通常是 SQL 节点)和数据节点一起运行在同一主机上时,通过消除 TCP 连接所需的高达 20% 的开销来提高性能。您可以通过以下两种方式之一启用共享内存连接:
-
通过将数据节点配置参数
UseShm
设置为1
,并将数据节点的HostName
和 API 节点的HostName
设置为相同值。 -
通过在集群配置文件中使用包含
NodeId1
和NodeId2
设置的[shm]
部分。稍后在本节中将更详细地描述这种方法。
假设一个集群在同一主机计算机上运行具有节点 ID 1 的数据节点和具有节点 ID 51 的 SQL 节点,IP 地址为 10.0.0.1. 要在这两个节点之间启用 SHM 连接,只需确保集群配置文件中包含以下条目:
[ndbd]
NodeId=1
HostName=10.0.0.1
UseShm=1
[mysqld]
NodeId=51
HostName=10.0.0.1
重要提示
刚刚显示的两个条目是在集群中需要的任何其他条目和参数设置之外的。稍后在本节中将展示一个更完整的示例。
在启动使用 SHM 连接的数据节点之前,还需要确保托管此类数据节点的每台计算机的操作系统为共享内存段分配了足够的内存。有关此信息,请参阅您操作平台的文档。在每个运行数据节点和 API 节点的多个主机的设置中,可以通过在配置文件的 [ndbd default]
部分中设置 UseShm
来在所有这些主机上启用共享内存。稍后在本节中将展示示例。
虽然不是严格要求,但可以通过在集群配置(config.ini
)文件的 [shm default]
部分中设置以下一个或多个参数来调整集群中所有 SHM 连接:
-
ShmSize
:共享内存大小 -
ShmSpinTime
:在休眠之前旋转的时间(以微秒为单位) -
SendBufferMemory
:从此节点发送的信号的缓冲区大小,以字节为单位。 -
SendSignalId
:表示每个通过传输器发送的信号中都包含信号 ID。 -
Checksum
:表示每个通过传输器发送的信号中都包含校验和。 -
PreSendChecksum
:在发送信号之前进行校验和检查;此功能也需要启用校验和。
这个例子展示了在多个主机上定义的 SHM 连接的简单设置,在一个使用 3 台计算机列出的 NDB 集群中,托管了所示节点类型的主机名:
-
10.0.0.0
:管理服务器 -
10.0.0.1
:一个数据节点和一个 SQL 节点 -
10.0.0.2
:一个数据节点和一个 SQL 节点
在这种情况下,每个数据节点使用 TCP 传输器与管理服务器和其他数据节点通信;每个 SQL 节点使用共享内存传输器与本地数据节点通信,并使用 TCP 传输器与远程数据节点通信。反映此设置的基本配置由 config.ini 文件启用,其内容如下所示:
[ndbd default]
DataDir=*/path/to/datadir*
UseShm=1
[shm default]
ShmSize=8M
ShmSpintime=200
SendBufferMemory=4M
[tcp default]
SendBufferMemory=8M
[ndb_mgmd]
NodeId=49
Hostname=10.0.0.0
DataDir=*/path/to/datadir*
[ndbd]
NodeId=1
Hostname=10.0.0.1
DataDir=*/path/to/datadir*
[ndbd]
NodeId=2
Hostname=10.0.0.2
DataDir=*/path/to/datadir*
[mysqld]
NodeId=51
Hostname=10.0.0.1
[mysqld]
NodeId=52
Hostname=10.0.0.2
[api]
[api]
影响所有共享内存传输器的参数在 [shm default]
部分设置;这些可以在一个或多个 [shm]
部分中按连接覆盖。每个这样的部分必须使用 NodeId1
和 NodeId2
关联给定 SHM 连接的节点 ID;也可以使用 HostName1
和 HostName2
通过主机名标识节点,但这些参数不是必需的。
对于未设置主机名的 API 节点,使用 TCP 传输器与数据节点通信,独立于它们启动的主机;配置文件中 [tcp default]
部分设置的参数和值适用于集群中的所有 TCP 传输器。
为了获得最佳性能,您可以为 SHM 传输器定义一个自旋时间(ShmSpinTime
参数);这会影响数据节点接收线程和 NDB
中的轮询所有者(接收线程或用户线程)。
-
Checksum
版本(或更高版本) NDB 8.0.13 类型或单位 布尔型 默认 true 范围 true, false 重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13) 这个参数是一个布尔型(
Y
/N
)参数,默认情况下是禁用的。启用后,在将消息放入发送缓冲区之前会计算所有消息的校验和。此功能可防止消息在等待发送缓冲区时被损坏。它还可用作在传输过程中检查数据是否被损坏的检查。
-
组
版本(或更高版本) NDB 8.0.13 类型或单位 无符号 默认值 35 范围 0 - 200 重启类型 节点重启: 需要进行滚动重启(NDB 8.0.13) 确定组的接近程度;较小的值被解释为更接近。默认值对大多数情况足够。
-
HostName1
版本(或更高版本) NDB 8.0.13 类型或单位 名称或 IP 地址 默认值 [...] 范围 ... 重启类型 节点重启: 需要进行滚动重启(NDB 8.0.13) HostName1
和HostName2
参数可用于指定用于两个节点之间给定 SHM 连接的特定网络接口。这些参数的值可以是主机名或 IP 地址。 -
HostName2
版本(或更高版本) NDB 8.0.13 类型或单位 名称或 IP 地址 默认值 [...] 范围 ... 重启类型 节点重启: 需要进行滚动重启(NDB 8.0.13) HostName1
和HostName2
参数可用于指定用于两个节点之间给定 SHM 连接的特定网络接口。这些参数的值可以是主机名或 IP 地址。 -
NodeId1
版本(或更高版本) NDB 8.0.13 类型或单位 数字 默认值 [无] 范围 1 - 255 重启类型 节点重启: 需要进行滚动重启(NDB 8.0.13) 要识别两个节点之间的连接,需要为每个节点提供节点标识符,如
NodeId1
和NodeId2
。 -
NodeId2
版本(或更高版本) NDB 8.0.13 类型或单位 数字 默认值 [无] 范围 1 - 255 重启类型 节点重启: 需要进行滚动重启(NDB 8.0.13) 要识别两个节点之间的连接,需要为每个节点提供节点标识符,如
NodeId1
和NodeId2
。 -
NodeIdServer
版本(或更高版本) NDB 8.0.13 类型或单位 数字 默认值 [无] 范围 1 - 63 重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13) 识别共享内存连接的服务器端。默认情况下,这是数据节点的节点 ID。
-
OverloadLimit
版本(或更高) NDB 8.0.13 类型或单位 字节 默认值 0 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13) 当发送缓冲区中有超过这么多未发送字节时,连接被视为过载。有关更多信息,请参阅第 25.4.3.14 节,“配置 NDB 集群发送缓冲区参数”和第 25.6.16.65 节,“ndbinfo transporters 表”。
-
PreSendChecksum
版本(或更高) NDB 8.0.13 类型或单位 布尔值 默认值 false 范围 真,假 重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13) 如果启用此参数和
Checksum
,则执行预发送校验和检查所有节点之间的所有 SHM 信号是否存在错误。如果未启用Checksum
,则不起作用。 -
SendBufferMemory
版本(或更高) NDB 8.0.13 类型或单位 整数 默认值 2M 范围 256K - 4294967039 (0xFFFFFEFF) 重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13) 从此节点使用共享内存连接发送的信号的共享内存缓冲区大小(以字节为单位)。
-
SendSignalId
版本(或更高) NDB 8.0.13 类型或单位 布尔值 默认值 false 范围 真,假 重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13) 为了追踪分布式消息的路径,需要为每个消息提供唯一标识符。将此参数设置为
Y
会导致这些消息 ID 也通过网络传输。此功能在生产构建中默认禁用,在-debug
构建中启用。 -
ShmKey
版本(或更高) NDB 8.0.13 类型或单位 无符号 默认值 0 范围 0 - 4294967039 (0xFFFFFEFF) 重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13) 在设置共享内存段时,使用一个表示为整数的节点 ID 来唯一标识用于通信的共享内存段。没有默认值。如果启用了
UseShm
,则共享内存键会由NDB
自动计算。 -
ShmSize
版本(或更高) NDB 8.0.13 类型或单位 字节 默认 4M 范围 64K - 4294967039 (0xFFFFFEFF) 重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13) 每个 SHM 连接都有一个共享内存段,发送者将消息放入其中,读者从中读取消息。该段的大小由
ShmSize
定义。默认值为 4MB。 -
ShmSpinTime
版本(或更高) NDB 8.0.13 类型或单位 整数 默认 0 范围 0 - 2000 重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13) 接收时,等待睡眠之前的时间,单位为微秒。
-
SigNum
版本(或更高) NDB 8.0.13 类型或单位 无符号 默认 [...] 范围 0 - 4294967039 (0xFFFFFEFF) 已弃用 是(在 NDB 7.6 中) 重启类型 节点重启: 需要进行滚动重启。 (NDB 8.0.13) 此参数以前用于覆盖操作系统信号编号;在 NDB 8.0 中不再使用,对其进行的任何设置都将被忽略。
重启类型。 本节参数描述中使用的重启类型信息如下表所示:
表 25.22 NDB 集群重启类型
符号 | 重启类型 | 描述 |
---|---|---|
N | 节点 | 可以使用滚动重启更新该参数(参见第 25.6.5 节,“执行 NDB 集群的滚动重启”) |
S | 系统 | 必须完全关闭所有集群节点,然后重新启动,以更改此参数 |
I | 初始 | 数据节点必须使用--initial 选项重新启动 |
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-data-node-memory-management.html
25.4.3.13 数据节点内存管理
所有数据节点的内存分配都在节点启动时执行。这确保数据节点可以稳定运行,而不使用交换内存,以便NDB
可用于延迟敏感(实时)应用程序。数据节点启动时分配以下类型的内存:
-
数据内存
-
共享全局内存
-
重做日志缓冲区
-
作业缓冲区
-
发送缓冲区
-
用于磁盘数据记录的页缓存
-
模式事务内存
-
事务内存
-
撤销日志缓冲区
-
查询内存
-
块对象
-
模式内存
-
块数据结构
-
长信号内存
-
共享内存通信缓冲区
NDB
内存管理器,管理大部分数据节点内存,处理以下内存资源:
-
数据内存(
DataMemory
) -
重做日志缓冲区(
RedoBuffer
) -
作业缓冲区
-
发送缓冲区(
SendBufferMemory
,TotalSendBufferMemory
,ExtraSendBufferMemory
) -
磁盘数据记录页缓存(
DiskPageBufferMemory
,DiskPageBufferEntries
) -
事务内存(
TransactionMemory
) -
查询内存
-
磁盘访问记录
-
文件缓冲区
每个资源都设置了一个保留内存区域和一个最大内存区域。保留内存区域只能被其保留的资源使用,不能与其他资源共享;给定资源永远不能分配超过为其允许的最大内存的内存。没有最大内存的资源可以扩展使用内存管理器中的所有共享内存。
这些资源的全局共享内存大小由SharedGlobalMemory
配���参数控制(默认值:128 MB)。
数据内存始终保留,从共享内存中不获取任何内存。它使用DataMemory
配置参数进行控制,其最大值为 16384 GB。DataMemory
是记录存储的地方,包括哈希索引(每行约 15 字节)、有序索引(每个索引每行 10-12 字节)和行头(每行 16-32 字节)。
重做日志缓冲区也仅使用保留内存;这由RedoBuffer
配置参数控制,该参数设置每个 LDM 线程的重做日志缓冲区大小。这意味着实际使用的内存量是此参数值乘以数据节点中的 LDM 线程数。
作业缓冲区仅使用保留内存;此内存的大小由NDB
根据各种类型线程的数量计算而得。
发送缓冲区有一个保留部分,但也可以分配额外的共享全局内存的 25%。发送缓冲区的保留大小分两步计算:
-
使用
TotalSendBufferMemory
配置参数的值(无默认值)或所有单个连接到数据节点的单个连接使用的所有单个发送缓冲区的总和。数据节点连接到所有其他数据节点,所有 API 节点和所有管理节点。这意味着,在具有 2 个数据节点,2 个管理节点和每个数据节点连接到 10 个 API 节点的集群中,每个数据节点有 13 个节点连接。由于数据节点连接的SendBufferMemory
的默认值为 2 兆字节,因此总计为 26 MB。 -
要获取发送缓冲区的总保留大小,需要将
ExtraSendBufferMemory
配置参数的值(如果有,默认值为 0)与前一步得到的值相加。
换句话说,如果已设置TotalSendBufferMemory
,则发送缓冲区大小为TotalSendBufferMemory + ExtraSendBufferMemory
;否则,发送缓冲区的大小等于([*节点连接数*] * SendBufferMemory) + ExtraSendBufferMemory
。
用于磁盘数据记录的页面缓存仅使用保留资源;此资源的大小由DiskPageBufferMemory
配置参数控制(默认为 64 MB)。还分配了 32 KB 磁盘页面条目的内存;其数量由DiskPageBufferEntries
配置参数确定(默认为 10)。
事务内存有一个保留部分,可以由NDB
计算,也可以使用在 NDB 8.0 中引入的TransactionMemory
配置参数显式设置(以前,此值始终由NDB
计算);事务内存还可以使用无限量的共享全局内存。事务内存用于处理所有操作资源,包括事务、扫描、锁定、扫描缓冲区和触发器操作。它还在更新表行时保存表行,然后在下一次提交时将它们写入数据内存。
以前,操作记录使用专用资源,其大小由多个配置参数控制。在 NDB 8.0 中,所有这些资源都从一个公共事务内存资源分配,并且还可以使用全局共享内存资源。可以使用单个TransactionMemory
配置参数来控制此资源的大小。
保留用于撤销日志缓冲区的内存可以使用InitialLogFileGroup
配置参数进行设置。如果撤销日志缓冲区是作为CREATE LOGFILE GROUP
SQL 语句的一部分创建的,则内存来自事务内存。
与磁盘数据资源相关的一些元数据资源也没有保留部分,仅使用共享全局内存。因此,共享全局共享内存在发送缓冲区、事务内存和磁盘数据元数据之间共享。
如果未设置TransactionMemory
,则根据以下参数计算:
-
MaxNoOfConcurrentOperations
-
MaxNoOfConcurrentTransactions
-
MaxNoOfFiredTriggers
-
MaxNoOfLocalOperations
-
MaxNoOfConcurrentIndexOperations
-
MaxNoOfConcurrentScans
-
MaxNoOfLocalScans
-
BatchSizePerLocalScan
-
TransactionBufferMemory
当显式设置TransactionMemory
时,上述配置参数都不用于计算内存大小。此外,参数MaxNoOfConcurrentIndexOperations
、MaxNoOfFiredTriggers
、MaxNoOfLocalOperations
和MaxNoOfLocalScans
与TransactionMemory
不兼容,不能与之同时设置;如果在config.ini
配置文件中设置了TransactionMemory
并且这四个参数中的任何一个也被设置,管理服务器将无法启动。注意:在 NDB 8.0.29 之前,对于MaxNoOfFiredTriggers
、MaxNoOfLocalScans
或MaxNoOfLocalOperations
,这个限制并未强制执行(Bug #102509,Bug #32474988)。
MaxNoOfConcurrentIndexOperations
、MaxNoOfFiredTriggers
、MaxNoOfLocalOperations
和MaxNoOfLocalScans
参数在 NDB 8.0 中已弃用;您应该期望它们在将来的 MySQL NDB Cluster 版本中被移除。
在 NDB 8.0.29 之前,不可能同时设置MaxNoOfConcurrentTransactions
、MaxNoOfConcurrentOperations
或MaxNoOfConcurrentScans
与TransactionMemory
。
事务内存资源包含大量内存池。每个内存池代表一个对象类型,并包含一组对象;每个池在启动时包括一个分配给池的保留部分;这些保留内存永远不会返回到共享全局内存。使用仅具有单个级别的数据结构来查找保留记录,以便快速检索,这意味着每个池中应该保留一定数量的记录。每个池中保留的记录数量对性能和保留内存分配有一定影响,但通常只在某些非常高级的用例中需要显式设置保留大小。
可通过设置以下配置参数来控制池的保留部分的大小:
-
ReservedConcurrentIndexOperations
-
ReservedFiredTriggers
-
ReservedConcurrentOperations
-
ReservedLocalScans
-
ReservedConcurrentTransactions
-
ReservedConcurrentScans
-
ReservedTransactionBufferMemory
对于上述列出的任何未在config.ini
中明确设置的参数,保留设置将计算为相应最大设置的 25%。例如,如果未设置,ReservedConcurrentIndexOperations
将计算为MaxNoOfConcurrentIndexOperations
的 25%,ReservedLocalScans
将计算为MaxNoOfLocalScans
的 25%。
注意
如果未设置ReservedTransactionBufferMemory
,则将计算为TransactionBufferMemory
的 25%。
保留记录数是每个数据节点的;这些记录在每个节点上处理它们的线程(LDM 和 TC 线程)之间分割。在大多数情况下,仅设置TransactionMemory
就足够了,并且允许池中的记录数由其值控制。
MaxNoOfConcurrentScans
限制每个 TC 线程中可以活动的并发扫描数。这对防止集群过载很重要。
MaxNoOfConcurrentOperations
限制可以同时活动的更新事务中的操作数。(简单读取不受此参数影响。)需要限制此数字,因为需要为节点故障处理预分配内存,并且在处理最大数量的活动操作时必须为处理节点故障时一个 TC 线程中的最大数量的活动操作提供资源。MaxNoOfConcurrentOperations
必须在所有节点上设置为相同的数字(最简单的方法是在config.ini
全局配置文件的[ndbd default]
部分中一次设置它的值)。虽然可以使用滚动重启(参见第 25.6.5 节“执行 NDB Cluster 的滚动重启”)来增加其值,但由于在滚动重启期间可能发生节点故障的可能性,不建议以这种方式减少其值。
可以通过MaxDMLOperationsPerTransaction
参数限制 NDB Cluster 中单个事务的大小。如果未设置此参数,则一个事务的大小受MaxNoOfConcurrentOperations
限制,因为此参数限制每个 TC 线程的并发操作总数。
模式内存大小由以下一组配置参数控制:
-
MaxNoOfSubscriptions
-
MaxNoOfSubscribers
-
MaxNoOfConcurrentSubOperations
-
MaxNoOfAttributes
-
MaxNoOfTables
-
MaxNoOfOrderedIndexes
-
MaxNoOfUniqueHashIndexes
-
MaxNoOfTriggers
节点数和 LDM 线程数也对模式内存大小产生重大影响,因为每个表和每个分区(及其片段副本)的分区数必须在模式内存中表示。
此外,在启动期间还分配了一些其他记录。这些记录相对较小。每个线程中的每个块包含使用内存的块对象。与其他数据节点内存结构相比,这种内存大小通常也相当小。
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-config-send-buffers.html
25.4.3.14 配置 NDB Cluster 发送缓冲区参数
NDB
内核采用统一的发送缓冲区,其内存是动态分配的,来自所有传输器共享的池。这意味着发送缓冲区的大小可以根据需要进行调整。统一发送缓冲区的配置可以通过设置以下参数来完成:
-
**TotalSendBufferMemory. ** 此参数可为所有类型的 NDB Cluster 节点设置,即可在
config.ini
文件的[ndbd]
、[mgm]
和[api]
(或[mysql]
)部分中设置。它表示每个设置了该参数的节点为所有配置的传输器分配的总内存量(以字节为单位)。如果设置,其最小值为 256KB;最大值为 4294967039。为了向后兼容现有配置,此参数的默认值为所有配置传输器的最大发送缓冲区大小之和,再加上每个传输器额外的 32KB(一个页面)。最大值取决于传输器类型,如下表所示:
表 25.23 具有最大发送缓冲区大小的传输器类型
传输器 最大发送缓冲区大小(字���) TCP SendBufferMemory
(默认值 = 2M)SHM 20K 这使得现有配置可以在与 NDB Cluster 6.3 及更早版本几乎相同的方式下运行,每个传输器都有相同数量的内存和发送缓冲区空间可用。然而,一个传输器未使用的内存对其他传输器不可用。
-
**OverloadLimit. ** 此参数用于
config.ini
文件中的[tcp]
部分,表示在连接被认为过载之前必须存在于发送缓冲区中的未发送数据量(以字节为单位)。当发生这种过载情况时,影响过载连接的事务将因 NDB API 错误 1218(NDB 内核中的发送缓冲区过载)而失败,直到过载状态消失。默认值为 0,此时对于给定连接,有效的过载限制计算为SendBufferMemory * 0.8
。此参数的最大值为 4G。 -
**SendBufferMemory. ** 此值表示单个传输器可以使用的内存量的硬限制,该内存量来自由
TotalSendBufferMemory
指定的整个池。然而,所有配置的传输器的SendBufferMemory
总和可能大于为给定节点设置的TotalSendBufferMemory
。当许多节点在使用时,这是一种节省内存的方法,只要所有传输器在同一时间从未同时需要最大内存量。
你可以使用ndbinfo.transporters
表来监控发送缓冲区内存使用情况,并检测可能对性能产生不利影响的减速和过载条件。
25.4.4 使用高速互连与 NDB 集群
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-interconnects.html
甚至在 1996 年设计NDBCLUSTER
之前,就已经明显地意识到在构建并行数据库中将会遇到的一个主要问题是网络中节点之间的通信。因此,NDBCLUSTER
从一开始就被设计成允许使用多种不同的数据传输机制或传输器。
NDB Cluster 8.0 支持其中三种(参见第 25.2.1 节,“NDB Cluster 核心概念”)。第四种传输器,可扩展一致性接口(SCI),也曾在非常旧的NDB
版本中得到支持。这需要专门的硬件、软件和现在不再可用的 MySQL 二进制文件。
25.5 NDB 集群程序
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs.html
25.5.1 ndbd — NDB 集群数据节点守护程序
25.5.2 ndbinfo_select_all — 从 ndbinfo 表中选择
25.5.3 ndbmtd — NDB 集群数据节点守护程序(多线程)
25.5.4 ndb_mgmd — NDB 集群管理服务器守护程序
25.5.5 ndb_mgm — NDB 集群管理客户端
25.5.6 ndb_blob_tool — 检查和修复 NDB 集群表的 BLOB 和 TEXT 列
25.5.7 ndb_config — 提取 NDB 集群配置信息
25.5.8 ndb_delete_all — 从 NDB 表中删除所有行
25.5.9 ndb_desc — 描述 NDB 表
25.5.10 ndb_drop_index — 从 NDB 表中删除索引
25.5.11 ndb_drop_table — 删除 NDB 表
25.5.12 ndb_error_reporter — NDB 错误报告实用程序
25.5.13 ndb_import — 将 CSV 数据导入 NDB
25.5.14 ndb_index_stat — NDB 索引统计实用程序
25.5.15 ndb_move_data — NDB 数据复制实用程序
25.5.16 ndb_perror — 获取 NDB 错误消息信息
25.5.17 ndb_print_backup_file — 打印 NDB 备份文件内容
25.5.18 ndb_print_file — 打印 NDB 磁盘数据文件内容
25.5.19 ndb_print_frag_file — 打印 NDB 片段列表文件内容
25.5.20 ndb_print_schema_file — 打印 NDB 模式文件内容
25.5.21 ndb_print_sys_file — 打印 NDB 系统文件内容
25.5.22 ndb_redo_log_reader — 检查和打印集群重做日志的内容
25.5.23 ndb_restore — 恢复 NDB 集群备份
25.5.24 ndb_secretsfile_reader — 从加密的 NDB 数据文件中获取密钥信息
25.5.25 ndb_select_all — 打印 NDB 表中的行
25.5.26 ndb_select_count — 打印 NDB 表的行数
25.5.27 ndb_show_tables — 显示 NDB 表的列表
25.5.28 ndb_size.pl — NDBCLUSTER 大小需求估算器
25.5.29 ndb_top — 查看 NDB 线程的 CPU 使用信息
25.5.30 ndb_waiter — 等待 NDB 集群达到给定状态
25.5.31 ndbxfrm — 压缩、解压、加密和解密由 NDB 集群创建的文件
使用和管理 NDB 集群需要几个专门的程序,在本章中我们将对这些程序进行描述。我们讨论这些程序在 NDB 集群中的目的,如何使用这些程序以及每个程序可用的启动选项。
这些程序包括 NDB 集群数据、管理和 SQL 节点进程(ndbd, ndbmtd, ndb_mgmd, 和 mysqld) 以及管理客户端(ndb_mgm)。
有关将mysqld用作 NDB 集群进程的信息,请参阅第 25.6.10 节,“NDB 集群的 MySQL 服务器用法”。
其他NDB
实用程序、诊断和示例程序包含在 NDB 集群分发中。这些包括 ndb_restore, ndb_show_tables, 和 ndb_config. 这些程序也在本节中介绍。
25.5.1 ndbd — NDB 集群数据节点守护进程
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndbd.html
ndbd 是用于处理使用 NDB Cluster 存储引擎的表中所有数据的进程。这是使数据节点能够完成分布式事务处理、节点恢复、写入磁盘的检查点、在线备份以及相关任务的进程。
在 NDB 集群中,一组 ndbd 进程协作处理数据。这些进程可以在同一台计算机(主机)上执行,也可以在不同计算机上执行。数据节点和集群主机之间的对应关系是完全可配置的。
可用于 ndbd 的选项显示在下表中。表后面会有额外的描述。
表 25.24 与程序 ndbd 一起使用的命令行选项
格式 | 描述 | 添加、弃用或移除 |
---|---|---|
--bind-address=name |
本地绑定地址 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--character-sets-dir=path |
包含字符集的目录 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--connect-delay=# |
--connect-retry-delay 的已弃用同义词,应使用该选项代替 | 移除:NDB 8.0.28 |
--connect-retries=# |
设置在放弃之前重试连接的次数;0 表示仅尝试 1 次(无重试);-1 表示持续无限重试 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--connect-retry-delay=# |
尝试联系管理服务器之间的等待时间,单位为秒;0 表示尝试之间不等待 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--connect-string=connection_string ,-c connection_string |
与 --ndb-connectstring 相同 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--core-file |
在错误时写入核心文件;用于调试 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--daemon ,-d |
以守护进程模式启动 ndbd(默认);可使用 --nodaemon 参数覆盖 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--defaults-extra-file=path |
在全局文件读取后读取给定文件 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--defaults-file=path |
仅从给定文件中读取默认选项 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--defaults-group-suffix=string |
也读取连接(concat(group, suffix))的组 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--filesystem-password=password |
节点文件系统加密的密码;可以从标准输入、终端或 my.cnf 文件中传递 | 新增:NDB 8.0.31 |
--filesystem-password-from-stdin={TRUE|FALSE} |
从标准输入获取节点文件系统加密的密码 | 新增:NDB 8.0.31 |
--foreground |
在前台运行 ndbd,用于调试目的(意味着--nodaemon) | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--help ,-? |
显示帮助文本并退出 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--initial |
执行 ndbd 的初始启动,包括文件系统清理;在使用此选项之前请参考文档 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--initial-start |
执行部分初始启动(需要--nowait-nodes) | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
[--install[=name]](mysql-cluster-programs-ndbd.html#option_ndbd_install) |
用于将数据节点进程安装为 Windows 服务;不适用于其他平台 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--logbuffer-size=# |
控制日志缓冲区的大小;用于在生成许多日志消息时进行调试;默认值对于正常操作足够 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--login-path=path |
从登录文件中读取给定路径 | (在基于 MySQL 8.0 的所有 NDB 版本���支持) |
--ndb-connectstring=connection_string ,-c connection_string |
设置连接到 ndb_mgmd 的连接字符串。语法:"[nodeid=id;][host=]hostname[:port]"。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--ndb-mgmd-host=connection_string ,-c connection_string |
与--ndb-connectstring 相同 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--ndb-nodeid=# |
设置此节点的节点 ID,覆盖--ndb-connectstring 设置的任何 ID |
(适用于基于 MySQL 8.0 的所有 NDB 版本) |
--nodaemon |
不将 ndbd 作为守护进程启动;供测试目的使用 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--no-defaults |
不从登录文件以外的任何选项文件中读取默认选项 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--nostart ,-n |
不立即启动 ndbd;ndbd 等待从 ndb_mgm 启动的命令 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--nowait-nodes=list |
不等待这些数据节点启动(以逗号分隔的节点 ID 列表);需要--ndb-nodeid | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--ndb-optimized-node-selection |
启用用于事务节点选择的优化。默认启用;使用--skip-ndb-optimized-node-selection 来禁用 | 已移除:8.0.31 |
--print-defaults |
打印程序参数列表并退出 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
[--remove[=name]](mysql-cluster-programs-ndbd.html#option_ndbd_remove) |
用于删除先前安装为 Windows 服务的数据节点进程;不适用于其他平台 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--usage ,-? |
显示帮助文本并退出;与--help 相同 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--verbose ,-v |
将额外的调试信息写入节点日志 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--version ,-V |
显示版本信息并退出 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
格式 | 描述 | 添加、弃用或移除 |
注意
所有这些选项也适用于此程序的多线程版本(ndbmtd")),您可以在本节中出现的“ndbd”处用“ndbmtd")”替换。
-
--bind-address
命令行格式 --bind-address=name
类型 字符串 默认值 导致 ndbd 绑定到特定的网络接口(主机名或 IP 地址)。此选项没有默认值。
-
--character-sets-dir
命令行格式 --character-sets-dir=path
包含字符集的目录。
-
--connect-delay=*
#*
命令行格式 --connect-delay=#
已弃用 是(在 8.0.28-ndb-8.0.28 中移除) 类型 数值 默认值 5
最小值 0
最大值 3600
确定在启动时尝试联系管理服务器之间等待的时间(尝试次数由
--connect-retries
选项控制)。默认值为 5 秒。此选项已弃用,并可能在将来的 NDB Cluster 版本中删除。请改用
--connect-retry-delay
。 -
--connect-retries=*
#*
命令行格式 --connect-retries=#
类型 数值 默认值 12
最小值(≥ 8.0.28-ndb-8.0.28) -1
最小值 -1
最小值 -1
最小值(≤ 8.0.27-ndb-8.0.27) 0
最大值 65535
设置在放弃之前重试连接的次数;0 表示仅 1 次尝试(无重试)。默认值为 12 次尝试。尝试之间的等待时间由
--connect-retry-delay
选项控制。从 NDB 8.0.28 开始,您可以将此选项设置为 -1,在这种情况下,数据节点进程将持续不断地尝试连接。
-
--connect-retry-delay=*
#*
命令行格式 --connect-retry-delay=#
类型 数值 默认值 5
最小值 0
最大值 4294967295
确定在启动时尝试联系管理服务器之间等待的时间(尝试之间的时间由
--connect-retries
选项控制)。默认值为 5 秒。此选项取代了
--connect-delay
选项,该选项现已弃用并可能在将来的 NDB Cluster 版本中删除。此选项的短形式
-r
自 NDB 8.0.28 起已弃用,并可能在将来的 NDB Cluster 版本中删除。请改用长形式。 -
--connect-string
命令行格式 --connect-string=connection_string
类型 字符串 默认值 [none]
与
--ndb-connectstring
相同。 -
--core-file
命令行格式 --core-file
在错误时写入核心文件;用于调试。
-
--daemon
,-d
命令行格式 --daemon
指示ndbd或ndbmtd")作为守护进程执行。这是默认行为。
--nodaemon
可用于阻止进程作为守护进程运行。在 Windows 平台上运行ndbd或ndbmtd")时,此选项无效。
-
--defaults-extra-file
命令行格式 --defaults-extra-file=path
类型 字符串 默认值 [none]
在全局文件读取后读取给定文件。
-
--defaults-file
命令行格式 --defaults-file=path
类型 字符串 默认值 [none]
仅从给定文件读取默认选项。
-
--defaults-group-suffix
命令行格式 --defaults-group-suffix=string
类型 字符串 默认值 [none]
还读取带有 concat(group, suffix)的组。
-
--filesystem-password
命令行格式 --filesystem-password=password
引入 8.0.31-ndb-8.0.31 通过
stdin
、tty
或my.cnf
文件将文件系统加密和解密密码传递给数据节点进程。需要
EncryptedFileSystem = 1
。更多信息,请参见第 25.6.14 节,“NDB 集群的文件系统加密”。
-
--filesystem-password-from-stdin
命令行格式 --filesystem-password-from-stdin={TRUE|FALSE}
引入版本 8.0.31-ndb-8.0.31 将文件系统加密和解密密码传递给数据节点进程,仅从
stdin
。需要
EncryptedFileSystem = 1
。更多信息,请参见第 25.6.14 节,“NDB 集群的文件系统加密”。
-
--foreground
命令行格式 --foreground
导致ndbd或ndbmtd")作为前台进程执行,主要用于调试目的。此选项意味着
--nodaemon
选项。在 Windows 平台上运行ndbd或ndbmtd")时,此选项不起作用。
-
--help
命令行格式 --help
显示帮助文本并退出。
-
--initial
命令行格式 --initial
指示ndbd执行初始启动。初始启动会擦除早期实例的恢复目的创建的任何文件,并重新创建恢复日志文件。在某些操作系统上,此过程可能需要相当长的时间。
只有在非常特殊的情况下才应使用
--initial
启动,因为此选项会导致从 NDB 集群文件系统中删除所有文件并重新创建所有重做日志文件。这些情况列在这里:-
在执行更改了任何文件内容的软件升级时。
-
在使用新版本的ndbd重新启动节点时。
-
作为最后一招的措施,当由于某种原因节点重新启动或系统重启反复失败时。在这种情况下,请注意由于数据文件的破坏,此节点将不再能用于恢复数据。
警告
为避免最终可能发生的数据丢失,建议您不要将
--initial
选项与StopOnError = 0
一起使用。相反,在集群启动后,只需在config.ini
中将StopOnError
设置为 0,然后正常重新启动数据节点,即不使用--initial
选项。有关此问题的详细说明,请参阅StopOnError
参数的描述。(Bug #24945638)使用此选项会阻止
StartPartialTimeout
和StartPartitionedTimeout
配置参数产生任何效果。重要
此选项不会影响已由受影响节点创建的备份文件。
在 NDB 8.0.21 之前,
--initial
选项也不会影响任何磁盘数据文件。在 NDB 8.0.21 及更高版本中,当用于执行集群的初始重新启动时,该选项会导致删除与磁盘数据表空间相关的所有数据文件以及与先前存在于此数据节点上的日志文件组相关联的撤销日志文件(请参阅第 25.6.11 节,“NDB 集群磁盘数据表”)。此选项还不会影响数据节点在从已经运行的数据节点(除非它们也是作为初始重新启动的一部分而使用
--initial
启动)中自动恢复数据。在正常运行的 NDB 集群中,此数据恢复会自动发生,不需要用户干预。在第一次启动集群时(即在创建任何数据节点文件之前),可以使用此选项;但是,这不是必需的。
-
-
--initial-start
命令行格式 --initial-start
此选项用于执行集群的部分初始启动。每个节点都应该使用此选项启动,以及
--nowait-nodes
。假设您有一个 4 节点集群,其数据节点的 ID 分别为 2、3、4 和 5,您希望仅使用节点 2、4 和 5 执行部分初始启动,即省略节点 3:
$> ndbd --ndb-nodeid=2 --nowait-nodes=3 --initial-start $> ndbd --ndb-nodeid=4 --nowait-nodes=3 --initial-start $> ndbd --ndb-nodeid=5 --nowait-nodes=3 --initial-start
使用此选项时,您还必须使用
--ndb-nodeid
选项指定要启动的数据节点的节点 ID。重要
不要将此选项与ndb_mgmd的
--nowait-nodes
选项混淆,该选项可用于启用配置有多个管理服务器的集群在不所有管理服务器在线的情况下启动。 -
命令行格式 --install[=name]
平台特定 Windows 类型 字符串 默认值 ndbd
安装ndbd作为 Windows 服务。可选地,您可以为服务指定一个名称;如果未设置,则服务名称默认为
ndbd
。虽然最好在my.ini
或my.cnf
配置文件中指定其他ndbd程序选项,但也可以与--install
一起使用。但是,在这种情况下,必须首先指定--install
选项,然后再给出任何其他选项,以确保 Windows 服务安装成功。通常不建议将此选项与
--initial
选项一起使用,因为这会导致每次停止和启动服务时数据节点文件系统被擦除并重建。如果您打算与其他影响数据节点启动的ndbd选项一起使用--initial-start
、--nostart
和--nowait-nodes
一起使用--install
,则应该非常小心,并确保您充分理解并考虑可能的后果。--install
选项对非 Windows 平台无效。 -
--logbuffer-size=*
#*
命令行格式 --logbuffer-size=#
类型 整数 默认值 32768
最小值 2048
最大值 4294967295
设置数据节点日志缓冲区的大小。在进行大量额外日志记录的调试时,如果有太多日志消息,日志缓冲区可能会耗尽空间,从而可能会丢失一些日志消息。在正常操作中不应发生这种情况。
-
--login-path
命令行格式 --login-path=path
类型 字符串 默认值 [none]
从登录文件中读取给定路径。
-
--ndb-connectstring
命令行格式 --ndb-connectstring=connection_string
类型 字符串 默认值 [无]
设置连接到 ndb_mgmd 的连接字符串。语法:"[nodeid=id;][host=]hostname[:port]"。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目。
-
--ndb-mgmd-host
命令行格式 --ndb-mgmd-host=connection_string
类型 字符串 默认值 [无]
与
--ndb-connectstring
相同。 -
--ndb-nodeid
命令行格式 --ndb-nodeid=#
类型 整数 默认值 [无]
设置此节点的节点 ID,覆盖由--ndb-connectstring 设置的任何 ID。
-
--ndb-optimized-node-selection
命令行格式 --ndb-optimized-node-selection
已移除 8.0.31 启用优化以选择事务节点。默认情况下启用;使用
--skip-ndb-optimized-node-selection
来禁用。 -
--nodaemon
命令行格式 --nodaemon
防止ndbd或ndbmtd")作为守护进程执行。此选项覆盖
--daemon
选项。在调试二进制文件时,将输出重定向到屏幕非常有用。在 Windows 上,ndbd和ndbmtd")的默认行为是在前台运行,使得此选项在 Windows 平台上不必要,对 Windows 平台没有影响。
-
--no-defaults
命令行格式 --no-defaults
不要从登录文件以外的任何选项文件中读取默认选项。
-
--nostart
,-n
命令行格式 --nostart
指示ndbd 不自动启动。当使用此选项时,ndbd 连接到管理服务器,从中获取配置数据,并初始化通信对象。但是,直到管理服务器明确要求执行引擎启动为止,它才不会实际启动执行引擎。这可以通过在管理客户端中发出适当的
START
命令来实现(参见第 25.6.1 节,“NDB 集群管理客户端中的命令”)。 -
--nowait-nodes=*
node_id_1*[, *
node_id_2*[, ...]]
命令行格式 --nowait-nodes=list
类型 字符串 默认值 此选项接受一个数据节点列表,集群在启动之前不等待这些节点。
这可以用于以分区状态启动集群。例如,在一个 4 节点集群中只有一半数据节点(节点 2、3、4 和 5)运行时,可以使用
--nowait-nodes=3,5
启动每个ndbd 进程。在这种情况下,集群在节点 2 和 4 连接后立即启动,并且不会等待StartPartitionedTimeout
毫秒,以等待节点 3 和 5 连接,否则会等待。如果您想要启动与前面示例中相同的集群,但不包括一个ndbd(例如,假设节点 3 的主机机器发生了硬件故障),那么使用
--nowait-nodes=3
启动��点 2、4 和 5。然后,集群在节点 2、4 和 5 连接后立即启动,并且不等待节点 3 启动。 -
--print-defaults
命令行格式 --print-defaults
打印程序参数列表并退出。
-
命令行格式 --remove[=name]
特定平台 Windows 类型 字符串 默认值 ndbd
导致之前安装为 Windows 服务的ndbd 进程被移除。可选地,您可以指定要卸载的服务的名称;如果未设置,则服务名称默认为
ndbd
。--remove
选项在非 Windows 平台上没有效果。 -
--usage
命令行格式 --usage
显示帮助文本并退出;与--help 相同。
-
--verbose
,-v
导致额外的调试输出写入节点日志。
您还可以在数据节点运行时使用
NODELOG DEBUG ON
和NODELOG DEBUG OFF
来启用和禁用此额外的日志记录。 -
--version
命令行格式 --version
显示版本信息并退出。
ndbd生成一组日志文件,这些文件放置在config.ini
配置文件中的DataDir
指定的目录中。
下面列出了这些日志文件。node_id
是并代表节点的唯一标识符。例如,ndb_2_error.log
是由节点 ID 为2
的数据节点��成的错误日志。
-
ndb_*
node_id*_error.log
是一个文件,其中包含引用的ndbd进程遇到的所有崩溃的记录。此文件中的每个记录都包含一个简短的错误字符串和此崩溃的跟踪文件的引用。此文件中的典型条目可能如下所示:Date/Time: Saturday 30 July 2004 - 00:20:01 Type of error: error Message: Internal program error (failed ndbrequire) Fault ID: 2341 Problem data: DbtupFixAlloc.cpp Object of reference: DBTUP (Line: 173) ProgramName: NDB Kernel ProcessID: 14909 TraceFile: ndb_2_trace.log.2 ***EOM***
可在ndbd退出代码和数据节点进程意外关闭时生成的消息列表中找到可能的列表。
重要
错误日志文件中的最后一条记录不一定是最新的(也不太可能是)。错误日志中的条目不按时间顺序列出;而是对应于
ndb_*
node_id*_trace.log.next
文件中确定的跟踪文件顺序。因此,错误日志条目以循环而非顺序方式被覆盖。 -
ndb_*
node_id*_trace.log.*
trace_id*
是描述错误发生前发生的情况的跟踪文件。这些信息对 NDB Cluster 开发团队进行分析很有用。可以配置在旧文件被覆盖之前创建的这些跟踪文件的数量。
trace_id
是一个数字,每个连续的跟踪文件都会递增。 -
ndb_*
node_id*_trace.log.next
是跟踪下一个要分配的跟踪文件编号的文件。 -
ndb_*
node_id*_out.log
是一个文件,其中包含ndbd进程输出的任何数据。仅当ndbd作为守护进程启动时才会创建此文件,这是默认行为。 -
ndb_*
node_id*.pid
是一个文件,包含了作为守护进程启动时ndbd进程的进程 ID。它还充当锁文件,以避免使用相同标识符启动节点。 -
ndb_*
node_id*_signal.log
是仅在调试版本的ndbd中使用的文件,在这种版本中,可以跟踪所有传入、传出和内部消息及其数据在ndbd进程中的情况。
不建议使用通过 NFS 挂载的目录,因为在某些环境中,这可能会导致问题,即使进程终止后,.pid
文件上的锁仍然有效。
要启动ndbd,可能还需要指定管理服务器的主机名和其监听的端口。还可以选择指定进程要使用的节点 ID。
$> ndbd --connect-string="nodeid=2;host=ndb_mgmd.mysql.com:1186"
有关此问题的更多信息,请参见第 25.4.3.3 节,“NDB 集群连接字符串”。有关数据节点配置参数的更多信息,请参见第 25.4.3.6 节,“定义 NDB 集群数据节点”。
当ndbd启动时,实际上启动了两个进程。第一个称为“angel 进程”,它的唯一工作是发现执行进程何时完成,然后重新启动ndbd进程(如果配置为这样做)。因此,如果尝试使用 Unix 的kill命令杀死ndbd,则需要杀死这两个进程,首先是 angel 进程。终止ndbd进程的首选方法是使用管理客户端并从那里停止进程。
执行过程使用一个线程来读取、写入和扫描数据,以及进行所有其他活动。该线程是异步实现的,因此可以轻松处理成千上万个并发操作。此外,一个看门狗线程监督执行线程,以确保它不会陷入无限循环。一组线程处理文件 I/O,每个线程可以处理一个打开的文件。线程还可以被用于ndbd进程中的传输连接。在执行大量操作(包括更新)的多处理器系统中,ndbd进程可以使用高达 2 个 CPU。
对于具有多个 CPU 的机器,可以使用几个属于不同节点组的ndbd进程;然而,这样的配置仍被视为实验性的,在生产环境中不支持 MySQL 8.0。请参阅第 25.2.7 节,“NDB 集群的已知限制”。
25.5.2 ndbinfo_select_all — 从 ndbinfo 表中选择
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndbinfo-select-all.html
ndbinfo_select_all 是一个客户端程序,从 ndbinfo
数据库中的一个或多个表中选择所有行和列
并非所有在 mysql 客户端中可用的 ndbinfo
表都可以被此程序读取(请参见本节后面)。此外,ndbinfo_select_all 可以显示一些无法使用 SQL 访问的 ndbinfo
内部表的信息,包括 tables
和 columns
元数据表。
要使用 ndbinfo_select_all 从一个或多个 ndbinfo
表中选择,需要在调用程序时提供表的名称,如下所示:
$> ndbinfo_select_all *table_name1* [*table_name2*] [...]
例如:
$> ndbinfo_select_all logbuffers logspaces
== logbuffers ==
node_id log_type log_id log_part total used high
5 0 0 0 33554432 262144 0
6 0 0 0 33554432 262144 0
7 0 0 0 33554432 262144 0
8 0 0 0 33554432 262144 0
== logspaces ==
node_id log_type log_id log_part total used high
5 0 0 0 268435456 0 0
5 0 0 1 268435456 0 0
5 0 0 2 268435456 0 0
5 0 0 3 268435456 0 0
6 0 0 0 268435456 0 0
6 0 0 1 268435456 0 0
6 0 0 2 268435456 0 0
6 0 0 3 268435456 0 0
7 0 0 0 268435456 0 0
7 0 0 1 268435456 0 0
7 0 0 2 268435456 0 0
7 0 0 3 268435456 0 0
8 0 0 0 268435456 0 0
8 0 0 1 268435456 0 0
8 0 0 2 268435456 0 0
8 0 0 3 268435456 0 0
$>
可用于 ndbinfo_select_all 的选项显示在下表中。表后面会有额外的描述。
表 25.25 与程序 ndbinfo_select_all 一起使用的命令行选项
格式 | 描述 | 添加、弃用或移除 |
---|---|---|
--character-sets-dir=path |
包含字符集的目录 | 移除:8.0.31 |
--connect-retries=# |
放弃之前重试连接的次数 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--connect-retry-delay=# |
尝试联系管理服务器之间等待的秒数 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--connect-string=connection-string ,-c connection_string |
与 --ndb-connectstring 相同 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--core-file |
在错误时写入核心文件;用于调试 | 移除:8.0.31 |
--database=db_name ,-d |
表所在数据库的名称 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--defaults-extra-file=path |
在读取全局文件后读取给定文件 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--defaults-file=path |
仅从给定文件中读取默认选项 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--defaults-group-suffix=string |
还读取带有 concat(group, suffix) 的组 |
(在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--delay=# |
设置循环之间的延迟时间(秒) | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--help ,-? |
显示帮助文本并退出 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--login-path=path |
从登录文件中读取给定路径 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--loops=# ,-l |
设置执行选择操作的次数 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--ndb-connectstring=connection-string ,-c |
设置连接到 ndb_mgmd 的连接字符串。语法: "[nodeid=id;][host=]hostname[:port]"。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目 |
(在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--ndb-mgmd-host=connection-string ,-c |
与 --ndb-connectstring 相同 |
(在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--ndb-nodeid=# |
为此节点设置节点 ID,覆盖 --ndb-connectstring 设置的任何 ID |
(在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--no-defaults |
不要从登录文件以外的任何选项文件中读取默认选项 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--ndb-optimized-node-selection |
启用优化以选择事务节点。默认启用;使用 --skip-ndb-optimized-node-selection 来禁用 | 移除:8.0.31 |
--parallelism=# ,-p |
设置并行度 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--print-defaults |
打印程序参数列表并退出 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--usage ,-? |
显示帮助文本并退出;与 --help 相同 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--version ,-V |
显示版本信息并退出 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
格式 | 描述 | 添加、弃用或移除 |
-
--character-sets-dir
命令行格式 --character-sets-dir=path
移除 8.0.31 包含字符集的目录。
-
--core-file
命令行格式 --core-file
移除 8.0.31 在错误时写入核心文件;用于调试。
-
--connect-retries
命令行格式 --connect-retries=#
类型 整数 默认值 12
最小值 0
最大值 12
在放弃之前重试连接的次数。
-
--connect-retry-delay
命令行格式 --connect-retry-delay=#
类型 整数 默认值 5
最小值 0
最大值 5
尝试联系管理服务器之间等待的秒数。
-
--connect-string
命令行格式 --connect-string=connection-string
类型 字符串 默认值 [none]
与
--ndb-connectstring
相同。 -
--defaults-extra-file
命令行格式 --defaults-extra-file=path
类型 字符串 默认值 [none]
在全局文件读取后读取给定文件。
-
--defaults-file
命令行格式 --defaults-file=path
类型 字符串 默认值 [none]
仅从给定文件中读取默认选项。
-
--defaults-group-suffix
命令行格式 --defaults-group-suffix=string
类型 字符串 默认值 [none]
同时读取使用 concat(group, suffix) 的组。
-
--delay=
seconds``命令行格式 --delay=#
类型 数字 默认值 5
最小值 0
最大值 MAX_INT
此选项设置执行循环之间等待的秒数。如果
--loops
设置为 0 或 1,则无效。 -
--help
命令行格式 --help
显示帮助文本并退出。
-
--login-path
命令行格式 --login-path=path
类型 字符串 默认值 [none]
从登录文件中读取给定路径。
-
--loops=
number``,-l *
number*
命令行格式 --loops=#
类型 数字 默认值 1
最小值 0
最大值 MAX_INT
此选项设置执行选择的次数。使用
--delay
设置循环之间的时间。 -
--ndb-connectstring
命令行格式 --ndb-connectstring=connection-string
类型 字符串 默认值 [none]
设置用于连接到 ndb_mgmd 的连接字符串。语法:"[nodeid=id;][host=]hostname[:port]"。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目。
-
--ndb-mgmd-host
命令行格式 --ndb-mgmd-host=connection-string
类型 字符串 默认值 [none]
与
--ndb-connectstring
相同。 -
--ndb-nodeid
命令行格式 --ndb-nodeid=#
类型 整数 默认值 [无]
为此节点设置节点 ID,覆盖--ndb-connectstring 设置的任何 ID。
-
--ndb-optimized-node-selection
命令行格式 --ndb-optimized-node-selection
移除 8.0.31 启用节点选择优化以进行事务。默认情况下启用;使用
--skip-ndb-optimized-node-selection
来禁用。 -
--no-defaults
命令行格式 --no-defaults
不要从除登录文件之外的任何选项文件中读取默认选项。
-
--print-defaults
命令行格式 --print-defaults
打印程序参数列表并退出。
-
--usage
命令行格式 --usage
显示帮助文本并退出;与--help 相同。
-
--version
命令行格式 --version
显示版本信息并退出。
ndbinfo_select_all 无法读取以下表格:
-
arbitrator_validity_detail
-
arbitrator_validity_summary
-
cluster_locks
-
cluster_operations
-
cluster_transactions
-
disk_write_speed_aggregate_node
-
locks_per_fragment
-
memory_per_fragment
-
memoryusage
-
operations_per_fragment
-
server_locks
-
server_operations
-
server_transactions
-
table_info
25.5.3 ndbmtd — 多线程的 NDB 集群数据节点守护程序
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndbmtd.html
ndbmtd是ndbd的多线程版本,用于处理使用NDBCLUSTER
存储引擎的所有表中的数据的进程。ndbmtd旨在用于具有多个 CPU 核心的主机计算机。除非另有说明,否则ndbmtd的功能方式与ndbd相同;因此,在本节中,我们重点关注ndbmtd与ndbd的区别,并且您应该参考第 25.5.1 节,“ndbd — NDB 集群数据节点守护程序”,获取有关运行适用于数据节点进程的单线程和多线程版本的 NDB 集群数据节点的附加信息。
与ndbd一起使用的命令行选项和配置参数也适用于ndbmtd。有关这些选项和参数的更多信息,请参见第 25.5.1 节,“ndbd — NDB 集群数据节点守护程序”和第 25.4.3.6 节,“定义 NDB 集群数据节点”。
ndbmtd") 也与ndbd兼容文件系统。换句话说,运行ndbd的数据节点可以停止,用ndbmtd")替换二进制文件,然后重新启动而不会丢失任何数据。(但是,在执行此操作时,如果希望ndbmtd")以多线程方式运行,则必须在重新启动节点之前确保MaxNoOfExecutionThreads
设置为适当的值。)同样,可以通过停止节点然后在多线程二进制文件位置启动ndbd来简单地用ndbmtd")替换ndbmtd")二进制文件。在切换两者之间时,不需要使用--initial
启动数据节点二进制文件。
使用ndbmtd")与使用ndbd有两个关键区别:
-
因为ndbmtd")默认以单线程模式运行(即,它的行为类似于ndbd),所以必须配置它以使用多个线程。可以通过在
config.ini
文件中为MaxNoOfExecutionThreads
配置参数或ThreadConfig
配置参数设置适当的值来实现。使用MaxNoOfExecutionThreads
更简单,但ThreadConfig
提供更多灵活性。有关这些配置参数及其用法的更多信息,请参阅多线程配置参数(ndbmtd)。 -
由于ndbmtd")进程中的关键错误,跟ndbd失败生成的跟踪文件有些许不同。这些差异将在接下来的几段中详细讨论。
与ndbd类似,ndbmtd")生成一组日志文件,这些文件放置在config.ini
配置文件中指定的目录中,即DataDir
。除了跟踪文件外,这些文件以与ndbd生成方式相同的方式生成,并具有与ndbd生成的文件相同的名称。
在发生关键错误时,ndbmtd")会生成描述错误发生前发生的情况的跟踪文件。这些文件可以在数据节点的DataDir
中找到,对于 NDB Cluster 开发和支持团队来说,这些文件对问题分析非常有用。每个ndbmtd")线程都会生成一个跟踪文件。这些文件的命名模式如下:
ndb_*node_id*_trace.log.*trace_id*_t*thread_id*,
在这个模式中,node_id
代表集群中数据节点的唯一节点 ID,trace_id
是一个跟踪序列号,thread_id
是线程 ID。例如,如果作为 NDB Cluster 数据节点运行的ndbmtd")进程失败,节点 ID 为 3,并且MaxNoOfExecutionThreads
等于 4,那么在数据节点的数据目录中会生成四个跟踪文件。如果这是该节点第一次失败,那么这些文件的名称将是ndb_3_trace.log.1_t1
,ndb_3_trace.log.1_t2
,ndb_3_trace.log.1_t3
和ndb_3_trace.log.1_t4
。在内部,这些跟踪文件遵循与ndbd跟踪文件相同的格式。
ndbd退出代码和消息是在数据节点进程意外关闭时生成的,也被ndbmtd")使用。请参阅数据节点错误消息,以查看这些消息的列表。
注意
可以在同一 NDB 集群中的不同数据节点上同时使用ndbd和ndbmtd")。然而,这样的配置并未经过广泛测试;因此,我们目前不建议在生产环境中这样做。
25.5.4 ndb_mgmd — NDB 集群管理服务器守护程序
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-mgmd.html
管理服务器是读取集群配置文件并将此信息分发给请求的集群中的所有节点的进程。它还维护着集群活动的日志。管理客户端可以连接到管理服务器并检查集群的状态。
所有可用于ndb_mgmd的选项均列在下表中。表后面会有额外的描述。
表 25.26 与程序 ndb_mgmd 一起使用的命令行选项
格式 | 描述 | 添加、弃用或移除 |
---|---|---|
--bind-address=host |
本地绑定地址 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--character-sets-dir=path |
包含字符集的目录 | 移除:8.0.31 |
--cluster-config-suffix=name |
在读取 my.cnf 文件中的 cluster_config 部分时覆盖默认组后缀;用于测试 | 添加:8.0.24 |
[--config-cache[=TRUE|FALSE]](mysql-cluster-programs-ndb-mgmd.html#option_ndb_mgmd_config-cache) |
启用管理服务器配置缓存;默认为 true | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--config-file=file ,-f file |
指定集群配置文件;还要指定--reload 或--initial 以覆盖存在的配置缓存 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--configdir=directory ,--config-dir=directory |
指定集群管理服务器配置缓存目录 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--connect-retries=# |
放弃之前重试连接的次数 | 移除:8.0.31 |
--connect-retry-delay=# |
尝试联系管理服务器之间等待的秒数 | 移除:8.0.31 |
--connect-string=connection_string ,-c connection_string |
与--ndb-connectstring 相同 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--core-file |
在错误时写入核心文件;用于调试 | 已移除:8.0.31 |
--daemon ,-d |
以守护进程模式运行 ndb_mgmd(默认) | (在所有基于 MySQL 8.0 的 NDB 版本中支持) |
--defaults-extra-file=path |
在全局文件读取后读取给定文件 | (在所有基于 MySQL 8.0 的 NDB 版本中支持) |
--defaults-file=path |
仅从给定文件中读取默认选项 | (在所有基于 MySQL 8.0 的 NDB 版本中支持) |
--defaults-group-suffix=string |
还读取连接(group,suffix) | (在所有基于 MySQL 8.0 的 NDB 版本中支持) |
--help ,-? |
显示帮助文本并退出 | (在所有基于 MySQL 8.0 的 NDB 版本中支持) |
--initial |
导致管理服务器从配置文件重新加载配置数据,绕过配置缓存 | (在所有基于 MySQL 8.0 的 NDB 版本中支持) |
[--install[=name]](mysql-cluster-programs-ndb-mgmd.html#option_ndb_mgmd_install) |
用于将管理服务器进程安装为 Windows 服务;不适用于其他平台 | (在所有基于 MySQL 8.0 的 NDB 版本中支持) |
--interactive |
以交互模式运行 ndb_mgmd(在生产中不受官方支持;仅用于测试目的) | (在所有基于 MySQL 8.0 的 NDB 版本中支持) |
--log-name=name |
写入适用于此节点的集群日志消息时使用的名称 | (在所有基于 MySQL 8.0 的 NDB 版本中支持) |
--login-path=path |
从登录文件中读取给定路径 | (在所有基于 MySQL 8.0 的 NDB 版本中支持) |
--mycnf |
从 my.cnf 文件中读取集群配置数据 | (在所有基于 MySQL 8.0 的 NDB 版本中支持) |
--ndb-connectstring=connection_string ,-c connection_string |
设置连接到 ndb_mgmd 的连接字符串。语法:"[nodeid=id;][host=]hostname[:port]"。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目 | (在所有基于 MySQL 8.0 的 NDB 版本中支持) |
--ndb-mgmd-host=connection_string ,-c connection_string |
与 --ndb-connectstring 相同 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--ndb-nodeid=# |
为此节点设置节点 ID,覆盖 --ndb-connectstring 设置的任何 ID | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--ndb-optimized-node-selection |
启用用于事务节点选择的优化。默认启用;使用 --skip-ndb-optimized-node-selection 来禁用 | 已移除:8.0.31 |
--no-defaults |
不从登录文件以外的任何选项文件中读取默认选项 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--no-nodeid-checks |
不执行任何节点 ID 检查 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--nodaemon |
不以守护进程方式运行 ndb_mgmd | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--nowait-nodes=list |
在启动此管理服务器时不等待指定的管理节点;需要 --ndb-nodeid 选项 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--print-defaults |
打印程序参数列表并退出 | (适用于基于 MySQL 8.0 的所��� NDB 版本) |
--print-full-config ,-P |
打印完整配置并退出 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--reload |
导致管理服务器将配置文件与配置缓存进行比较 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
[--remove[=name]](mysql-cluster-programs-ndb-mgmd.html#option_ndb_mgmd_remove) |
用于删除先前安装为 Windows 服务的管理服务器进程,可选择指定要删除的服务名称;不适用于其他平台 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--skip-config-file |
不使用配置文件 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--usage ,-? |
显示帮助文本并退出;与--help 相同 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--verbose ,-v |
写入额外信息到日志 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--version ,-V |
显示版本信息并退出 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
格式 | 描述 | 添加、弃用或移除 |
-
--bind-address=*
host*
命令行格式 --bind-address=host
类型 字符串 默认值 [none]
导致管理服务器绑定到特定网络接口(主机名或 IP 地址)。此选项没有默认值。
-
--character-sets-dir
命令行格式 --character-sets-dir=path
移除版本 8.0.31 包含字符集的目录。
-
cluster-config-suffix
命令行格式 --cluster-config-suffix=name
引入版本 8.0.24 类型 字符串 默认值 [none]
在读取
my.cnf
中的集群配置部分时覆盖默认组后缀;用于测试。 -
--config-cache
命令行格式 --config-cache[=TRUE|FALSE]
类型 布尔值 默认值 TRUE
此选项的默认值为
1
(或TRUE
,或ON
),可用于禁用管理服务器的配置缓存,使其每次启动时从config.ini
读取配置(参见第 25.4.3 节,“NDB 集群配置文件”)。您可以通过以下任一选项启动ndb_mgmd进程来实现:-
--config-cache=0
-
--config-cache=FALSE
-
--config-cache=OFF
-
--skip-config-cache
仅当管理服务器在启动时没有存储配置时,才能有效使用上述选项之一。如果管理服务器发现任何配置缓存文件,则
--config-cache
选项或--skip-config-cache
选项将被忽略。因此,要禁用配置缓存,应该在管理服务器第一次启动时使用该选项。否则,即如果您希望为已经创建配置缓存的管理服务器禁用配置缓存,您必须停止管理服务器,手动删除任何现有的配置缓存文件,然后使用--skip-config-cache
(或将--config-cache
设置为 0、OFF
或FALSE
)重新启动管理服务器。配置缓存文件通常在安装目录下的名为
mysql-cluster
的目录中创建(除非使用--configdir
选项覆盖了此位置)。每次管理服务器更新其配置数据时,都会写入一个新的缓存文件。这些文件按照创建顺序顺序命名,格式如下:ndb_*node-id*_config.bin.*seq-number*
node-id
是管理服务器的节点 ID;seq-number
是一个从 1 开始的序列号。例如,如果管理服务器的节点 ID 是 5,则创建前三个配置缓存文件时,它们的名称将分别为ndb_5_config.bin.1
、ndb_5_config.bin.2
和ndb_5_config.bin.3
。如果您的意图是在不实际禁用缓存的情况下清除或重新加载配置缓存,您应该使用
--reload
或--initial
选项之一,而不是使用--skip-config-cache
来启动ndb_mgmd。要重新启用配置缓存,只需重新启动管理服务器,但不使用之前用于禁用配置缓存的
--config-cache
或--skip-config-cache
选项。ndb_mgmd 在使用
--skip-config-cache
时不会检查配置目录(--configdir
),也不会尝试创建配置目录。(Bug #13428853) -
-
--config-file=*
filename*
,-f *
filename*
命令行格式 --config-file=file
禁用方式 skip-config-file
类型 文件名 默认值 [无]
指示管理服务器应使用哪个文件作为其配置文件。默认情况下,管理服务器在与ndb_mgmd可执行文件相同目录中查找名为
config.ini
的文件;否则,��须显式指定文件名和位置。此选项没有默认值,除非管理服务器被迫读取配置文件,要么因为ndb_mgmd是使用
--reload
或--initial
选项启动的,要么因为管理服务器找不到任何配置缓存。从 NDB 8.0.26 开始,ndb_mgmd 如果指定了--config-file
而没有指定--initial
或--reload
,则拒绝启动。如果ndb_mgmd是使用
--config-cache=OFF
启动的,则还会读取--config-file
选项。有关更多信息,请参见第 25.4.3 节,“NDB 集群配置文件”。 -
--configdir=*
dir_name*
命令行格式 --configdir=directory``--config-dir=directory
类型 文件名 默认值 $INSTALLDIR/mysql-cluster
指定集群管理服务器的配置缓存目录。
--config-dir
是此选项的别名。在 NDB 8.0.27 及更高版本中,这必须是绝对路径。否则,管理服务器将拒绝启动。
-
--connect-retries
命令行格式 --connect-retries=#
移除 8.0.31 类型 整数 默认值 12
最小值 0
最大值 12
在放弃之前重试连接的次数。
-
--connect-retry-delay
命令行格式 --connect-retry-delay=#
移除 8.0.31 类型 整数 默认值 5
最小值 0
最大值 5
尝试联系管理服务器之间等待的秒数。
-
--connect-string
命令行格式 --connect-string=connection_string
类型 字符串 默认值 [none]
与--ndb-connectstring 相同。
-
--core-file
命令行格式 --core-file
已移除 8.0.31 在错误时写入核心文件;用于调试。
-
--daemon
,-d
命令行格式 --daemon
指示ndb_mgmd以守护进程方式启动。这是默认行为。
在 Windows 平台上运行ndb_mgmd时,此选项无效。
-
--defaults-extra-file
命令行格式 --defaults-extra-file=path
类型 字符串 默认值 [none]
在读取全局文件后读取给定文件。
-
--defaults-file
命令行格式 --defaults-file=path
类型 字符串 默认值 [none]
仅从给定文件中读取默认选项。
-
--defaults-group-suffix
命令行格式 --defaults-group-suffix=string
类型 字符串 默认值 [none]
也可以使用 concat(group, suffix) 读取组。
-
--help
命令行格式 --help
显示帮助文本并退出。
-
--initial
命令行格式 --initial
配置数据在内部缓存,而不是每次启动管理服务器时从集群全局配置文件中读取(请参阅第 25.4.3 节,“NDB 集群配置文件”)。使用
--initial
选项会覆盖此行为,强制管理服务器删除任何现有的缓存文件,然后从集群配置文件中重新读取配置数据并构建新的缓存。这与
--reload
选项有两种不同之处。首先,--reload
���制服务器检查配置文件与缓存的差异,并仅在文件内容与缓存不同时重新加载数据。其次,--reload
不会删除任何现有的缓存文件。如果使用
--initial
调用ndb_mgmd但找不到全局配置文件,则管理服务器无法启动。当管理服务器启动时,它会检查同一 NDB Cluster 中是否有另一个管理服务器,并尝试使用另一个管理服务器的配置数据。在执行具有多个管理节点的 NDB Cluster 的滚动重启时,此行为会产生影响。有关更多信息,请参见第 25.6.5 节,“执行 NDB Cluster 的滚动重启”。
与
--config-file
选项一起使用时,仅在实际找到配置文件时才清除缓存。 -
命令行格式 --install[=name]
平台特定 Windows 类型 字符串 默认值 ndb_mgmd
使ndb_mgmd作为 Windows 服务安装。可选地,您可以为服务指定名称;如果未设置,则服务名称默认为
ndb_mgmd
。虽然最好在my.ini
或my.cnf
配置文件中指定其他ndb_mgmd程序选项,但也可以与--install
一起使用。但是,在这种情况下,必须首先指定--install
选项,然后再给出任何其他选项,以确保 Windows 服务安装成功。通常不建议将此选项与
--initial
选项一起使用,因为这会导致配置缓存在每次停止和启动服务时被清除并重建。如果您打算使用任何其他影响管理服务器启动的ndb_mgmd选项,应格外小心,并确保您充分理解并允许可能产生的任何后果。--install
选项在非 Windows 平台上没有任何效果。 -
--interactive
命令行格式 --interactive
以交互模式启动ndb_mgmd;也就是说,一旦管理服务器运行,就会启动一个ndb_mgm客户端会话。此选项不会启动任何其他 NDB Cluster 节点。
-
--log-name=*
name*
命令行格式 --log-name=name
类型 字符串 默认值 MgmtSrvr
为此节点在集群日志中使用的名称。
-
--login-path
命令行格式 --login-path=path
类型 字符串 默认值 [none]
从登录文件中读取给定路径。
-
--mycnf
命令行格式 --mycnf
从
my.cnf
文件中读取配置数据。 -
--ndb-connectstring
命令行格式 --ndb-connectstring=connection_string
类型 字符串 默认值 [none]
设���连接字符串。语法:
[nodeid=*
id*;][host=]*
hostname*[:*
port*]
。覆盖NDB_CONNECTSTRING
和my.cnf
中的条目。如果指定了--config-file
,则忽略;从 NDB 8.0.27 开始,当同时使用两个选项时会发出警告。 -
--ndb-mgmd-host
命令行格式 --ndb-mgmd-host=connection_string
类型 字符串 默认值 [none]
与--ndb-connectstring 相同。
-
--ndb-nodeid
命令行格式 --ndb-nodeid=#
类型 整数 默认值 [none]
设置此节点的节点 ID,覆盖
--ndb-connectstring
设置的任何 ID。 -
--ndb-optimized-node-selection
命令行格式 --ndb-optimized-node-selection
已移除 8.0.31 启用优化以选择事务节点。默认启用;使用
--skip-ndb-optimized-node-selection
来禁用。 -
--no-nodeid-checks
命令行格式 --no-nodeid-checks
不执行任何节点 ID 的检查。
-
--nodaemon
命令行格式 --nodaemon
指示ndb_mgmd不作为守护进程启动。
在 Windows 上,ndb_mgmd的默认行为是在前台运行,因此在 Windows 平台上不需要此选项。
-
--no-defaults
命令行格式 --no-defaults
不从登录文件以外的任何选项文件中读取默认选项。
-
--nowait-nodes
命令行格式 --nowait-nodes=list
类型 数字 默认值 [none]
最小值 1
最大值 255
当启动配置为具有两个管理节点的 NDB Cluster 时,每个管理服务器通常会检查另一个ndb_mgmd是否也正在运行,并且另一个管理服务器的配置是否与其相同。但是,有时希望仅使用一个管理节点启动集群(并且可能稍后启动另一个ndb_mgmd)。此选项使管理节点绕过传递给此选项的任何其他管理节点的任何检查,允许集群启动,就好像配置为仅使用已启动的管理节点。
为了举例说明,考虑
config.ini
文件的以下部分(我们省略了与此示例无关的大部分配置参数):[ndbd] NodeId = 1 HostName = 198.51.100.101 [ndbd] NodeId = 2 HostName = 198.51.100.102 [ndbd] NodeId = 3 HostName = 198.51.100.103 [ndbd] NodeId = 4 HostName = 198.51.100.104 [ndb_mgmd] NodeId = 10 HostName = 198.51.100.150 [ndb_mgmd] NodeId = 11 HostName = 198.51.100.151 [api] NodeId = 20 HostName = 198.51.100.200 [api] NodeId = 21 HostName = 198.51.100.201
假设您希望仅使用具有节点 ID
10
并在具有 IP 地址 198.51.100.150 的主机上运行的管理服务器启动此集群。(例如,假设您打算的主机计算机由于硬件故障暂时不可用,并且您正在等待修复。)要以这种方式启动集群,请在位于 198.51.100.150 的计算机上使用命令行输入以下命令:$> ndb_mgmd --ndb-nodeid=10 --nowait-nodes=11
如前面的示例所示,当使用
--nowait-nodes
时,您还必须使用--ndb-nodeid
选项来指定此ndb_mgmd进程的节点 ID。然后,您可以按照通常的方式启动集群的每个数据节点。如果您希望在稍后的某个时间启动并使用第二个管理服务器而无需重新启动数据节点,则必须使用引用两个管理服务器的连接字符串启动每个数据节点,如下所示:
$> ndbd -c 198.51.100.150,198.51.100.151
与希望作为连接到此集群的 NDB Cluster SQL 节点启动的任何mysqld进程使用的连接字符串相同。有关更多信息,请参见 Section 25.4.3.3, “NDB Cluster Connection Strings”。
当与ndb_mgmd一起使用时,此选项仅影响管理节点与其他管理节点的行为。不要将其与与ndbd或ndbmtd")一起使用的
--nowait-nodes
选项混淆,以允许集群在少于其完整数据节点数量的情况下启动;当与数据节点一起使用时,此选项仅影响它们与其他数据节点的行为。可以将多个管理节点 ID 作为逗号分隔的列表传递给此选项。每个节点 ID 必须不小于 1 且不大于 255。实际上,对于同一 NDB 集群使用多个管理服务器(或有任何这样做的需要)是非常罕见的;在大多数情况下,您只需要将不希望在启动集群时使用的单个节点 ID 传递给此选项。
注意
当您稍后启动“丢失”的管理服务器时,其配置必须与集群中已经使用的管理服务器的配置相匹配。否则,它将无法通过现有管理服务器执行的配置检查,并且无法启动。
-
--print-defaults
命令行格式 --print-defaults
打印程序参数列表并退出。
-
--print-full-config
,-P
命令行格式 --print-full-config
显示有关集群配置的扩展信息。使用此选项在命令行上,ndb_mgmd进程会打印有关集群设置的信息,包括集群配置部分的广泛列表以及参数及其值。通常与
--config-file
(-f
)选项一起使用。 -
--reload
命令行格式 --reload
NDB 集群配置数据是存储在内部而不是每次启动管理服务器时从集群全局配置文件中读取的(请参阅第 25.4.3 节,“NDB 集群配置文件”)。使用此选项会强制管理服务器检查其内部数据存储与集群配置文件的匹配情况,并在发现配置文件与缓存不匹配时重新加载配置。现有的配置缓存文件会被保留,但不会被使用。
这与
--initial
选项有两点不同。首先,--initial
会导致删除所有缓存文件。其次,--initial
会强制管理服务器重新读取全局配置文件并构建新的缓存。如果管理服务器找不到全局配置文件,则
--reload
选项将被忽略。当使用
--reload
时,管理服务器必须能够与数据节点和集群中的任何其他管理服务器通信,然后才能尝试读取全局配置文件;否则,管理服务器将无法启动。这可能是由于网络环境的更改,例如节点的新 IP 地址或防火墙配置的更改。在这种情况下,您必须使用--initial
来强制丢弃现有的缓存配置并从文件重新加载。有关更多信息,请参见第 25.6.5 节,“执行 NDB 集群的滚动重启”。 -
命令行格式 --remove[=name]
特定平台 Windows 类型 字符串 默认值 ndb_mgmd
删除已安装为 Windows 服务的管理服务器进程,可选择指定要删除的服务名称。仅适用于 Windows 平台。
-
--skip-config-file
命令行格式 --skip-config-file
不读取集群配置文件;如果指定了
--initial
和--reload
选项,则忽略。 -
--usage
命令行格式 --usage
显示帮助文本并退出;与--help 相同。
-
--verbose
,-v
命令行格式 --verbose
删除已安装为 Windows 服务的管理服务器进程,可选择指定要删除的服务名称。仅适用于 Windows 平台。
-
--version
命令行格式 --version
显示版本信息并退出。
在启动管理服务器时,不一定需要指定连接字符串。但是,如果您使用多个管理服务器,则应提供连接字符串,并且集群中的每个节点都应明确指定其节点 ID。
有关使用连接字符串的信息,请参见第 25.4.3.3 节“NDB 集群连接字符串”。第 25.5.4 节“ndb_mgmd — The NDB Cluster Management Server Daemon”描述了ndb_mgmd的其他选项。
以下文件由ndb_mgmd在其启动目录中创建或使用,并根据 config.ini
配置文件中指定的 DataDir
放置。在下面的列表中,node_id
是唯一的节点标识符。
-
config.ini
是整个集群的配置文件。此文件由用户创建并由管理服务器读取。第 25.4 节“NDB 集群配置”讨论了如何设置此文件。 -
ndb_*
node_id*_cluster.log
是集群事件日志文件。此类事件的示例包括检查点启动和完成、节点启动事件、节点故障以及内存使用级别。可以在第 25.6 节“NDB 集群管理”中找到带有描述的完整集群事件列表。默认情况下,当集群日志大小达到一百万字节时,文件将重命名为
ndb_*
node_id*_cluster.log.*
seq_id*
,其中seq_id
是集群日志文件的序列号。(例如:如果已经存在序列号为 1、2 和 3 的文件,则下一个日志文件将使用编号4
。)您可以使用LogDestination
配置参数更改集群日志的大小、文件数量和其他特性。 -
ndb_*
node_id*_out.log
是在将管理服务器作为守护进程运行时用于stdout
和stderr
的文件。 -
ndb_*
node_id*.pid
是在将管理服务器作为守护进程运行时使用的进程 ID 文件。
25.5.5 ndb_mgm — The NDB Cluster Management Client
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-mgm.html
ndb_mgm 管理客户端进程实际上并不需要运行集群。它的价值在于提供一组命令来检查集群的状态、启动备份以及执行其他管理功能。管理客户端使用 C API 访问管理服务器。高级用户还可以使用此 API 编写专用管理进程,执行类似于 ndb_mgm 执行的任务。
要启动管理客户端,需要提供管理服务器的主机名和端口号:
$> ndb_mgm [*host_name* [*port_num*]]
例如:
$> ndb_mgm ndb_mgmd.mysql.com 1186
默认主机名和端口号分别为 localhost
和 1186。
所有可与 ndb_mgm 一起使用的选项显示在以下表中。表后面是附加描述。
表 25.27 与程序 ndb_mgm 一起使用的命令行选项
格式 | 描述 | 添加、弃用或移除 |
---|---|---|
--backup-password-from-stdin |
以安全方式从 STDIN 获取解密密码;与 --execute 和 ndb_mgm START BACKUP 命令一起使用 | 添加:NDB 8.0.24 |
--character-sets-dir=path |
包含字符集的目录 | 移除:8.0.31 |
--connect-retries=# |
设置在放弃之前重试连接的次数;0 表示仅尝试 1 次(无重试) | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--connect-retry-delay=# |
尝试联系管理服务器之间等待的秒数 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--connect-string=connection_string ,-c connection_string |
与 --ndb-connectstring 相同 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--core-file |
在错误时写入核心文件;用于调试 | 移除:8.0.31 |
--defaults-extra-file=path |
在读取全局文件后读取给定文件 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--defaults-file=path |
仅从给定文件中读取默认选项 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--defaults-group-suffix=string |
也读取具有 concat(group, suffix) 的组 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--encrypt-backup |
导致 START BACKUP 在进行备份时进行加密,如果用户未提供密码,则提示输入 | 添加:NDB 8.0.24 |
--execute=command ,-e command |
执行命令并退出 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--help ,-? |
显示帮助文本并退出 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--login-path=path |
从登录文件中读取给定路径 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--ndb-connectstring=connection_string ,-c connection_string |
设置用于连接到 ndb_mgmd 的连接字符串。语法:"[nodeid=id;][host=]hostname[:port]"。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--ndb-mgmd-host=connection_string ,-c connection_string |
与 --ndb-connectstring 相同 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--ndb-nodeid=# |
为此节点设置节点 ID,覆盖 --ndb-connectstring 设置的任何 ID | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--ndb-optimized-node-selection |
启用优化以选择事务节点。默认启用;使用 --skip-ndb-optimized-node-selection 来禁用 | 移除:8.0.31 |
--no-defaults |
不从登录文件以外的任何选项文件中读取默认选项 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--print-defaults |
打印程序参数列表并退出 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--try-reconnect=# ,-t # |
设置在放弃之前重试连接的次数;与 --connect-retries 同义词 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--usage ,-? |
显示帮助文本并退出;与 --help 相同 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--version ,-V |
显示版本信息并退出 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
格式 | 描述 | 添加、弃用或移除 |
-
--backup-password-from-stdin[=TRUE|FALSE]
命令行格式 --backup-password-from-stdin
引入 8.0.24-ndb-8.0.24 此选项允许在使用
--execute "START BACKUP"
或类似操作创建备份时,从系统 shell (stdin
) 输入备份密码。使用此选项需要同时使用--execute
。 -
--character-sets-dir
命令行格式 --character-sets-dir=path
移除 8.0.31 包含字符集的目录。
-
--connect-retries=*
#*
命令行格式 --connect-retries=#
类型 数值 默认值 3
最小值 0
最大值 4294967295
此选项指定在第一次尝试后重试连接的次数,直到放弃(客户端始终至少尝试一次连接)。每次尝试等待的时间长度由
--connect-retry-delay
设置。此选项与现已弃用的
--try-reconnect
选项是同义词。 -
--connect-retry-delay
命令行格式 --connect-retry-delay=#
类�� 整数 默认值 5
最小值 0
最大值 5
尝试联系管理服务器之间等待的秒数。
-
--connect-string
命令行格式 --connect-string=connection_string
类型 字符串 默认值 [无]
与
--ndb-connectstring
相同。 -
--core-file
命令行格式 --core-file
已移除 8.0.31 在错误时写入核心文件;用于调试。
-
--defaults-extra-file
命令行格式 --defaults-extra-file=path
类型 字符串 默认值 [none]
在读取全局文件后读取给定文件。
-
--defaults-file
命令行格式 --defaults-file=path
类型 字符串 默认值 [none]
仅从给定文件中读取默认选项。
-
--defaults-group-suffix
命令行格式 --defaults-group-suffix=string
类型 字符串 默认值 [none]
还读取带有连接(组,后缀)的组。
-
--encrypt-backup
命令行格式 --encrypt-backup
引入版本 8.0.24-ndb-8.0.24 当使用此选项时,将对所有备份进行加密。要使每次运行ndb_mgm时都发生这种情况,请将选项放在
my.cnf
文件的[ndb_mgm]
部分中。 -
--execute=
command, `-e `command
命令行格式 --execute=command
此选项可用于从系统 shell 向 NDB Cluster 管理客户端发送命令。例如,以下任一命令等同于在管理客户端中执行
SHOW
:$> ndb_mgm -e "SHOW" $> ndb_mgm --execute="SHOW"
这类似于在mysql命令行客户端中使用
--execute
或-e
选项的方式。请参阅第 6.2.2.1 节,“在命令行上使用选项”。注意
如果使用此选项传递的管理客户端命令包含任何空格字符,则命令必须用引号括起来。可以使用单���号或双引号。如果管理客户端命令不包含空格字符,则引号是可选的。
-
--help
命令行格式 --help
显示帮助文本并退出。
-
--login-path
命令行格式 --login-path=path
类型 字符串 默认值 [none]
从登录文件中读取给定路径。
-
--ndb-connectstring
命令行格式 --ndb-connectstring=connection_string
类型 字符串 默认值 [none]
为连接到ndb_mgmd设置连接字符串。语法:[
nodeid=*
id*;
][host=
]*
hostname*
[:*
port*
]. 覆盖NDB_CONNECTSTRING
和my.cnf
中的条目。 -
--ndb-nodeid
命令行格式 --ndb-nodeid=#
类型 整数 默认值 [none]
为此节点设置节点 ID,覆盖
--ndb-connectstring
设置的任何 ID。 -
--ndb-mgmd-host
命令行格式 --ndb-mgmd-host=connection_string
类型 字符串 默认值 [none]
与
--ndb-connectstring
相同。 -
--ndb-optimized-node-selection
命令行格式 --ndb-optimized-node-selection
已移除 8.0.31 启用事务节点选择的优化。默认情况下启用;使用
--skip-ndb-optimized-node-selection
来禁用。 -
--no-defaults
命令行格式 --no-defaults
不要从登录文件以外的任何选项文件中读取默认选项。
-
--print-defaults
命令行格式 --print-defaults
打印程序参数列表并退出。
-
--try-reconnect=*
number*
命令行格式 --try-reconnect=#
已弃用 是 类型 数字 类型 整数 默认值 12
默认值 3
最小值 0
最大值 4294967295
如果与管理服务器的连接中断,节点将每 5 秒尝试重新连接,直到成功。通过使用此选项,可以在放弃并报告错误之前限制尝试次数为
number
。此选项已弃用,并可能在将来的版本中删除。请改用
--connect-retries
。 -
--用法
命令行格式 --usage
显示帮助文本并退出;与
--help
相同。 -
--version
命令行格式 --version
显示版本信息并退出。
有关如何使用ndb_mgm的其他信息,请参阅第 25.6.1 节,“NDB Cluster Management Client 中的命令”。