MySQL8-中文参考-四十-

MySQL8 中文参考(四十)

原文:docs.oracle.com/javase/tutorial/reallybigindex.html

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-system-definition.html

25.4.3.8 定义系统

[system] 部分用于适用于整个集群的参数。 Name 系统参数用于 MySQL Enterprise Monitor;ConfigGenerationNumberPrimaryMGMNode 在生产环境中不使用。 除非使用 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_FORMATROW_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_statusndb_binlog_index表,即使启用了log_replica_updateslog_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_statusndb_binlog_index表,即使启用了log_replica_updateslog_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]部分(即,一个没有指定NodeIdId参数的部分)。如果节点 ID 作为连接字符串的一部分指定,这也是正确的。

    无论节点 ID 如何确定,它都显示为全局状态变量Ndb_cluster_node_id的值在SHOW STATUS输出中,并且在SHOW ENGINE NDBCLUSTER STATUSconnection行中显示为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表的插件。接受ONOFFFORCE值。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可以取PRIMARYSECONDARYPASSNULL(默认)中的任何一个值。在更改ndb_slave_conflict_role之前,必须停止副本 SQL 线程。此外,不可能直接在PASSPRIMARYSECONDARY之间直接更改;在这种情况下,您必须确保 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_FORMATROW_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 TABLEALTER 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指定;不能使用hms指定毫秒值。整数值可以加上KMG后缀。

    可以使用此变量设置的选项名称在接下来的表中显示。该表还提供了这些选项的简要描述、默认值以及(如果适用)它们的最小和最大值。

    表 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 下推连接的条件。 为了使连接可下推,必须满足以下条件:

    1. 只能比较列,并且所有要连接的列必须使用完全相同的数据类型。这意味着(例如)在INT列和BIGINT列上的连接也无法被下推。

      以前,诸如 t1.a = t2.a + *constant* 的表达式无法被下推。在 NDB 8.0 中取消了此限制。任何要比较的列上的任何操作的结果必须与列本身产生相同的类型。

      比较同一表中列的表达式也可以被下推。这些列(或对这些列进行的任何操作的结果)必须完全相同,包括相同的符号、长度、字符集和排序规则、精度和比例,如果适用的话。

    2. 查询引用BLOBTEXT列不受支持。

    3. 不支持显式锁定;但是,强制执行NDB存储引擎的特征隐式基于行的锁定。

      这意味着使用 FOR UPDATE 的连接无法被下推。

    4. 为了使连接被下推,连接中的子表必须使用refeq_refconst访问方法之一进行访问,或者这些方法的某种组合。

      外连接的子表只能使用eq_ref进行推送。

      如果推送连接的根是 eq_refconst,只有通过 eq_ref 连接的子表才能被附加。(通过 ref 连接的表可能会成为另一个推送连接的根。)

      如果查询优化器决定对候选子表使用 Using join cache,那么该表无法作为子表推送。但是,它可能成为另一组推送表的根。

    5. 目前无法推送显式分区为 [LINEAR] HASHLISTRANGE 的表的连接。

    通过使用 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 连接,并且结果按排序索引排序或分组,该索引无法提供排序行,这将强制写入到排序临时文件。

    还有两个关于推送连接性能的额外信息来源:

    1. 状态变量 Ndb_pushed_queries_definedNdb_pushed_queries_droppedNdb_pushed_queries_executedNdb_pushed_reads

    2. 属于 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默认为1ON);通常,在生产环境中永远不需要更改此值。

  • 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

    当此变量设置为ON1)时,即使启用了log_replica_updateslog_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_checkndb_metadata_check_interval 设置的任何值,并进入持续更改检测期。当线程确定没有更多要检测的更改时,它会停滞���直到二进制日志线程完成所有检测到的对象的同步。然后 ndb_metadata_sync 设置为 false,更改监视线程将恢复到由 ndb_metadata_checkndb_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

    优化节点选择有两种形式,如下所述:

    1. SQL 节点使用接近性来确定事务协调器;也就是说,SQL 节点“最近”的数据节点被选择为事务协调器。为此,具有与 SQL 节点共享内存连接的数据节点被认为是与 SQL 节点“最近”的;接下来最接近的(按照减少接近性的顺序)是:从localhost的 TCP 连接,然后是从localhost以外的主机的 TCP 连接。

    2. SQL 线程使用分布感知来选择数据节点。也就是说,由给定事务的第一个语句访问的集群分区所在的数据节点被用作整个事务的事务协调器。(仅当事务的第一个语句访问不超过一个集群分区时有效。)

    此选项接受整数值0123中的一个。3是默认值。这些值影响节点选择如下:

    • 0:节点选择未经优化。在 SQL 线程继续到下一个数据节点之前,每个数据节点被用作事务协调器 8 次。

    • 1:接近 SQL 节点用于确定事务协调器。

    • 2:使用分布感知来选择事务协调器。但是,如果事务的第一个语句访问多个集群分区,则 SQL 节点会在将此选项设置为0时恢复到循环轮询行为。

    • 3:如果可以使用分布感知来确定事务协调器,则使用它;否则使用接近性来选择事务协调器。(这是默认行为。)

    接近性的确定如下:

    1. 从为Group参数设置的值开始(默认为 55)。

    2. 对于与其他 API 节点共享同一主机的 API 节点,将值减 1。假设Group的默认值,与 API 节点在同一主机上的数据节点的有效值为 54,远程数据节点为 55。

    3. 设置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 TABLEALTER 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

    当此变量设置为ON1时,导致使用ENGINE NDB创建或更改的所有表都是非记录日志的;也就是说,此表的数据更改不会写入重做日志或写入磁盘检查点,就好像使用CREATE TABLEALTER TABLE时使用NOLOGGING选项创建或更改表一样。

    有关非记录NDB表的更多信息,请参阅 NDB_TABLE 选项。

    ndb_table_no_loggingNDB表模式文件的创建没有影响;要抑制这些文件,请改用ndb_table_temporary

  • ndb_table_temporary

    系统变量 ndb_table_temporary
    作用范围 会话
    动态
    SET_VAR 提示适用
    类型 布尔值
    默认值 OFF

    当设置为ON1时,此变量导致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

    强制NDBSELECT 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

    在复制品上允许批量更新极大地提高了性能,特别是在复制TEXTBLOBJSON列时。因此,在 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

    在副本上允许批量更新可以极大地提高性能,特别是在复制TEXTBLOBJSON列时。因此,在 NDB 8.0.30 及更高版本中,默认情况下replica_allow_batchingON。从 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

    当设置为1ON时,此变量允许在同一事务中批处理语句。要使用此变量,必须先通过将autocommit设置为0OFF来禁用自动提交;否则,设置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 STATUSSHOW SESSION STATUS读取此变量,但它仅与当前会话相关,并不受此mysqld的任何其他客户端影响。

    有关更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_bytes_sent_count_replica

    由此副本发送到数据节点的数据量(以字节为单位)。

    尽管可以使用SHOW GLOBAL STATUSSHOW 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 STATUSSHOW SESSION STATUS来读取,但实际上它在全局范围内有效。如果这个 MySQL 服务器不充当副本,或者不使用 NDB 表,这个值始终为 0。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_bytes_sent_count

    由此 MySQL 服务器(SQL 节点)发送到数据节点的数据量(以字节为单位)。

    虽然这个变量可以通过SHOW GLOBAL STATUSSHOW SESSION STATUS来读取,但实际上它在全局范围内有效。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_bytes_received_count_session

    从数据节点在此客户端会话中接收到的数据量(以字节为单位)。

    虽然这个变量可以通过SHOW GLOBAL STATUSSHOW SESSION STATUS来读取,但它只与当前会话相关,并不受这个mysqld的任何其他客户端影响。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_bytes_received_count_replica

    从数据节点接收到的数据量(以字节为单位)。

    虽然这个变量可以通过SHOW GLOBAL STATUSSHOW 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 STATUSSHOW SESSION STATUS读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当副本,或者不使用 NDB 表,此值始终为 0。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_bytes_received_count

    此 MySQL 服务器(SQL 节点)从数据节点接收的数据量(以字节为单位)。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但其实际范围是全局的。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_event_data_count_injector

    NDB 二进制日志注入器线程接收的行更改事件数量。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但其实际范围是全局的。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_event_data_count

    此 MySQL 服务器(SQL 节点)接收的行更改事件数量。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但其实际范围是全局的。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_event_nondata_count_injector

    NDB 二进制日志注入线程接收的除行更改事件之外的事件数量。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但其实际范围是全局的。

    查看更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_event_nondata_count

    MySQL 服务器(SQL 节点)接收的除行更改事件之外的事件数量。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但其实际范围是全局的。

    查看更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_event_bytes_count_injector

    NDB 二进制日志注入线程接收的事件字节数。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但其实际范围是全局的。

    查看更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_event_bytes_count

    MySQL 服务器(SQL 节点)接收的事件字节数。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但其实际范围是全局的。

    查看更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_pk_op_count_session

    基于或使用主键的客户端会话中的操作数量。这包括对 blob 表的操作、隐式解锁操作、自增操作,以及用户可见的主键操作。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但它仅与当前会话相关,并不受此mysqld的任何其他客户端影响。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_pk_op_count_replica

    这个复制品基于或使用主键的操作次数。这包括对 blob 表的操作、隐式解锁操作、自增操作,以及用户可见的主键操作。

    尽管可以使用SHOW GLOBAL STATUSSHOW 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 STATUSSHOW SESSION STATUS读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当复制品,或不使用 NDB 表,则此值始终为 0。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_pk_op_count

    这个 MySQL 服务器(SQL 节点)基于或使用主键的操作次数。这包括对 blob 表的操作、隐式解锁操作、自增操作,以及用户可见的主键操作。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但其实际范围是全局的。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_pruned_scan_count_session

    此客户端会话中已被修剪为单个分区的扫描次数。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但它与当前会话相关,不受此mysqld的任何其他客户端影响。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_pruned_scan_count_replica

    此副本进行的已被修剪为单个分区的扫描次数。

    尽管可以使用SHOW GLOBAL STATUSSHOW 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 STATUSSHOW SESSION STATUS读取此变量,但其实际范围���全局的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,此值始终为 0。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_pruned_scan_count

    此 MySQL 服务器(SQL 节点)进行的已被修剪为单个分区的扫描次数。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但其实际范围是全局的。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_range_scan_count_session

    在此客户端会话中启动的范围扫描次数。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但它仅与当前会话相关,并不受此mysqld的任何其他客户端影响。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_range_scan_count_replica

    由此副本启动的范围扫描次数。

    尽管可以使用SHOW GLOBAL STATUSSHOW 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 STATUSSHOW SESSION STATUS读取此变量,但其实际上是全局范围的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,则此值始终为 0。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计���器和变量”。

  • Ndb_api_range_scan_count

    由此 MySQL 服务器(SQL 节点)启动的范围扫描次数。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但其实际上是全局范围的。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_read_row_count_session

    在此客户端会话中已读取的总行数。这包括此客户端会话中通过任何主键、唯一键或扫描操作读取的所有行。

    尽管此变量可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取,但它仅与当前会话相关,并不受此mysqld的任何其他客户端影响。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_read_row_count_replica

    此副本已读取的总行数。这包括此副本通过任何主键、唯一键或扫描操作读取的所有行。

    尽管此变量可以使用SHOW GLOBAL STATUSSHOW 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 STATUSSHOW 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 STATUSSHOW SESSION STATUS读取此变量,但其实质上是全局范围的。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_scan_batch_count_session

    此客户端会话中接收的行批次数。1 批次定义为来自单个片段的扫描结果集。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但它仅与当前会话相关,并不受此mysqld的任何其他客户端影响。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_scan_batch_count_replica

    此副本接收的行批次数。1 批次定义为来自单个片段的扫描结果集。

    尽管可以使用SHOW GLOBAL STATUSSHOW 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 STATUSSHOW SESSION STATUS读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,则此值始终为 0。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_scan_batch_count

    MySQL 服务器(SQL 节点)接收的行批次数。1 批次定义为来自单个片段的扫描结果集。

    虽然可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但其实际范围是全局的。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_table_scan_count_session

    在此客户端会话中已启动的表扫描次数,包括对内部表的扫描。

    虽然可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但它仅与当前会话相关,并不受此mysqld的任何其他客户端影响。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_table_scan_count_replica

    此副本已启动的表扫描次数,包括对内部表的扫描。

    虽然可以使用SHOW GLOBAL STATUSSHOW 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 STATUSSHOW SESSION STATUS读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,则此值始终为 0。

    更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_table_scan_count

    由此 MySQL 服务器(SQL 节点)启动的表扫描次数,包括内部表的扫描。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但其实际范围是全局的。

    更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_trans_abort_count_session

    在此客户端会话中中止的事务数量。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但它仅与当前会话相关,并不受此mysqld的任何其他客户端影响。

    更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_trans_abort_count_replica

    该副本中被中止的事务数量。

    尽管可以使用SHOW GLOBAL STATUSSHOW 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 STATUSSHOW SESSION STATUS来读取此变量,但其实质上是全局范围的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,此值始终为 0。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_trans_abort_count

    由此 MySQL 服务器(SQL 节点)中止的事务数量。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS来读取此变量,但其实质上是全局范围的。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_trans_close_count_session

    在此客户端会话中关闭的事务数量。此值可能大于Ndb_api_trans_commit_count_sessionNdb_api_trans_abort_count_session的总和,因为某些事务可能已被回滚。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS来读取此变量,但它仅与当前会话相关,并不受此mysqld的任何其他客户端影响。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_trans_close_count_replica

    由此副本关闭的事务数量。此值可能大于Ndb_api_trans_commit_count_replicaNdb_api_trans_abort_count_replica的总和,因为某些事务可能已被回滚。

    尽管可以使用SHOW GLOBAL STATUSSHOW 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_replicaNdb_api_trans_abort_count_replica的总和,因为某些事务可能已被回滚。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,则此值始终为 0。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_trans_close_count

    由此 MySQL 服务器(SQL 节点)关闭的事务数。此值可能大于Ndb_api_trans_commit_countNdb_api_trans_abort_count的总和,因为某些事务可能已被回滚。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但其实际范围是全局的。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_trans_commit_count_session

    在此客户端会话中提交的事务数。

    尽管可以使用 SHOW GLOBAL STATUSSHOW SESSION STATUS 读取此变量,但它仅与当前会话相关,并不受此 mysqld 的任何其他客户端影响。

    更多信息,请参见 第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_trans_commit_count_replica

    此副本提交的事务数量。

    尽管可以使用 SHOW GLOBAL STATUSSHOW 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 STATUSSHOW SESSION STATUS 读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,则此值始终为 0。

    更多信息,请参见 第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_trans_commit_count

    此 MySQL 服务器(SQL 节点)提交的事务数量。

    尽管可以使用 SHOW GLOBAL STATUSSHOW SESSION STATUS 读取此变量,但其实际范围是全局的。

    更多信息,请参见 第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_trans_local_read_row_count_session

    在此客户端会话中已读取的总行数。这包括在此客户端会话中进行的任何主键、唯一键或扫描操作读取的所有行。

    虽然这个变量可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS来读取,但它仅与当前会话相关,并不受此mysqld的任何其他客户端影响。

    更多信息,请参见 Section 25.6.15,“NDB API Statistics Counters and Variables”。

  • Ndb_api_trans_local_read_row_count_replica

    这个副本已读取的总行数。这包括此副本执行的任何主键、唯一键或扫描操作读取的所有行。

    虽然这个变量可以使用SHOW GLOBAL STATUSSHOW 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 STATUSSHOW 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 STATUSSHOW SESSION STATUS来读取,但它实际上是全局范围的。

    查看更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_trans_start_count_session

    此客户端会话中启动的事务数量。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS来读取此变量,但它与当前会话相关,并不受此mysqld的任何其他客户端影响。

    查看更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_trans_start_count_replica

    此副本启动的事务数量。

    尽管可以使用SHOW GLOBAL STATUSSHOW 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 STATUSSHOW SESSION STATUS来读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,则此值始终为 0。

    查看更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_trans_start_count

    此 MySQL 服务器(SQL 节点)启动的事务数量。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS来读取此变量,但其实际范围是全局的。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_uk_op_count_session

    这个客户端会话中基于或使用唯一键的操作次数。

    虽然这个变量可以通过SHOW GLOBAL STATUSSHOW SESSION STATUS来读取,但它只与当前会话相关,并不受这个mysqld的任何其他客户端影响。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_uk_op_count_replica

    这个副本基于或使用唯一键的操作次数。

    虽然这个变量可以通过SHOW GLOBAL STATUSSHOW 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 STATUSSHOW SESSION STATUS来读取,但实际上它在全局范围内有效。如果这个 MySQL 服务器不充当副本,或者不使用 NDB 表,这个值始终为 0。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_uk_op_count

    这个 MySQL 服务器(SQL 节点)基于或使用唯一键的操作次数。

    虽然这个变量可以通过SHOW GLOBAL STATUSSHOW SESSION STATUS来读取,但实际上它在全局范围内有效。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_wait_exec_complete_count_session

    线程在此客户端会话中由于等待操作完成而被阻塞的次数。这包括所有execute()调用,以及对客户端不可见的 blob 和自增操作的隐式执行。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但它仅与当前会话相关,并不受此mysqld的任何其他客户端影响。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_wait_exec_complete_count_replica

    线程由于等待操作完成而被此副本阻塞的次数。这包括所有execute()调用,以及对客户端不可见的 blob 和自增操作的隐式执行。

    尽管可以使用SHOW GLOBAL STATUSSHOW 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 STATUSSHOW SESSION STATUS读取此变量,但其实是全局范围的。如果此 MySQL 服务器不充当复制品,或不使用 NDB 表,此值始终为 0。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_wait_exec_complete_count

    一个线程在等待操作完成时被此 MySQL 服务器(SQL 节点)阻塞的次数。这包括所有execute()调用,以及对客户端不可见的 blob 和自增操作的隐式执行。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但其实是全局范围的。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_wait_meta_request_count_session

    一个线程在此客户端会话中被阻塞等待基于元数据的信号的次数,例如 DDL 请求、新纪元和事务记录的占用。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但它仅与当前会话相关,并不受此mysqld的任何其他客户端影响。

    更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_wait_meta_request_count_replica

    一个线程在此复制品中被阻塞等待基于元数据的信号的次数,例如 DDL 请求、新纪元和事务记录的占用。

    尽管可以使用SHOW GLOBAL STATUSSHOW 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 STATUSSHOW SESSION STATUS读取此变量,但其实际上是全局范围的。如果此 MySQL 服务器不充当复制品,或不使用 NDB 表,则此值始终为 0。

    查看更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_wait_meta_request_count

    线程由于等待基于元数据的信号(例如 DDL 请求、新纪元和事务记录的占用)而被此 MySQL 服务器(SQL 节点)阻塞的次数。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但其实际上是全局范围的。

    查看更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_wait_nanos_count_session

    在此客户端会话中等待来自数据节点的任何类型信号所花费的总时间(以纳秒为单位)。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但它仅与当前会话相关,并且不受此mysqld的任何其他客户端影响。

    查看更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_wait_nanos_count_replica

    复制品等待来自数据节点的任何类型信号所花费的总时间(以纳秒为单位)。

    尽管可以使用SHOW GLOBAL STATUSSHOW 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 STATUSSHOW SESSION STATUS读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,则此值始终为 0。

    查看更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_wait_nanos_count

    该 MySQL 服务器(SQL 节点)等待来自数据节点的任何类型信号所花费的总时间(以纳秒为单位)。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但其实际范围是全局的。

    查看更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_wait_scan_result_count_session

    在此客户端会话中,线程由于等待基于扫描的信号而被阻塞的次数,例如等待扫描结果,或等待扫描关闭时。

    尽管可以使用SHOW GLOBAL STATUSSHOW SESSION STATUS读取此变量,但它仅与当前会话相关,并不受此mysqld的任何其他客户端影响。

    查看更多信息,请参阅第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_wait_scan_result_count_replica

    线程由于等待扫描信号(例如等待扫描结果或等待扫描关闭)而被此副本阻塞的次数。

    尽管可以使用SHOW GLOBAL STATUSSHOW 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 STATUSSHOW SESSION STATUS读取此变量,但其实际范围是全局的。如果此 MySQL 服务器不充当副本,或不使用 NDB 表,则此值始终为 0。

    查看更多信息,请参见第 25.6.15 节,“NDB API 统计计数器和变量”。

  • Ndb_api_wait_scan_result_count

    线程由于等待扫描信号(例如等待扫描结果或等待扫描关闭)而被此 MySQL 服务器(SQL 节点)阻塞的次数。

    尽管可以使用SHOW GLOBAL STATUSSHOW 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 连接,必须至少包含参数NodeId1NodeId2,以及任何要覆盖的连接参数。

也可以通过在[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)

    此参数默认情况下处于禁用状态。当启用时(设置为 Y1),所有消息在放入发送缓冲区之前都会计算校验和。此功能确保消息在等待发送缓冲区或通过传输机制时不会损坏。

  • Group

    当启用 ndb_optimized_node_selection 时,节点的接近程度在某些情况下用于选择要连接的节点。可以通过将此参数设置为较低值来影响接近程度,较低值被解释为“更近”。有关更多信息,请参阅系统变量的描述。

  • HostName1

    版本(或更高) NDB 8.0.13
    类型或单位 名称或 IP 地址
    默认 [...]
    范围 ...
    重启类型 节点重启: 需要对集群进行滚动重启。(NDB 8.0.13)

    HostName1HostName2 参数可用于指定两个节点之间的 TCP 连接所使用的特定网络接口。这些参数的值可以是主机名或 IP 地址。

  • HostName2

    版本(或更高) NDB 8.0.13
    类型或单位 名称或 IP 地址
    默认 [...]
    范围 ...
    重启类型 节点重启: 需要对集群进行滚动重启。(NDB 8.0.13)

    HostName1HostName2 参数可用于指定两个节点之间的 TCP 连接所使用的特定网络接口。这些参数的值可以是主机名或 IP 地址。

  • NodeId1

    版本(或更高) NDB 8.0.13
    类型或单位 数字
    默认 [none]
    范围 1 - 255
    重启类型 节点重启: 需要对集群进行滚动重启。(NDB 8.0.13)

    要识别两个节点之间的连接,需要在配置文件的 [tcp] 部分中提供它们的节点 ID 作为 NodeId1NodeId2 的值。这些值是每个节点的唯一 Id 值,如第 25.4.3.7 节,“在 NDB 集群中定义 SQL 和其他 API 节点”中所述。

  • NodeId2

    版本(或更高) NDB 8.0.13
    类型或单位 数��
    默认 [none]
    范围 1 - 255
    重启类型 节点重启: 需要对集群进行滚动重启。(NDB 8.0.13)

    要识别两个节点之间的连接,需要在配置文件的 [tcp] 部分提供它们的节点 ID 作为 NodeId1NodeId2 的值。这些是每个节点的相同唯一 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

    将此参数设置为 TRUE1 将绑定 IP_ADDR_ANY,以便可以从任何地方进行连接(用于自动生成的连接)。默认值为 FALSE0)。

  • 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

只有在指定直接连接时才使用 HostName1HostName2 参数。

使用数据节点之间的直接 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 设置为相同值。

  • 通过在集群配置文件中使用包含 NodeId1NodeId2 设置的 [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 集群中,托管了所示节点类型的主机名:

  1. 10.0.0.0:管理服务器

  2. 10.0.0.1:一个数据节点和一个 SQL 节点

  3. 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] 部分中按连接覆盖。每个这样的部分必须使用 NodeId1NodeId2 关联给定 SHM 连接的节点 ID;也可以使用 HostName1HostName2 通过主机名标识节点,但这些参数不是必需的。

对于未设置主机名的 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)

    HostName1HostName2参数可用于指定用于两个节点之间给定 SHM 连接的特定网络接口。这些参数的值可以是主机名或 IP 地址。

  • HostName2

    版本(或更高版本) NDB 8.0.13
    类型或单位 名称或 IP 地址
    默认值 [...]
    范围 ...
    重启类型 节点重启: 需要进行滚动重启(NDB 8.0.13)

    HostName1HostName2参数可用于指定用于两个节点之间给定 SHM 连接的特定网络接口。这些参数的值可以是主机名或 IP 地址。

  • NodeId1

    版本(或更高版本) NDB 8.0.13
    类型或单位 数字
    默认值 [无]
    范围 1 - 255
    重启类型 节点重启: 需要进行滚动重启(NDB 8.0.13)

    要识别两个节点之间的连接,需要为每个节点提供节点标识符,如NodeId1NodeId2

  • NodeId2

    版本(或更高版本) NDB 8.0.13
    类型或单位 数字
    默认值 [无]
    范围 1 - 255
    重启类型 节点重启: 需要进行滚动重启(NDB 8.0.13)

    要识别两个节点之间的连接,需要为每个节点提供节点标识符,如NodeId1NodeId2

  • 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

  • 作业缓冲区

  • 发送缓冲区(SendBufferMemoryTotalSendBufferMemoryExtraSendBufferMemory

  • 磁盘数据记录页缓存(DiskPageBufferMemoryDiskPageBufferEntries

  • 事务内存(TransactionMemory

  • 查询内存

  • 磁盘访问记录

  • 文件缓冲区

每个资源都设置了一个保留内存区域和一个最大内存区域。保留内存区域只能被其保留的资源使用,不能与其他资源共享;给定资源永远不能分配超过为其允许的最大内存的内存。没有最大内存的资源可以扩展使用内存管理器中的所有共享内存。

这些资源的全局共享内存大小由SharedGlobalMemory配���参数控制(默认值:128 MB)。

数据内存始终保留,从共享内存中不获取任何内存。它使用DataMemory配置参数进行控制,其最大值为 16384 GB。DataMemory是记录存储的地方,包括哈希索引(每行约 15 字节)、有序索引(每个索引每行 10-12 字节)和行头(每行 16-32 字节)。

重做日志缓冲区也仅使用保留内存;这由RedoBuffer配置参数控制,该参数设置每个 LDM 线程的重做日志缓冲区大小。这意味着实际使用的内存量是此参数值乘以数据节点中的 LDM 线程数。

作业缓冲区仅使用保留内存;此内存的大小由NDB根据各种类型线程的数量计算而得。

发送缓冲区有一个保留部分,但也可以分配额外的共享全局内存的 25%。发送缓冲区的保留大小分两步计算:

  1. 使用TotalSendBufferMemory配置参数的值(无默认值)或所有单个连接到数据节点的单个连接使用的所有单个发送缓冲区的总和。数据节点连接到所有其他数据节点,所有 API 节点和所有管理节点。这意味着,在具有 2 个数据节点,2 个管理节点和每个数据节点连接到 10 个 API 节点的集群中,每个数据节点有 13 个节点连接。由于数据节点连接的SendBufferMemory的默认值为 2 兆字节,因此总计为 26 MB。

  2. 要获取发送缓冲区的总保留大小,需要将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时,上述配置参数都不用于计算内存大小。此外,参数MaxNoOfConcurrentIndexOperationsMaxNoOfFiredTriggersMaxNoOfLocalOperationsMaxNoOfLocalScansTransactionMemory不兼容,不能与之同时设置;如果在config.ini配置文件中设置了TransactionMemory并且这四个参数中的任何一个也被设置,管理服务器将无法启动。注意:在 NDB 8.0.29 之前,对于MaxNoOfFiredTriggersMaxNoOfLocalScansMaxNoOfLocalOperations,这个限制并未强制执行(Bug #102509,Bug #32474988)。

MaxNoOfConcurrentIndexOperationsMaxNoOfFiredTriggersMaxNoOfLocalOperationsMaxNoOfLocalScans参数在 NDB 8.0 中已弃用;您应该期望它们在将来的 MySQL NDB Cluster 版本中被移除。

在 NDB 8.0.29 之前,不可能同时设置MaxNoOfConcurrentTransactionsMaxNoOfConcurrentOperationsMaxNoOfConcurrentScansTransactionMemory

事务内存资源包含大量内存池。每个内存池代表一个对象类型,并包含一组对象;每个池在启动时包括一个分配给池的保留部分;这些保留内存永远不会返回到共享全局内存。使用仅具有单个级别的数据结构来查找保留记录,以便快速检索,这意味着每个池中应该保留一定数量的记录。每个池中保留的记录数量对性能和保留内存分配有一定影响,但通常只在某些非常高级的用例中需要显式设置保留大小。

可通过设置以下配置参数来控制池的保留部分的大小:

  • 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

    指示ndbdndbmtd")作为守护进程执行。这是默认行为。--nodaemon可用于阻止进程作为守护进程运行。

    在 Windows 平台上运行ndbdndbmtd")时,此选项无效。

  • --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

    通过stdinttymy.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

    导致ndbdndbmtd")作为前台进程执行,主要用于调试目的。此选项意味着--nodaemon选项。

    在 Windows 平台上运行ndbdndbmtd")时,此选项不起作用。

  • --help

    命令行格式 --help

    显示帮助文本并退出。

  • --initial

    命令行格式 --initial

    指示ndbd执行初始启动。初始启动会擦除早期实例的恢复目的创建的任何文件,并重新创建恢复日志文件。在某些操作系统上,此过程可能需要相当长的时间。

    只有在非常特殊的情况下才应使用--initial启动,因为此选项会导致从 NDB 集群文件系统中删除所有文件并重新创建所有重做日志文件。这些情况列在这里:

    • 在执行更改了任何文件内容的软件升级时。

    • 在使用新版本的ndbd重新启动节点时。

    • 作为最后一招的措施,当由于某种原因节点重新启动或系统重启反复失败时。在这种情况下,请注意由于数据文件的破坏,此节点将不再能用于恢复数据。

    警告

    为避免最终可能发生的数据丢失,建议您不要--initial选项与StopOnError = 0一起使用。相反,在集群启动后,只需在config.ini中将StopOnError设置为 0,然后正常重新启动数据节点,即不使用--initial选项。有关此问题的详细说明,请参阅StopOnError参数的描述。(Bug #24945638)

    使用此选项会阻止StartPartialTimeoutStartPartitionedTimeout配置参数产生任何效果。

    重要

    此选项不会影响已由受影响节点创建的备份文件。

    在 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*]

    命令行格式 --install[=name]
    平台特定 Windows
    类型 字符串
    默认值 ndbd

    安装ndbd作为 Windows 服务。可选地,您可以为服务指定一个名称;如果未设置,则服务名称默认为ndbd。虽然最好在my.inimy.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

    防止ndbdndbmtd")作为守护进程执行。此选项覆盖--daemon选项。在调试二进制文件时,将输出重定向到屏幕非常有用。

    在 Windows 上,ndbdndbmtd")的默认行为是在前台运行,使得此选项在 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*]

    命令行格式 --remove[=name]
    特定平台 Windows
    类型 字符串
    默认值 ndbd

    导致之前安装为 Windows 服务的ndbd 进程被移除。可选地,您可以指定要卸载的服务的名称;如果未设置,则服务名称默认为ndbd

    --remove 选项在非 Windows 平台上没有效果。

  • --usage

    命令行格式 --usage

    显示帮助文本并退出;与--help 相同。

  • --verbose-v

    导致额外的调试输出写入节点日志。

    您还可以在数据节点运行时使用NODELOG DEBUG ONNODELOG 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 内部表的信息,包括 tablescolumns 元数据表。

要使用 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_CONNECTSTRINGmy.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

ndbmtdndbd的多线程版本,用于处理使用NDBCLUSTER存储引擎的所有表中的数据的进程。ndbmtd旨在用于具有多个 CPU 核心的主机计算机。除非另有说明,否则ndbmtd的功能方式与ndbd相同;因此,在本节中,我们重点关注ndbmtdndbd的区别,并且您应该参考第 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有两个关键区别:

  1. 因为ndbmtd")默认以单线程模式运行(即,它的行为类似于ndbd),所以必须配置它以使用多个线程。可以通过在config.ini文件中为MaxNoOfExecutionThreads配置参数或ThreadConfig配置参数设置适当的值来实现。使用MaxNoOfExecutionThreads更简单,但ThreadConfig提供更多灵活性。有关这些配置参数及其用法的更多信息,请参阅多线程配置参数(ndbmtd)。

  2. 由于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_t1ndb_3_trace.log.1_t2ndb_3_trace.log.1_t3ndb_3_trace.log.1_t4。在内部,这些跟踪文件遵循与ndbd跟踪文件相同的格式。

ndbd退出代码和消息是在数据节点进程意外关闭时生成的,也被ndbmtd")使用。请参阅数据节点错误消息,以查看这些消息的列表。

注意

可以在同一 NDB 集群中的不同数据节点上同时使用ndbdndbmtd")。然而,这样的配置并未经过广泛测试;因此,我们目前不建议在生产环境中这样做。

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、OFFFALSE)重新启动管理服务器。

    配置缓存文件通常在安装目录下的名为mysql-cluster的目录中创建(除非使用--configdir选项覆盖了此位置)。每次管理服务器更新其配置数据时,都会写入一个新的缓存文件。这些文件按照创建顺序顺序命名,格式如下:

    ndb_*node-id*_config.bin.*seq-number*
    

    node-id 是管理服务器的节点 ID;seq-number 是一个从 1 开始的序列号。例如,如果管理服务器的节点 ID 是 5,则创建前三个配置缓存文件时,它们的名称将分别为ndb_5_config.bin.1ndb_5_config.bin.2ndb_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*]

    命令行格式 --install[=name]
    平台特定 Windows
    类型 字符串
    默认值 ndb_mgmd

    使ndb_mgmd作为 Windows 服务安装。可选地,您可以为服务指定名称;如果未设置,则服务名称默认为ndb_mgmd。虽然最好在my.inimy.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_CONNECTSTRINGmy.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一起使用时,此选项仅影响管理节点与其他管理节点的行为。不要将其与与ndbdndbmtd")一起使用的--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]

    命令行格式 --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 是在将管理服务器作为守护进程运行时用于 stdoutstderr 的文件。

  • 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_CONNECTSTRINGmy.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 中的命令”。

posted @ 2024-06-23 16:27  绝不原创的飞龙  阅读(6)  评论(0编辑  收藏  举报