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


MySQL 8.4 参考手册  /  ...  /  MySQL 服务器选项和变量用于 NDB 集群

25.4.3.9 MySQL 服务器选项和变量用于 NDB 集群

本节提供有关特定于 NDB 集群的 MySQL 服务器选项、服务器和状态变量的信息。有关使用这些选项的常规信息,以及有关不特定于 NDB 集群的其他选项和变量的信息,请参见 第 7.1 节,“MySQL 服务器”.

有关在集群配置文件(通常名为 config.ini)中使用的 NDB 集群配置参数,请参见 第 25.4 节,“NDB 集群配置”.

25.4.3.9.1 MySQL 服务器选项用于 NDB 集群

本节提供与 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
    系统变量 ndb_applier_allow_skip_epoch
    范围 全局
    动态
    SET_VAR 提示适用

    --replica-skip-errors 一起使用以导致 NDB 忽略跳过的时期事务。单独使用时无效。

  • --ndb-batch-size=#

    命令行格式 --ndb-batch-size
    系统变量 ndb_batch_size
    范围 全局、会话
    动态
    SET_VAR 提示适用
    类型 整数
    默认值 32768
    最小值 0
    最大值 2147483648
    单位 字节

    这将设置用于 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 节点连接到集群时建立,并以循环方式分配给线程。

    此选项仅在主机上运行 mysqld 且主机具有多个 CPU、多个核心或两者兼而有之的情况下才有用。为了获得最佳效果,该值应小于主机上可用内核的总数。将其设置为大于此的值可能会严重降低性能。

    重要

    由于每个使用连接池的 SQL 节点都会占用多个 API 节点插槽——每个插槽在集群中都有自己的节点 ID——因此在启动任何使用连接池的 mysqld 进程时,不要在集群连接字符串中使用节点 ID。

    在使用 --ndb-cluster-connection-pool 选项时,在连接字符串中设置节点 ID 会导致 SQL 节点尝试连接到集群时出现节点 ID 分配错误。

  • --ndb-cluster-connection-pool-nodeids=list

    命令行格式 --ndb-cluster-connection-pool-nodeids
    系统变量 ndb_cluster_connection_pool_nodeids
    范围 全局
    动态
    SET_VAR 提示适用
    类型 设置
    默认值

    指定 SQL 节点使用的与集群的连接的节点 ID 的逗号分隔列表。此列表中的节点数必须与为 --ndb-cluster-connection-pool 选项设置的值相同。

  • --ndb-blob-read-batch-bytes=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=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=#
    系统变量 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 服务器的 mysql.ndb_apply_status 表。

    在链式复制设置中,使用此选项允许下游(副本)集群了解它们相对于其所有上游贡献者(来源)的位置。

    在循环复制设置中,此选项会导致对 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

    即使在启用 log_replica_updates 时,也会导致没有更改的纪元写入 ndb_apply_statusndb_binlog_index 表。

    默认情况下,此选项被禁用。禁用 --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

    即使在启用 log_replica_updates 时,也会导致没有更改的更新写入 ndb_apply_statusndb_binlog_index 表。

    默认情况下,此选项被禁用 (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
    系统变量 ndb_log_fail_terminate
    范围 全局
    动态
    SET_VAR 提示适用
    类型 布尔值
    默认值 FALSE

    当指定此选项时,并且无法完整记录所有找到的行事件,则 mysqld 进程将终止。

  • --ndb-log-orig

    命令行格式 --ndb-log-orig[={OFF|ON}]
    系统变量 ndb_log_orig
    范围 全局
    动态
    SET_VAR 提示适用
    类型 布尔值
    默认值 OFF

    将原始服务器 ID 和纪元记录到 ndb_binlog_index 表中。

    注意

    这使得给定的纪元可以在 ndb_binlog_index 中具有多行,每行代表一个原始纪元。

    有关更多信息,请参见 第 25.7.4 节,“NDB 集群复制模式和表”

  • --ndb-log-transaction-dependency

    命令行格式 --ndb-log-transaction-dependency={true|false}
    系统变量 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$EPOCH_TRANS() 函数启用 NDB 集群复制冲突检测和解决(请参见 NDB$EPOCH_TRANS())。有关更多信息,请参见 第 25.7.12 节,“NDB 集群复制冲突解决”

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

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

  • --ndb-mgm-tls=[relaxed|strict]

    命令行格式 --ndb-mgm-tls=[strict|relaxed]
    系统变量 ndb_mgm_tls
    范围 全局
    动态
    SET_VAR 提示适用
    类型 枚举
    默认值 relaxed
    有效值

    relaxed

    strict

    设置 NDB 集群的 TLS 连接所需的 TLS 支持级别;该值是 relaxedstrict 之一。 relaxed 表示会尝试建立 TLS 连接,但不需要成功;strict 表示连接需要 TLS。默认值为 relaxed

  • --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 集群中设置此 MySQL 服务器的节点 ID。

    --ndb-nodeid 选项会覆盖使用 --ndb-connectstring 设置的任何节点 ID,无论这两个选项的顺序如何。

    此外,如果使用 --ndb-nodeid,则必须在 [mysqld][api] 部分的 config.ini 中找到匹配的节点 ID,或者文件中必须存在一个 open [mysqld][api] 部分(也就是说,没有指定 NodeIdId 参数的部分)。这在将节点 ID 指定为连接字符串的一部分时也是如此。

    无论如何确定节点 ID,它都将显示为 SHOW STATUS 输出中的全局状态变量 Ndb_cluster_node_id 的值,以及 SHOW ENGINE NDBCLUSTER STATUS 输出的 connection 行中的 cluster_node_id

    有关 NDB 集群 SQL 节点的节点 ID 的更多信息,请参见 第 25.4.3.7 节,“在 NDB 集群中定义 SQL 和其他 API 节点”

  • --ndbinfo={ON|OFF|FORCE}

    命令行格式 --ndbinfo[=value]
    类型 枚举
    默认值 ON
    有效值

    ON

    OFF

    FORCE

    启用 ndbinfo 信息数据库的插件。默认情况下,只要启用 NDBCLUSTER,它就会打开。

  • --ndb-optimization-delay=milliseconds

    命令行格式 --ndb-optimization-delay=#
    系统变量 ndb_optimization_delay
    范围 全局
    动态
    SET_VAR 提示适用
    类型 整数
    默认值 10
    最小值 0
    最大值 100000
    单位 milliseconds

    通过在 OPTIMIZE TABLE 语句上设置 NDB 表,来设置行集之间等待的毫秒数。默认值为 10。

  • --ndb-optimized-node-selection

    命令行格式 --ndb-optimized-node-selection

    启用针对事务节点选择的优化。默认情况下启用;使用 --skip-ndb-optimized-node-selection 来禁用。

  • ndb-tls-search-path=path

    命令行格式 --ndb-tls-search-path=path
    系统变量 ndb_tls_search_path
    范围 全局
    动态
    SET_VAR 提示适用
    类型 路径名称
    默认值(Unix) $HOME/tls
    默认值(Windows) $HOMEDIR/tls

    用于搜索 NDB TLS 连接的 CA 和私钥的目录列表。该列表在 Unix 平台上用逗号分隔,在 Windows 上用分号分隔。

  • --ndb-transid-mysql-connection-map=state

    命令行格式 --ndb-transid-mysql-connection-map[=state]
    类型 枚举
    默认值 ON
    有效值

    ON

    OFF

    FORCE

    启用或禁用处理 ndb_transid_mysql_connection_map 表(位于 INFORMATION_SCHEMA 数据库中)的插件。接受以下值之一:ONOFFFORCEON(默认值)启用插件。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 提示适用
    类型 整数
    默认值 120
    默认值 30
    最小值 0
    最大值 31536000
    单位

    此选项设置 MySQL 服务器在接受 MySQL 客户端连接之前等待与 NDB Cluster 管理节点和数据节点建立连接的时间段。该时间以秒为单位。默认值为 30

  • --ndb-wait-setup=seconds

    命令行格式 --ndb-wait-setup=#
    系统变量 ndb_wait_setup
    范围 全局
    动态
    SET_VAR 提示适用
    类型 整数
    默认值 120
    默认值 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 系统变量

本节提供有关特定于 NDB Cluster 和 NDB 存储引擎的 MySQL 服务器系统变量的详细信息。有关特定于 NDB Cluster 的系统变量,请参见 第 7.1.8 节,“服务器系统变量”。有关使用系统变量的一般信息,请参见 第 7.1.9 节,“使用系统变量”

  • ndb_autoincrement_prefetch_sz

    命令行格式 --ndb-autoincrement-prefetch-sz=#
    系统变量 ndb_autoincrement_prefetch_sz
    范围 全局、会话
    动态
    SET_VAR 提示适用
    类型 整数
    默认值 512
    最小值 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 REPLICA 会导致 NDB Cluster 副本从其 ndb_apply_status 表中清除所有行。可以通过设置 ndb_clear_apply_status=OFF 来禁用此功能。

  • ndb_conflict_role

    命令行格式 --ndb-conflict-role=value
    系统变量 ndb_conflict_role
    范围 全局
    动态
    SET_VAR 提示适用
    类型 枚举
    默认值 NONE
    有效值

    NONE

    PRIMARY

    SECONDARY

    PASS

    确定此 SQL 节点(以及 NDB Cluster)在循环(“活动-活动”)复制设置中的作用。ndb_conflict_role 可以取以下值之一:PRIMARYSECONDARYPASSNULL(默认值)。在更改 ndb_conflict_role 之前,必须停止副本 SQL 线程。此外,无法直接在 PASSPRIMARYSECONDARY 之间进行更改;在这种情况下,必须确保已停止 SQL 线程,然后首先执行 SET @@GLOBAL.ndb_conflict_role = 'NONE'

    此变量取代了已弃用的 ndb_slave_conflict_role

    有关更多信息,请参见 第 25.7.12 节,“NDB Cluster 复制冲突解决”

  • 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=#
    系统变量 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 语句”)。默认值为 FIXED

  • ndb_deferred_constraints

    命令行格式 --ndb-deferred-constraints=#
    系统变量 ndb_deferred_constraints
    范围 全局、会话
    动态
    SET_VAR 提示适用
    类型 整数
    默认值 0
    最小值 0
    最大值 1

    控制约束检查是否被延迟,在支持这些约束检查的情况下。0 是默认值。

    此变量通常不需要用于 NDB Cluster 或 NDB Cluster 复制的操作,它主要用于测试。

  • 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
    最大值 9223372036854775807

    设置 NDB API 可以为缓冲事件分配的最大内存量(以字节为单位)。0 表示没有限制,也是默认值。

  • ndb_extra_logging

    命令行格式 ndb_extra_logging=#
    系统变量 ndb_extra_logging
    范围 全局
    动态
    SET_VAR 提示适用
    类型 整数
    默认值 1
    最小值 0
    最大值 1

    此变量启用记录特定于 NDB 存储引擎的信息到 MySQL 错误日志中。

    当此变量设置为 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 表是否完全复制。此设置可以使用 COMMENT="NDB_TABLE=FULLY_REPLICATED=..."CREATE TABLEALTER TABLE 语句中为单个表覆盖。有关语法和其他信息,请参见 第 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_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.19 ndb_index_stat_option 选项和值

    名称 描述 默认值/单位 最小值/最大值
    loop_enable 1000 毫秒 0/4G
    loop_idle 空闲时休眠的时间 1000 毫秒 0/4G
    loop_busy 当有更多工作等待时休眠的时间 100 毫秒 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 分钟 1/4G
    delete_batch 8 0/4G
    clean_delay 1 分钟 0/4G
    error_batch 4 1/4G
    error_delay 1 分钟 1/4G
    evict_batch 8 1/4G
    evict_delay 从读取时间开始清除 LRU 缓存 1 分钟 0/4G
    cache_limit mysqld 用于缓存索引统计信息的内存最大量(以字节为单位);当超过此限制时,会清除缓存。 32 MB 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 列上进行连接也不能下推。

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

    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 连接,并且结果按已排序的索引排序或分组,则此索引无法提供已排序的行,这将强制写入已排序的临时文件。

    有关下推连接性能的两个附加信息来源可用

  • 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 提示适用
    类型 布尔值
    默认值 OFF

    导致对 NDB 表的更新写入二进制日志。此变量的设置对使用 log_bin 尚未在服务器上启用二进制日志记录的情况下没有影响。ndb_log_bin 默认值为 0(FALSE)。

  • ndb_log_binlog_index

    命令行格式 --ndb-log-binlog-index[={OFF|ON}]
    系统变量 ndb_log_binlog_index
    范围 全局
    动态
    SET_VAR 提示适用
    类型 布尔值
    默认值 ON

    导致将纪元到二进制日志位置的映射插入到 ndb_binlog_index 表中。设置此变量对使用 log_bin 尚未为服务器启用二进制日志记录的情况下没有影响。(此外,ndb_log_bin 必须不要禁用。)ndb_log_binlog_index 默认值为 1 (ON);通常,在生产环境中没有必要更改此值。

  • ndb_log_empty_epochs

    命令行格式 --ndb-log-empty-epochs[={OFF|ON}]
    系统变量 ndb_log_empty_epochs
    范围 全局
    动态
    SET_VAR 提示适用
    类型 布尔值
    默认值 OFF

    当此变量设置为 0 时,没有更改的纪元事务不会写入二进制日志,尽管即使对于 ndb_binlog_index 中的空纪元,也会写入一行。

  • ndb_log_empty_update

    命令行格式 --ndb-log-empty-update[={OFF|ON}]
    系统变量 ndb_log_empty_update
    范围 全局
    动态
    SET_VAR 提示适用
    类型 布尔值
    默认值 OFF

    当此变量设置为 ON (1) 时,即使启用 log_replica_updates,没有更改的更新事务也会写入二进制日志。

  • ndb_log_exclusive_reads

    命令行格式 --ndb-log-exclusive-reads[={OFF|ON}]
    系统变量 ndb_log_exclusive_reads
    范围 全局、会话
    动态
    SET_VAR 提示适用
    类型 布尔值
    默认值 0

    此变量决定是否使用排他锁记录主键读取,这允许 NDB Cluster Replication 基于读取冲突进行冲突检测和解决。要启用这些锁,请将 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 Cluster Replication 和 NDB$EPOCH_TRANS() 冲突检测)。要更改设置,请使用 --ndb-log-transaction-id 选项。

    ndb_log_transaction_id 在主线 MySQL Server 8.4 中不受支持。

    有关更多信息,请参见 第 25.7.12 节,“NDB Cluster 复制冲突解决”

  • ndb_log_transaction_compression

    命令行格式 --ndb-log-transaction-compression
    系统变量 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=#
    系统变量 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}]
    系统变量 ndb_metadata_check
    范围 全局
    动态
    SET_VAR 提示适用
    类型 布尔值
    默认值 ON

    NDB 使用后台线程来检查每个ndb_metadata_check_interval 秒的元数据更改,与 MySQL 数据字典进行比较。可以通过将 ndb_metadata_check 设置为 OFF 来禁用此元数据更改检测线程。默认情况下,该线程处于启用状态。

  • ndb_metadata_check_interval

    命令行格式 --ndb-metadata-check-interval=#
    系统变量 ndb_metadata_check_interval
    范围 全局
    动态
    SET_VAR 提示适用
    类型 整数
    默认值 60
    最小值 0
    最大值 31536000
    单位

    NDB 在后台运行一个元数据更改检测线程,以确定 NDB 字典何时相对于 MySQL 数据字典发生了更改。默认情况下,此类检查之间的间隔为 60 秒;这可以通过设置 ndb_metadata_check_interval 的值来调整。要启用或禁用该线程,请使用ndb_metadata_check

  • ndb_metadata_sync

    系统变量 ndb_metadata_sync
    范围 全局
    动态
    SET_VAR 提示适用
    类型 布尔值
    默认值 false

    设置此变量会导致更改监视器线程覆盖为ndb_metadata_checkndb_metadata_check_interval 设置的任何值,并进入持续更改检测阶段。当线程确定没有更多更改要检测时,它会暂停,直到二进制日志记录线程完成所有检测到的对象的同步。ndb_metadata_sync 然后设置为 false,更改监视器线程恢复为由 ndb_metadata_checkndb_metadata_check_interval 设置确定的行为。

    将此变量设置为 true 会导致排除对象列表被清除;将其设置为 false 会清除要重试的对象列表。

  • ndb_optimized_node_selection

    命令行格式 --ndb-optimized-node-selection=#
    系统变量 ndb_optimized_node_selection
    范围 全局
    动态
    SET_VAR 提示适用
    类型 整数
    默认值 3
    最小值 0
    最大值 3

    这里描述了两种形式的优化节点选择。

    1. SQL 节点使用邻近性来确定事务协调器;也就是说,选择最接近SQL 节点的的节点作为事务协调器。为此,与 SQL 节点具有共享内存连接的节点被认为最接近SQL 节点;其次是(按邻近性递减顺序):TCP 连接到 localhost,然后是从除 localhost 之外的主机上的 TCP 连接。

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

    此选项取其中一个整数:01233 是默认值。这些值会影响节点选择,如下所示

    • 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 提示适用
    类型 布尔值
    默认值 ON

    启用对任何随后创建的NDB 表的任何片段副本的读取;这样做会大大提高表的读取性能,而写入成本相对较低。

    如果 SQL 节点和节点使用相同的主机名或 IP 地址,则会自动检测到这一事实,因此优先选择将读取发送到同一主机。如果这些节点位于同一主机上但使用不同的 IP 地址,则可以通过将 SQL 节点上的ndb_data_node_neighbour 的值设置为节点的节点 ID 来告诉 SQL 节点使用正确的节点。

    要启用或禁用对单个表的任何片段副本的读取,您可以在CREATE TABLEALTER TABLE 语句中相应地设置表的NDB_TABLE 选项READ_BACKUP;有关更多信息,请参见第 15.1.20.12 节,“设置 NDB 注释选项”

  • ndb_recv_thread_activation_threshold

    命令行格式 --ndb-recv-thread-activation-threshold=#
    系统变量 ndb_recv_thread_activation_threshold
    范围 全局
    动态
    SET_VAR 提示适用
    类型 整数
    默认值 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 提示适用
    类型 位图
    默认值 [空]

    用于将接收线程锁定到特定 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

    这表示事件缓冲区中完全缓冲但尚未被 binlog 注入器线程消耗的纪元数的阈值。当超过这种程度的滑移(延迟)时,会报告事件缓冲区状态消息,并提供 BUFFERED_EPOCHS_OVER_THRESHOLD 作为原因(参见第 25.6.2.3 节,“集群日志中的事件缓冲区报告”)。当从节点接收纪元并在事件缓冲区中完全缓冲时,滑移会增加;当 binlog 注入器线程消耗纪元时,滑移会减少。空纪元会被缓冲和排队,因此只有在使用 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
    系统变量 ndb_schema_dist_lock_wait_timeout
    范围 全局
    动态
    SET_VAR 提示适用
    类型 整数
    默认值 30
    最小值 0
    最大值 1200
    单位

    在模式分发期间,等待每个 SQL 节点上的元数据锁的时间(以秒为单位),以便更改其本地数据字典以反映 DDL 语句更改。超过此时间后,会返回警告,表明给定 SQL 节点的的字典未更新更改。这样可以避免二进制日志记录线程在处理模式操作时等待过长时间。

  • ndb_schema_dist_timeout

    命令行格式 --ndb-schema-dist-timeout=value
    系统变量 ndb_schema_dist_timeout
    范围 全局
    动态
    SET_VAR 提示适用
    类型 整数
    默认值 120
    最小值 5
    最大值 1200
    单位

    在检测到模式分发期间的超时之前要等待的时间(以秒为单位)。这可能表明其他 SQL 节点正在经历过度活动,或者它们正在以某种方式被阻止在此时获取必要的资源。

  • ndb_schema_dist_upgrade_allowed

    命令行格式 --ndb-schema-dist-upgrade-allowed=value
    系统变量 ndb_schema_dist_upgrade_allowed
    范围 全局
    动态
    SET_VAR 提示适用
    类型 布尔值
    默认值 true

    允许在连接到 NDB 时升级架构分布表。当值为 true(默认值)时,此更改将推迟到所有 SQL 节点都升级到相同版本的 NDB 集群软件后才会执行。

    注意

    在执行升级之前,架构分布的性能可能会略有下降。

  • 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
    已弃用
    系统变量 ndb_slave_conflict_role
    范围 全局
    动态
    SET_VAR 提示适用
    类型 枚举
    默认值 NONE
    有效值

    NONE

    PRIMARY

    SECONDARY

    PASS

    已弃用的 ndb_conflict_role 同义词。

  • ndb_table_no_logging

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

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

    有关非日志 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}]
    系统变量 replica_allow_batching
    范围 全局
    动态
    SET_VAR 提示适用
    类型 布尔值
    默认值 ON

    是否在 NDB 集群副本上启用批量更新。

    允许在副本上进行批量更新可以大大提高性能,尤其是在复制 TEXTBLOBJSON 列时。因此,replica_allow_batching 默认情况下处于启用状态。

    设置此变量仅在使用带有 NDB 存储引擎的复制时才有效;在 MySQL 服务器 8.4 中,它存在但不执行任何操作。有关更多信息,请参阅 第 25.7.6 节,“启动 NDB 集群复制(单个复制通道)”

  • ndb_replica_batch_size

    命令行格式 --ndb-replica-batch-size=#
    系统变量 ndb_replica_batch_size
    范围 全局
    动态
    SET_VAR 提示适用
    类型 整数
    默认值 2097152
    最小值 0
    最大值 2147483648
    单位 字节

    确定复制应用线程使用的批量大小(以字节为单位)。设置此变量而不是 --ndb-batch-size 选项以将此设置应用于副本,不包括任何其他会话。

    如果此变量未设置(默认值为 2 MB),则其有效值将是 --ndb-batch-size 值和 2 MB 之间的较大值。

  • ndb_replica_blob_write_batch_bytes

    命令行格式 --ndb-replica-blob-write-batch-bytes=#
    系统变量 ndb_replica_blob_write_batch_bytes
    范围 全局
    动态
    SET_VAR 提示适用
    类型 整数
    默认值 2097152
    最小值 0
    最大值 2147483648
    单位 字节

    控制复制应用线程用于 blob 数据的批量写入大小。

    使用此变量而不是 --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 以用于检测复制循环等目的时,服务器会忽略剩余位。在 I/O 和 SQL 线程中决定是否应根据服务器 ID 忽略事件时,server_id_bits 变量用于屏蔽 server_id 中的任何无关位。

    此数据可以通过 mysqlbinlog 从二进制日志中读取,前提是它以其自己的 server_id_bits 变量设置为 32(默认值)运行。

    如果 server_id 的值大于或等于 2 的 server_id_bits 次幂;否则,mysqld 拒绝启动。

    此系统变量仅受 NDB 集群支持。它不受标准 MySQL 8.4 服务器支持。

  • slave_allow_batching

    命令行格式 --slave-allow-batching[={OFF|ON}]
    已弃用
    系统变量 slave_allow_batching
    范围 全局
    动态
    SET_VAR 提示适用
    类型 布尔值
    默认值 ON

    已弃用的 replica_allow_batching 同义词。

  • transaction_allow_batching

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

    当设置为 1ON 时,此变量启用同一个事务中语句的批量处理。要使用此变量,必须先通过将其设置为 0OFF 来禁用 autocommit;否则,设置 transaction_allow_batching 不会有任何效果。

    在仅执行写入操作的事务中使用此变量是安全的,因为启用它会导致从“之前”映像中读取数据。在发出 SELECT 之前,您应该确保已提交任何挂起的事务(如果需要,使用显式 COMMIT)。

    重要

    transaction_allow_batching 不应在给定语句的效果可能取决于同一个事务中先前语句的结果的情况下使用。

    此变量目前仅支持 NDB 集群。

以下列表中的系统变量都与 ndbinfo 信息数据库相关。

  • ndbinfo_database

    系统变量 ndbinfo_database
    范围 全局
    动态
    SET_VAR 提示适用
    类型 字符串
    默认值 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 节,“服务器状态变量”.