Documentation Home
MySQL 8.0 参考手册  / 第 23 章 MySQL NDB Cluster 8.0  / 23.4 NDB Cluster的配置  / 23.4.3 NDB Cluster 配置文件  /  23.4.3.9 NDB Cluster 的 MySQL 服务器选项和变量

23.4.3.9 NDB Cluster 的 MySQL 服务器选项和变量

本节提供有关特定于 NDB Cluster 的 MySQL 服务器选项、服务器和状态变量的信息。有关使用这些的一般信息,以及不特定于 NDB Cluster 的其他选项和变量,请参阅第 5.1 节,“MySQL 服务器”

对于集群配置文件中使用的 NDB Cluster 配置参数(通常名为config.ini),请参阅第 23.4 节,“NDB Cluster 的配置”

23.4.3.9.1 NDB Cluster 的 MySQL 服务器选项

本节提供 与 NDB Cluster 相关的mysqld服务器选项的描述。有关 不特定于 NDB Cluster 的 mysqld选项的信息,以及有关使用mysqld选项的一般信息,请参阅第 5.1.7 节,“服务器命令选项”

有关与其他 NDB Cluster 进程一起使用的命令行选项的信息,请参阅第 23.5 节,“NDB Cluster 程序”

  • --ndbcluster

    命令行格式 --ndbcluster[=value]
    被禁用 skip-ndbcluster
    类型 枚举
    默认值 ON
    有效值

    OFF

    FORCE

    NDBCLUSTER存储引擎是使用 NDB Cluster 所必需的 。如果 mysqld二进制文件包含对 NDBCLUSTER存储引擎的支持,则默认情况下禁用该引擎。使用该 --ndbcluster选项启用它。用于--skip-ndbcluster明确禁用引擎。

    如果也使用 该--ndbcluster选项,则忽略该选项(并且 启用 NDB存储引擎 )。(没有必要也不希望将此选项与 一起使用。) --initialize--initialize

  • --ndb-allow-copying-alter-table=[ON|OFF]

    命令行格式 --ndb-allow-copying-alter-table[={OFF|ON}]
    系统变量 ndb_allow_copying_alter_table
    范围 全局,会话
    动态的 是的
    SET_VAR提示适用
    类型 布尔值
    默认值 ON

    Let和其他 DDL 语句在 表ALTER TABLE上使用复制操作。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忽略跳过的纪元交易。单独使用时没有效果。

  • --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 节点。 每个连接都需要在集群配置 ( ) 文件中有自己的 [api]或部分,并计入集群支持的最大 API 连接数。 [mysqld]config.ini

    假设您有 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=list

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

    指定以逗号分隔的节点 ID 列表,用于连接到 SQL 节点使用的集群。此列表中的节点数必须与为该 --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

    此选项可用于设置BLOBNDB Cluster 应用程序中数据读取批处理的大小(以字节为单位)。BLOB当当前事务中要读取 的数据量超过此批大小时,BLOB将立即执行任何挂起的读取操作。

    此选项的最大值为 4294967295;默认值为 65536。将其设置为 0 具有禁用 BLOB读取批处理的效果。

    笔记

    在 NDB API 应用程序中,您可以 使用 和 方法 控制BLOB写入批处理 。setMaxPendingBlobReadBytes()getMaxPendingBlobReadBytes()

  • --ndb-blob-write-batch-bytes=bytes

    命令行格式 --ndb-blob-write-batch-bytes
    系统变量 ndb_blob_write_batch_bytes
    范围 全局,会话
    动态的 是的
    SET_VAR提示适用
    类型 整数
    默认值 65536
    最小值 0
    最大值 4294967295
    单元 字节

    此选项可用于设置BLOBNDB Cluster 应用程序中数据写入批处理的大小(以字节为单位)。BLOB当当前事务中要写入 的数据量超过此批大小时,BLOB将立即执行任何挂起的写入操作。

    此选项的最大值为 4294967295;默认值为 65536。将其设置为 0 具有禁用 BLOB写入批处理的效果。

    笔记

    在 NDB API 应用程序中,您可以 使用 和 方法 控制BLOB写入批处理 。setMaxPendingBlobWriteBytes()getMaxPendingBlobWriteBytes()

  • --ndb-connectstring=connection_string

    命令行格式 --ndb-connectstring
    类型 细绳

    使用NDBCLUSTER存储引擎时,该选项指定分发集群配置数据的管理服务器。有关语法,请参阅 第 23.4.3.3 节,“NDB Cluster 连接字符串”

  • --ndb-default-column-format=[FIXED|DYNAMIC]

    命令行格式 --ndb-default-column-format={FIXED|DYNAMIC}
    系统变量 ndb_default_column_format
    范围 全球的
    动态的 是的
    SET_VAR提示适用
    类型 枚举
    默认值 FIXED
    有效值

    FIXED

    DYNAMIC

    为新表 设置默认值COLUMN_FORMAT和 (请参阅第 13.1.20 节,“CREATE TABLE 语句”)。默认值为 。 ROW_FORMATFIXED

  • --ndb-deferred-constraints=[0|1]

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

    控制是否将对唯一索引的约束检查推迟到支持此类检查的提交时间。0是默认值。

    NDB Cluster 或 NDB Cluster Replication 的操作通常不需要此选项,主要用于测试。

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

    使副本mysqldmysql.ndb_apply_status使用它自己的服务器 ID 而不是源的服务器 ID将从其直接源接收到的任何更新记录到它自己的二进制日志中的 表中。在循环或链式复制设置中,这允许此类更新传播到 mysql.ndb_apply_status配置为当前 mysqld副本的任何 MySQL 服务器的表。

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

    在循环复制设置中,此选项会导致对 ndb_apply_status表的更改以完成整个电路,最终传播回原始 NDB Cluster。这也允许充当复制源的集群查看其更改(纪元)何时已应用于环中的其他集群。

    除非使用该选项启动 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_updates或 时也是如此。log_slave_updates

    默认情况下禁用此选项。禁用 --ndb-log-empty-epochs会导致没有更改的纪元事务不写入二进制日志,尽管即使对于空纪元,仍然会写入一行ndb_binlog_index

    因为--ndb-log-empty-epochs=1导致ndb_binlog_index表的大小独立于二进制日志的大小而增加,用户应该准备好管理这个表的增长,即使他们预计集群大部分时间是空闲的。

  • --ndb-log-empty-update=[ON|OFF]

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

    导致未产生任何更改的更新被写入 ndb_apply_statusndb_binlog_index表,即使 启用 log_replica_updates或 也是如此。log_slave_updates

    默认情况下禁用此选项 ( OFF)。禁用--ndb-log-empty-update会导致没有更改的更新不会写入二进制日志。

  • --ndb-log-exclusive-reads=[0|1]

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

    使用此选项启动服务器会导致使用独占锁记录主键读取,这允许基于读取冲突进行 NDB Cluster 复制冲突检测和解决。您还可以在运行时通过将 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

    在表中记录原始服务器 ID 和纪元 ndb_binlog_index

    笔记

    这使得给定纪元在 中有多行成为可能ndb_binlog_index,每个原始纪元对应一行。

    有关更多信息,请参阅 第 23.7.4 节,“NDB Cluster 复制模式和表”

  • --ndb-log-transaction-id

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

    导致副本mysqld在二进制日志的每一行中写入 NDB 事务 ID。默认值为FALSE

    主线 MySQL Server 8.0 不支持此选项。需要使用 NDB$EPOCH_TRANS()函数启用 NDB Cluster 复制冲突检测和解决(请参阅 NDB$EPOCH_TRANS())。有关更多信息,请参阅 第 23.7.11 节,“NDB Cluster 复制冲突解决”

    已弃用的 log_bin_use_v1_row_events 系统变量(默认为)在您使用 时 OFF不得设置为。 ON--ndb-log-transaction-id

  • --ndb-log-update-as-write

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

    源上的更新是作为更新 ( OFF) 还是写入 ( ON) 写入二进制日志。启用此选项 --ndb-log-update-as-write--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 表

  • --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选项都会覆盖使用 设置的任何节点 ID 。--ndb-connectstring

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

    无论节点 ID 如何确定,它在 的输出中显示为全局状态变量的值 Ndb_cluster_node_idSHOW STATUScluster_node_id在 的connection输出行中显示 SHOW ENGINE NDBCLUSTER STATUS

    有关 NDB Cluster SQL 节点的节点 ID 的更多信息,请参阅第 23.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启用,它就会打开。

  • --ndb-optimization-delay=milliseconds

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

    OPTIMIZE TABLE通过表上的语句 设置行集之间等待的毫秒数 NDB。默认值为 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

    启用或禁用处理 数据库ndb_transid_mysql_connection_map 中表的插件INFORMATION_SCHEMA。采用值ONOFF或之一FORCEON(默认)启用插件。 OFF禁用插件,这使得 ndb_transid_mysql_connection_map 无法访问。FORCE如果插件无法加载和启动,则阻止 MySQL 服务器启动。

    您可以 ndb_transid_mysql_connection_map 通过检查 的输出来查看表插件是否正在运行 SHOW PLUGINS

  • --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仅当明确给出选项时,服务器才会为此存储引擎分配内存和其他资源 。有关示例,请参见第 23.4.1 节,“NDB Cluster 的快速测试设置”

23.4.3.9.2 NDB Cluster 系统变量

NDB本节提供有关特定于 NDB Cluster 和存储引擎 的 MySQL 服务器系统变量的详细信息 。对于不特定于 NDB Cluster 的系统变量,请参阅 第 5.1.8 节,“服务器系统变量”。有关使用系统变量的一般信息,请参阅 第 5.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_cache_check_time

    命令行格式 --ndb-cache-check-time=#
    弃用 是的
    系统变量 ndb_cache_check_time
    范围 全球的
    动态的 是的
    SET_VAR提示适用
    类型 整数
    默认值 0
    最小值 0
    最大值 31536000
    单元 毫秒

    MySQL 查询缓存检查 NDB Cluster SQL 节点之间经过的毫秒数。将此设置为 0(默认值和最小值)意味着查询缓存会检查每个查询的有效性。

    此变量的建议最大值为 1000,这意味着每秒执行一次检查。较大的值意味着执行检查并可能因不同 SQL 节点上的更新而失效的频率较低。通常不希望将其设置为大于 2000 的值。

    笔记

    查询缓存 ndb_cache_check_time在 MySQL 5.7 中已弃用;MySQL 8.0 中删除了查询缓存。

  • ndb_clear_apply_status

    命令行格式 --ndb-clear-apply-status[={OFF|ON}]
    系统变量 ndb_clear_apply_status
    范围 全球的
    动态的 是的
    SET_VAR提示适用
    类型 布尔值
    默认值 ON

    默认情况下,执行RESET SLAVE会导致 NDB Cluster 副本从其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 Cluster)在循环(主动 - 主动)复制设置中的角色。 ndb_slave_conflict_role可以采用值PRIMARYSECONDARYPASSNULL(默认值)中的任何一个。必须先停止副本 SQL 线程,然后才能更改 ndb_slave_conflict_role。另外,不能直接在between PASSand either of PRIMARYor SECONDARY directly之间改变;在这种情况下,您必须确保 SQL 线程已停止,然后 SET @@GLOBAL.ndb_slave_conflict_role = 'NONE'先执行。

    此变量替换 ndb_slave_conflict_role,自 NDB 8.0.23 起已弃用。

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

  • ndb_data_node_neighbour

    命令行格式 --ndb-data-node-neighbour=#
    系统变量 ndb_data_node_neighbour
    范围 全球的
    动态的 是的
    SET_VAR提示适用
    类型 整数
    默认值 0
    最小值 0
    最大值 255

    设置最近数据节点的 ID——也就是说,选择一个首选的非本地数据节点来执行事务,而不是在与 SQL 或 API 节点相同的主机上运行的数据节点。这用于确保在访问完全复制的表时,我们在该数据节点上访问它,以确保始终尽可能使用表的本地副本。这也可以用于为交易提供提示。

    在物理上比同一主机上的其他节点更近并因此具有比其他节点更高的网络吞吐量的节点的情况下,这可以改进数据访问时间。

    有关详细信息,请参阅第 13.1.20.12 节,“设置 NDB 注释选项”

    笔记

    提供了一个等效的方法 set_data_node_neighbour() 用于 NDB API 应用程序。

  • ndb_dbg_check_shares

    命令行格式 --ndb-dbg-check-shares=#
    介绍 8.0.13-ndb-8.0.13
    系统变量 ndb_dbg_check_shares
    范围 全局,会话
    动态的 是的
    SET_VAR提示适用
    类型 整数
    默认值 0
    最小值 0
    最大值 1

    设置为 1 时,检查是否没有共享存在。仅在调试版本中可用。

  • ndb_default_column_format

    命令行格式 --ndb-default-column-format={FIXED|DYNAMIC}
    系统变量 ndb_default_column_format
    范围 全球的
    动态的 是的
    SET_VAR提示适用
    类型 枚举
    默认值 FIXED
    有效值

    FIXED

    DYNAMIC

    为新表 设置默认值COLUMN_FORMAT和 (请参阅第 13.1.20 节,“CREATE TABLE 语句”)。默认值为 。 ROW_FORMATFIXED

  • 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 时,NDB写入 MySQL 错误日志的唯一特定信息与事务处理有关。如果它设置为大于 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 TABLEor ALTER TABLE语句中为单个表覆盖此设置;有关语法和其他信息, 请参阅 第 13.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-enableset 启动服务器以 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整数值可以 使用KM或 作为后缀G

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

    表 23.20 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 米 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 内核(数据节点)。以前,连接是NDB由 SQL 节点使用多个访问来处理的;但是,当 ndb_join_pushdown启用时,可推送连接将完整发送到数据节点,在那里它可以分布在数据节点之间并在数据的多个副本上并行执行,并将单个合并结果返回到mysqld。这可以大大减少处理此类连接所需的 SQL 节点和数据节点之间的往返次数。

    默认情况下,ndb_join_pushdown 启用。

    NDB 下推连接的条件。  为了使连接可推送,它必须满足以下条件:

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

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

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

    2. 不支持 查询引用BLOB或 列。TEXT

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

      这意味着FOR UPDATE 无法下推连接 using。

    4. 为了向下推送连接,必须使用 、 或 访问方法之一或这些方法的某种组合来访问连接中的 refeq_ref表  const 。

      只能使用 推送外部连接的子表 eq_ref

      如果推送连接的根是 eq_refor ,则只能 追加const连接的子表。eq_ref(连接的表 ref很可能成为另一个推送连接的根。)

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

    5. 联接引用表显式分区由 [LINEAR] HASH,LISTRANGE当前无法下推。

    您可以通过检查是否可以下推给定的连接EXPLAIN;当可以下推连接时,您可以 在输出pushed joinExtra 列中看到对 的引用,如本例所示:

    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提示适用
    类型 布尔值
    默认值(≥ 8.0.16-ndb-8.0.16) OFF
    默认值(≤ 8.0.15-ndb-8.0.15) ON

    导致将NDB表更新写入二进制日志。如果尚未在使用 的服务器上启用二进制日志记录,则此变量的设置无效 log_bin。在 NDB 8.0 中, ndb_log_bin默认为 0 (FALSE)。

  • ndb_log_binlog_index

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

    导致纪元到二进制日志中位置的映射被插入到ndb_binlog_index 表中。如果尚未为使用 的服务器启用二进制日志记录,则设置此变量无效 log_bin。(此外, ndb_log_bin不得禁用。)ndb_log_binlog_index默认为 1( ON); 通常,从不需要在生产环境中更改此值。

  • ndb_log_empty_epochs

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

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

  • ndb_log_empty_update

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

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

  • ndb_log_exclusive_reads

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

    此变量确定是否使用独占锁记录主键读取,这允许基于读取冲突进行 NDB Cluster 复制冲突检测和解决。要启用这些锁定,请将 的值设置 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.0 不支持。

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

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

    您应该注意,使用 启动 MySQL 服务器 --binlog-transaction-compression 会强制启用此变量 ( ON),并且这会覆盖 --ndb-log-transaction-compression在命令行或my.cnf文件中进行的任何设置,如下所示:

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

    有关二进制日志事务压缩的更多信息,例如哪些事件被压缩或未被压缩,以及使用此功能时要注意的行为更改,请参阅 第 5.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

    ZSTD如果由启用,则用于将压缩事务写入副本的二进制日志 的压缩级别ndb_log_transaction_compression。如果mysqld未编译为支持NDB存储引擎,则不支持。

    有关详细信息,请参阅第 5.4.4.5 节,“二进制日志事务压缩”

  • ndb_metadata_check

    命令行格式 --ndb-metadata-check[={OFF|ON}]
    介绍 8.0.16-ndb-8.0.16
    系统变量 ndb_metadata_check
    范围 全球的
    动态的 是的
    SET_VAR提示适用
    类型 布尔值
    默认值 ON

    NDBndb_metadata_check_interval 与 MySQL 数据字典相比,使用后台线程每秒检查一次元数据更改 。可以通过设置 ndb_metadata_check为 禁用此元数据更改检测线程OFF。默认情况下启用该线程。

  • ndb_metadata_check_interval

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

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

  • ndb_metadata_sync

    介绍 8.0.19-ndb-8.0.19
    系统变量 ndb_metadata_sync
    范围 全球的
    动态的 是的
    SET_VAR提示适用
    类型 布尔值
    默认值 false

    ndb_metadata_check设置此变量会导致更改监视器线程覆盖为或 设置的任何值 ndb_metadata_check_interval,并进入连续更改检测期。当线程确定没有更多的更改被检测到时,它会停止,直到二进制日志线程完成所有检测到的对象的同步。 ndb_metadata_sync然后设置为 ,并且更改监视器线程恢复到由和 false的设置确定的行为 。 ndb_metadata_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节点使用 promixity来确定事务协调器;也就是说,选择 离SQL 节点最近”的数据节点作为事务协调器。为此,与SQL节点有共享内存连接的数据节点被认为是离SQL节点最近的;下一个最接近的(按接近程度递减的顺序)是:到localhost的 TCP 连接,然后是来自除 以外的主机的 TCP 连接 localhost

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

    此选项采用整数值 012或之一33是默认值。这些值影响节点选择如下:

    • 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 节点时才需要这样做。在正常情况下,前面描述的默认调整就足够了。

    频繁更改 inndb_data_node_neighbour 是不可取的,因为这会改变集群连接的状态,因此可能会破坏每个线程对新事务的选择算法,直到它稳定为止。

  • ndb_read_backup

    命令行格式 --ndb-read-backup[={OFF|ON}]
    系统变量 ndb_read_backup
    范围 全球的
    动态的 是的
    SET_VAR提示适用
    类型 布尔值
    默认值(≥ 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 节点使用正确的数据节点。

    要为单个表启用或禁用从任何片段副本读取,您可以在 or语句中相应地为表设置NDB_TABLE 选项;有关详细信息,请参阅 第 13.1.20.12 节,“设置 NDB 注释选项”READ_BACKUPCREATE TABLEALTER TABLE

  • 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 提供原因(请参阅 第 23.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
    介绍 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。当为 true(默认值)时,此更改将被推迟,直到所有 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时,它会导致 NDB表不在磁盘上设置检查点。更具体地说,此设置适用于使用启用ENGINE NDB时 创建或更改ndb_table_no_logging的表,并在表的生命周期内继续应用,即使ndb_table_no_logging 稍后更改也是如此。假设 、ABCD我们创建的表(也可能更改),并且我们还更改了 的设置, ndb_table_no_logging如下所示:

    SET @@ndb_table_no_logging = 1;
    
    CREATE TABLE A ... ENGINE NDB;
    
    CREATE TABLE B ... ENGINE MYISAM;
    CREATE TABLE C ... ENGINE MYISAM;
    
    ALTER TABLE B ENGINE NDB;
    
    SET @@ndb_table_no_logging = 0;
    
    CREATE TABLE D ... ENGINE NDB;
    ALTER TABLE C ENGINE NDB;
    
    SET @@ndb_table_no_logging = 1;

    在前面的事件序列之后,表 AB没有检查点;A是用创建的 ENGINE NDB,B 被更改为使用 NDB,同时 ndb_table_no_logging启用。但是,表CD被记录;C被更改为使用 NDB并使用D创建ENGINE NDB,两者都 ndb_table_no_logging被禁用。设置 ndb_table_no_logging1ON不会 导致表或被C检查 D点。

    笔记

    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

    在查询计划期间强制NDB使用记录计数SELECT COUNT(*)来加速此类查询。默认值为 OFF,这允许整体上更快的查询。

  • ndb_use_transactions

    命令行格式 --ndb-use-transactions[={OFF|ON}]
    系统变量 ndb_use_transactions
    范围 全局,会话
    动态的 是的
    SET_VAR提示适用
    类型 布尔值
    默认值 ON

    您可以通过将此变量的值设置为 来禁用NDB事务支持OFF。通常不推荐这样做,尽管当给定的客户端会话用于导入一个或多个具有大事务的转储文件时,禁用该会话中的事务支持可能很有用;这允许多行插入分部分执行,而不是作为单个事务执行。在这种情况下,导入完成后,您应该将此会话的变量值重置为 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 Cluster 副本上是否启用了批量更新。从 NDB 8.0.26 开始,您应该使用 replica_allow_batchingin 代替 slave_allow_batching,该版本已弃用。

    允许对副本进行批量更新可以极大地提高性能,尤其是在复制 TEXTBLOBJSON列时。因此, replica_allow_batching在 NDB 8.0.30 及更高版本中默认启用。

    设置此变量仅在使用NDB存储引擎进行复制时有效;在 MySQL Server 8.0 中,它存在但什么也不做。有关更多信息,请参阅 第 23.7.6 节,“启动 NDB Cluster 复制(单个复制通道)”

  • ndb_replica_batch_size

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

    确定用于在副本上应用的写入的批处理大小(以字节为单位)。在 NDB 8.0.30 及更高版本中,设置此变量而不是--ndb-batch-size 将此设置应用于副本的选项,排除任何其他会话。

  • 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
    最大值 2097152
    单元 字节

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

    从 NDB 8.0.30 开始,您应该设置此变量而不是 --ndb-blob-write-batch-bytes 选项来控制副本上的 blob 批处理写入大小,不包括任何其他会话。这样做的原因是,当 ndb_replica_blob_write_batch_bytes未设置时, 有效的 blob 批量大小(即,为 blob 列写入的最大待处理字节数)由默认值 ndb_replica_blob_write_batch_bytes和为 设置的值中的最大值决定--ndb-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

    server_id 此变量指示实际标识服务器 的 32 位中最低有效位的数量。表明服务器实际上是由少于 32 位标识的,这使得剩余的一些位可以用于其他目的,例如存储由应用程序使用 NDB API 的事件 API 在结构中生成的用户数据 AnyValueOperationOptions NDB Cluster使用AnyValue来存储服务器 ID)。

    当出于检测复制循环等目的从中提取有效服务器 ID 时 server_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 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 Cluster 副本上是否启用了批量更新。从 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 中,它存在但什么也不做。有关更多信息,请参阅 第 23.7.6 节,“启动 NDB Cluster 复制(单个复制通道)”

  • transaction_allow_batching

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

    当设置为1orON时,此变量启用同一事务中的语句批处理。要使用此变量, autocommit必须首先通过将其设置为0或 来禁用它OFF;否则,设置 transaction_allow_batching 无效。

    将此变量用于只执行写入的事务是安全的,因为启用它会导致从之前图像读取。COMMIT在发出 SELECT.

    重要的

    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

    数据库的底层内部表是否ndbinfo 显示在 mysql客户端中。默认值为 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正在使用的引擎版本;只读。

23.4.3.9.3 NDB Cluster 状态变量

NDB本节提供有关与 NDB Cluster 和存储引擎 相关的 MySQL 服务器状态变量的详细信息 。对于不特定于 NDB Cluster 的状态变量,以及有关使用状态变量的一般信息,请参阅 第 5.1.10 节,“服务器状态变量”