文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  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 用于 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
    系统变量 ndb_applier_allow_skip_epoch
    范围 全局
    动态
    SET_VAR 提示适用

    --replica-skip-errors 一起使用,使 NDB 忽略跳过的 epoch 事务。单独使用时无效。

  • --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 连接的最大数量中。

    假设您有两个集群主机计算机,每个计算机运行一个 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

    ndb_binlog_index 表中记录源服务器 ID 和纪元。

    注意

    这使得特定纪元可以在 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,或者文件(即,没有指定 NodeIdId 参数的部分)中必须存在一个 open [mysqld][api] 部分。如果节点 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,它就会处于 ON 状态。

  • --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 数据库中。取值为 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 提示适用
    类型 整数
    默认值 120
    默认值 30
    最小值 0
    最大值 31536000
    单位

    此选项设置 MySQL 服务器等待与 NDB Cluster 管理和数据节点建立连接的时间段,然后再接受 MySQL 客户端连接。时间以秒为单位指定。默认值为 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)在循环 (active-active) 复制设置中的角色。 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 表是否完全复制。此设置可以使用 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_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 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 列上进行联接也不能下推。

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

    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 复制基于读取冲突的冲突检测和解决。要启用这些锁,请将 ndb_log_exclusive_reads 的值设置为 1。0 是默认值,它会禁用这种锁定。

    有关更多信息,请参见 读取冲突检测和解决

  • ndb_log_orig

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

    显示是否在 ndb_binlog_index 表中记录了原始服务器 ID 和时期。使用 --ndb-log-orig 服务器选项设置。

  • ndb_log_transaction_id

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

    此只读布尔系统变量显示副本 mysqld 是否在二进制日志中写入 NDB 事务 ID(需要使用 active-active NDB Cluster 复制以及 NDB$EPOCH_TRANS() 冲突检测)。要更改设置,请使用 --ndb-log-transaction-id 选项。

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

    有关更多信息,请参见 第 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 节点;下一个最接近的(按邻近度递减排列)是:到 localhost 的 TCP 连接,然后是来自除 localhost 之外的其他主机上的 TCP 连接。

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

    此选项采用以下整数之一:01233 是默认值。这些值会影响节点选择,如下所示。

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

    • 1:与 SQL 节点的邻近度用于确定事务协调器。

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

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

    邻近度确定如下。

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

    2. 对于与其他 API 节点共享同一主机的 API 节点,将该值减 1。假设 Group 的默认值,与 API 节点位于同一主机的 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 节点和数据节点使用相同的 hostname 或 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 提示适用
    类型 整数
    默认值 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

    这表示事件缓冲区中完全缓冲但尚未被 binlog 注入器线程消耗的时期的数量的阈值。当此程度的滑动(延迟)超过阈值时,会报告事件缓冲区状态消息,其中提供 BUFFERED_EPOCHS_OVER_THRESHOLD 作为原因(请参见第 25.6.2.3 节,“集群日志中的事件缓冲区报告”)。当从数据节点接收一个时期并在事件缓冲区中完全缓冲时,滑动会增加;当 binlog 注入器线程消耗一个时期时,滑动会减少。空时期会被缓冲和排队,因此只有在使用 Ndb::setEventBufferQueueEmptyEpoch() 方法(来自 NDB API)启用此功能时,才会将其包含在此计算中。

  • 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时升级模式分配表。当为真(默认值)时,此更改将延迟到所有 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
    已弃用
    系统变量 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表不会写入磁盘:这意味着不会创建任何表模式文件,并且表不会记录。

    注意

    目前设置此变量没有任何影响。这是一个已知问题;请参见错误 #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 Cluster 副本上启用批量更新。

    在副本上允许批量更新可以极大地提高性能,尤其是在复制TEXTBLOBJSON列时。出于这个原因,replica_allow_batching默认情况下是启用的。

    仅当使用NDB存储引擎进行复制时,设置此变量才会产生影响;在 MySQL Server 9.0 中,它存在但不起作用。有关更多信息,请参见第 25.7.6 节“启动 NDB Cluster 复制(单个复制通道)”

  • 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 Cluster 使用AnyValue存储服务器 ID)。

    server_id中提取有效服务器 ID 以用于检测复制循环等目的时,服务器会忽略剩余的位。当决定是否应根据服务器 ID 忽略事件时,server_id_bits变量用于在 I/O 和 SQL 线程中屏蔽server_id的任何无关位。

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

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

    此系统变量仅受 NDB Cluster 支持。它在标准 MySQL 9.0 服务器中不受支持。

  • 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将不会产生任何影响。

    将此变量与仅执行写入的事务一起使用是安全的,因为启用它会导致从before图像中读取。在发出SELECT之前,应确保任何挂起的事务都被提交(如果需要,可以使用显式的COMMIT)。

    重要

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

    此变量目前仅受 NDB Cluster 支持。

以下列表中的系统变量都与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 集群状态变量

本节提供有关与 NDB 集群和NDB 存储引擎相关的 MySQL 服务器状态变量的详细信息。有关不特定于 NDB 集群的状态变量以及使用状态变量的常规信息,请参见第 7.1.10 节,“服务器状态变量”