Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  MySQL Server Options and Variables for NDB Cluster

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

本节提供了关于 NDB 集群专门的 MySQL 服务器选项、服务器和状态变量的信息。对于一般使用这些选项和变量的信息,以及其他不特定于 NDB 集群的选项和变量,请见第7.1节,“MySQL 服务器”

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

本节提供了关于mysqld 服务器选项,相关于 NDB 集群。对于不特定于 NDB 集群的mysqld选项,以及关于使用选项与mysqld的一般信息,请见第7.1.7节,“Server Command Options”

对于与其他 NDB 集群进程一起使用的命令行选项,请见第25.5节,“NDB 集群程序”

  • --ndbcluster

    Command-Line Format --ndbcluster[=值]
    Disabled by skip-ndbcluster
    Type 枚举
    Default Value ON
    Valid Values

    OFF

    FORCE

    NDBCLUSTER存储引擎是使用 NDB 集群所必需的。如果 mysqld 二进制文件包含对 NDBCLUSTER存储引擎的支持,该引擎默认处于禁用状态。使用--ndbcluster选项来启用它。使用--skip-ndbcluster选项来明确地禁用引擎。

    如果同时使用--initialize,则--ndbcluster选项将被忽略(NDB存储引擎将不会启用)。(使用这两个选项同时是没有必要的,也不建议这样做。)

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

    Command-Line Format --ndb-allow-copying-alter-table[={OFF|ON}]
    System Variable ndb_allow_copying_alter_table
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    ALTER TABLE和其他DDL语句在 NDB 表中使用复制操作。将其设置为 OFF 可以避免这种情况发生,从而可能改善关键应用程序的性能。

  • --ndb-applier-allow-skip-epoch

    Command-Line Format --ndb-applier-allow-skip-epoch
    System Variable ndb_applier_allow_skip_epoch
    Scope 全局
    Dynamic
    SET_VAR Hint Applies

    在使用--replica-skip-errors时,使用该选项可以使 NDB 忽略跳过的epoch事务。单独使用无效。

  • --ndb-batch-size=#

    Command-Line Format --ndb-batch-size
    System Variable ndb_batch_size
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 32768
    Minimum Value 0
    Maximum Value 2147483648
    Unit 字节

    这将设置用于 NDB 事务批处理的大小,以字节为单位。

  • --ndb-cluster-connection-pool=#

    Command-Line Format --ndb-cluster-connection-pool
    System Variable ndb_cluster_connection_pool
    System Variable ndb_cluster_connection_pool
    Scope 全局
    Scope 全局
    Dynamic
    Dynamic
    SET_VAR Hint Applies
    SET_VAR Hint Applies
    Type 整数
    Default Value 1
    Minimum Value 1
    Maximum Value 63

    将这个选项设置为大于 1 的值(默认值),可以使 mysqld 进程使用多个连接到集群,实际上模拟了几个 SQL 节点。每个连接都需要在集群配置文件(config.ini)中有自己的 [api][mysqld] 部分,并且计入集群支持的最大 API 连接数。

    假设您有 2 个集群主机计算机,每个计算机上运行一个 SQL 节点,该节点的 mysqld 进程使用了 --ndb-cluster-connection-pool=4 选项;这意味着集群必须有 8 个 API 握手口可用以支持这些连接(而不是 2)。所有这些连接在 SQL 节点连接到集群时被设置,并且按顺序分配给线程。

    在运行mysqld时,这个选项只有在主机机器上拥有多个CPU、多核或两者时才有用。为了获得最佳结果,值应该小于主机机器上的总核心数。如果将其设置为大于这个值,将会严重地降低性能。

    Important

    由于每个使用连接池的SQL节点占用多个API节点槽位,每个槽位都有自己的节点ID在集群中—you mustnot将节点ID作为集群连接字符串的一部分,在启动任何使用连接池的mysqld进程时。

    在使用--ndb-cluster-connection-pool选项时,将节点ID作为连接字符串的一部分设置,会导致SQL节点尝试连接集群时的节点ID分配错误。

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

    Command-Line Format --ndb-cluster-connection-pool-nodeids
    System Variable ndb_cluster_connection_pool_nodeids
    Scope Global
    Dynamic No
    SET_VAR Hint Applies No
    Type Set
    Default Value

    指定用于SQL节点连接集群的节点ID列表。该列表中的节点数必须与--ndb-cluster-connection-pool选项设置的值相同。

  • --ndb-blob-read-batch-bytes=bytes

    Command-Line Format --ndb-blob-read-batch-bytes
    System Variable ndb_blob_read_batch_bytes
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 65536
    Minimum Value 0
    Maximum Value 4294967295

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

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

    Note

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

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

    Command-Line Format --ndb-blob-write-batch-bytes
    System Variable ndb_blob_write_batch_bytes
    Scope Global, Session
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Integer
    Default Value 65536
    Minimum Value 0
    Maximum Value 4294967295
    Unit bytes

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

    该选项的最大值为 4294967295;默认值为 65536。将其设置为 0 将禁用BLOB写批处理。

    Note

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

  • --ndb-connectstring=connection_string

    Command-Line Format --ndb-connectstring
    Type 字符串

    在使用NDBCLUSTER存储引擎时,这个选项指定管理服务器,该服务器分布集群配置数据。请参阅第 25.4.3.3 节,“NDB Cluster Connection Strings”,了解语法。

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

    Command-Line Format --ndb-default-column-format={FIXED|DYNAMIC}
    System Variable ndb_default_column_format
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value FIXED
    Valid Values

    FIXED

    DYNAMIC

    设置新表的默认COLUMN_FORMATROW_FORMAT(见第15.1.20节,“CREATE TABLE 语句”)。默认值为FIXED

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

    Command-Line Format --ndb-deferred-constraints
    System Variable ndb_deferred_constraints
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 1

    控制是否在提交时间延迟唯一索引的约束检查,支持这种检查时。0是默认值。

    这选项通常不需要用于NDB集群或NDB集群复制的操作,并且主要用于测试。

  • --ndb-schema-dist-timeout=#

    Command-Line Format --ndb-schema-dist-timeout=#
    System Variable ndb_schema_dist_timeout
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 120
    Minimum Value 5
    Maximum Value 1200
    Unit

    指定mysqld在等待架构操作完成前等待的最大时间,以秒为单位,然后将其标记为超时。

  • --ndb-distribution=[KEYHASH|LINHASH]

    Command-Line Format --ndb-distribution={KEYHASH|LINHASH}
    System Variable ndb_distribution
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value KEYHASH
    Valid Values

    LINHASH

    KEYHASH

    控制NDB表的默认分布方法。可以设置为KEYHASH(键哈希)或LINHASH(线性哈希)。KEYHASH是默认值。

  • --ndb-log-apply-status

    Command-Line Format --ndb-log-apply-status[={OFF|ON}]
    System Variable ndb_log_apply_status
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

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

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

    在环形复制设置中,这个选项使得ndb_apply_status表中的更改完成整个循环,最后将变化传播回起始的NDB集群。这也允许一个集群作为 replication 源服务器看到它的变化(epochs)已经被应用到其他集群中。

    这个选项在没有使用--ndbcluster启动 MySQL 服务器时无效。

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

    Command-Line Format --ndb-log-empty-epochs[={OFF|ON}]
    System Variable ndb_log_empty_epochs
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    在启用log_replica_updates的情况下,导致没有变化的epochs被写入到ndb_apply_statusndb_binlog_index表中。

    默认情况下,这个选项是禁用的。禁用--ndb-log-empty-epochs将导致没有变化的epoch事务不被写入到二进制日志中,但是仍然会在ndb_binlog_index表中写入一个空行。

    由于--ndb-log-empty-epochs=1将导致ndb_binlog_index表的大小独立于二进制日志的大小增长,用户需要准备好管理这个表的增长,即使他们期望集群在大部分时间内处于空闲状态。

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

    Command-Line Format --ndb-log-empty-update[={OFF|ON}]
    System Variable ndb_log_empty_update
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    使得没有产生变化的更新操作被写入到 ndb_apply_statusndb_binlog_index 表中,即使log_replica_updates 已经启用。

    默认情况下,这个选项是禁用的 (OFF)。禁用 --ndb-log-empty-update 将导致没有变化的更新操作不被写入到二进制日志中。

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

    Command-Line Format --ndb-log-exclusive-reads[={OFF|ON}]
    System Variable ndb_log_exclusive_reads
    Scope Global, Session
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Boolean
    Default Value 0

    使用这个选项启动服务器时,将使得主键读取操作被记录为独占锁,这样可以在 NDB 集群复制中检测和解决读取冲突。您也可以在运行时通过设置ndb_log_exclusive_reads 系统变量的值为 1 或 0 分别启用或禁用这些锁定。0(禁用锁定)是默认值。

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

  • --ndb-log-fail-terminate

    Command-Line Format --ndb-日志失败终止
    System Variable ndb_日志失败终止
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value FALSE

    当指定此选项时,如果无法完整地记录所有找到行事件,mysqld 进程将被终止。

  • --ndb-日志原点

    Command-Line Format --ndb-日志原点[={OFF|ON}]
    System Variable ndb_日志原点
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    将原始服务器 ID 和 epoch 记录到 ndb_日志索引 表中。

    Note

    这样可以使得一个给定的 epoch 在 ndb_日志索引 中有多行,一行对应每个原始 epoch。

    更多信息,请见第 25.7.4 节,“NDB 集群复制架构和表”

  • --ndb-日志事务依赖

    Command-Line Format --ndb-日志事务依赖={true|false}
    System Variable ndb_日志事务依赖
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value false

    使 NDB 二进制日志线程为每个事务计算依赖关系。默认值是 FALSE

    这个选项不能在运行时设置;对应的 ndb_log_transaction_dependency 系统变量是只读的。

  • --ndb-log-transaction-id

    Command-Line Format --ndb-log-transaction-id[={OFF|ON}]
    System Variable ndb_log_transaction_id
    Scope Global
    Dynamic No
    SET_VAR Hint Applies No
    Type Boolean
    Default Value OFF

    使副本 mysqld 将 NDB 事务 ID 写入每行二进制日志。默认值是 FALSE

    --ndb-log-transaction-id 是启用 NDB 集群复制冲突检测和解决使用 NDB$EPOCH_TRANS() 函数的必要条件(见NDB$EPOCH_TRANS())。更多信息,请参阅第 25.7.12 节,“NDB 集群复制冲突解决”

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

    Command-Line Format --ndb-log-update-as-write[={OFF|ON}]
    System Variable ndb_log_update_as_write
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    是否将源服务器上的更新写入到二进制日志中,以便于OFF(作为更新)或ON(作为写操作)。当启用此选项时,如果同时禁用--ndb-log-updated-only--ndb-log-update-minimal,则不同类型的操作将被记录,如下所述:

    • INSERT: 记录为WRITE_ROW事件,无前像;所有列的后像将被记录。

      UPDATE: 记录为WRITE_ROW事件,无前像;所有列的后像将被记录。

      DELETE: 记录为DELETE_ROW事件,所有列在前像中被记录;后像不被记录。

    此选项可以与前面提到的其他两个NDB日志选项结合使用,以解决NDB复制冲突问题;请参阅ndb_replication Table,了解更多信息。

  • --ndb-log-updated-only

    Command-Line Format --ndb-log-updated-only[={OFF|ON}]
    System Variable ndb_log_updated_only
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value

    是否将mysqld 写入到二进制日志中()或完整的行()。当启用此选项时,如果同时禁用--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

    Command-Line Format --ndb-log-update-minimal[={OFF|ON}]
    System Variable ndb_log_update_minimal
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    以最小的方式记录更新日志,仅写入主键值在before图像中,并且只记录更改的列在after图像中。这可能会导致与其他存储引擎(除了NDB)复制时的兼容性问题。启用该选项时,如果同时禁用--ndb-log-updated-only--ndb-log-update-as-write,则不同类型的操作将被记录,如下所述:

    • INSERT:以WRITE_ROW事件记录,无before图像;after图像中所有列都被记录。

    • UPDATE:以UPDATE_ROW事件记录,primary key列在before图像中;except primary key列在after图像中记录所有列。

    • DELETE:以DELETE_ROW事件记录,在before图像中记录所有列;after图像不被记录。

    该选项可以与前面提到的其他两个NDB日志选项结合使用,以解决NDB复制冲突问题;见ndb_Replication Table,了解更多信息。

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

    Command-Line Format --ndb-mgm-tls=[strict|relaxed]
    System Variable ndb_mgm_tls
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value relaxed
    Valid Values

    relaxed

    strict

    设置 NDB 集群 TLS 连接所需的 TLS 支持级别;值可以是relaxedstrictrelaxed表示尝试建立 TLS 连接,但不需要成功;strict表示需要 TLS 连接才能连接。默认值为relaxed

  • --ndb-mgmd-host=host[:port]

    Command-Line Format --ndb-mgmd-host=host_name[:port_num]
    Type 字符串
    Default Value localhost:1186

    可以用来设置单个管理服务器的主机和端口号,以便程序连接到该服务器。如果程序需要节点 ID 或多个管理服务器(或 both)的连接信息,请使用--ndb-connectstring选项。

  • --ndb-nodeid=#

    Command-Line Format --ndb-nodeid=#
    Status Variable Ndb_cluster_node_id
    Scope 全局
    Dynamic
    Type 整数
    Default Value N/A
    Minimum Value 1
    Maximum Value 255
    Maximum Value 63

    在 NDB 集群中设置 MySQL 服务器的节点 ID。

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

    此外,如果使用 --ndb-nodeid,那么在 config.ini 文件中的 [mysqld] 或 [api] 部分中必须找到匹配的节点 ID,或者文件中必须存在一个没有指定NodeId或Id参数的[mysqld]或[api]部分。这同样适用于将节点 ID 作为连接字符串的一部分。

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

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

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

    Command-Line Format --ndbinfo[=value]
    Type 枚举
    Default Value ON
    Valid Values

    ON

    OFF

    FORCE

    启用 ndbinfo 信息数据库。默认情况下,这将在 NDBCLUSTER 启用时自动启用。

  • --ndb-optimization-delay=毫秒

    Command-Line Format --ndb-optimization-delay=#
    System Variable ndb_optimization_delay
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 10
    Minimum Value 0
    Maximum Value 100000
    Unit 毫秒

    设置在OPTIMIZE TABLE语句中等待行集的毫秒数,适用于NDB表。默认值为10。

  • --ndb-optimized-node-selection

    Command-Line Format --ndb-optimized-node-selection

    启用事务节点选择优化。默认启用,可以使用--skip-ndb-optimized-node-selection来禁用。

  • ndb-tls-search-path=path

    Command-Line Format --ndb-tls-search-path=path
    System Variable ndb_tls_search_path
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 路径名称
    Default Value (Unix) $HOME/ tls
    Default Value (Windows) $HOMEDIR/tls

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

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

    Command-Line Format --ndb-transid-mysql-connection-map[=state]
    Type 枚举
    Default Value ON
    Valid Values

    ON

    OFF

    FORCE

    启用或禁用处理ndb_transid_mysql_connection_map表在INFORMATION_SCHEMA数据库中的插件。接受值ONOFFFORCEON(默认)启用插件。OFF禁用插件,使ndb_transid_mysql_connection_map不可访问。FORCE防止MySQL Server启动,如果插件无法加载和启动。

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

  • --ndb-wait-connected=seconds

    Command-Line Format --ndb-wait-connected=#
    System Variable ndb_wait_connected
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 120
    Default Value 30
    Minimum Value 0
    Maximum Value 31536000
    Unit

    该选项设置 MySQL 服务器等待 NDB 集群管理和数据节点连接建立的时间,单位为秒。默认值为 30

  • --ndb-wait-setup=seconds

    Command-Line Format --ndb-wait-setup=#
    System Variable ndb_wait_setup
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 120
    Default Value 30
    Default Value 15
    Default Value 15
    Minimum Value 0
    Maximum Value 31536000
    Unit

    该变量显示 MySQL 服务器等待 NDB 存储引擎完成设置的时间,单位为秒。默认值为 30

  • --skip-ndbcluster

    Command-Line Format --skip-ndbcluster

    禁用NDBCLUSTER存储引擎。这是默认的选项,用于在构建时支持NDBCLUSTER存储引擎的二进制文件;服务器仅分配内存和其他资源用于该存储引擎,如果明确指定了--ndbcluster选项。请参阅第25.4.1节,“快速测试NDB集群设置”,了解示例。

本节提供了关于 MySQL 服务器系统变量的详细信息,这些变量是特定于 NDB 集群和NDB存储引擎的。关于非 NDB 集群系统变量,请参阅第7.1.8节,“服务器系统变量”。关于使用系统变量的总体信息,请参阅第7.1.9节,“使用系统变量”

  • ndb_autoincrement_prefetch_sz

    Command-Line Format --ndb-autoincrement-prefetch-sz=#
    System Variable ndb_autoincrement_prefetch_sz
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 512
    Minimum Value 1
    Maximum Value 65536

    确定自增列中的空隙概率。将其设置为1以最小化此问题。将其设置为高值以优化使插入速度更快,但降低批量插入时连续自增数字的可能性。

    该变量仅影响语句之间获取的AUTO_INCREMENT ID 数量;在给定语句中,至少32个ID将被同时获取。

    Important

    该变量不影响使用INSERT ... SELECT进行的插入操作。

  • ndb_clear_apply_status

    Command-Line Format --ndb-clear-apply-status[={OFF|ON}]
    System Variable ndb_clear_apply_status
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    默认情况下,执行RESET REPLICA将导致 NDB 集群副本清除其ndb_apply_status表中的所有行。您可以通过设置ndb_clear_apply_status=OFF来禁用此功能。

  • ndb_conflict_role

    Command-Line Format --ndb-conflict-role=value
    System Variable ndb_conflict_role
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value NONE
    Valid Values

    NONE

    PRIMARY

    SECONDARY

    PASS

    确定 SQL 节点 (和 NDB 集群) 在圆形 (主动-主动) 复制设置中的角色。ndb_conflict_role 可以取值为 PRIMARYSECONDARYPASSNULL(默认)。复制 SQL 线程必须停止才能更改 ndb_conflict_role。此外,在直接更改 PASSPRIMARYSECONDARY 时,需要确保 SQL 线程停止,然后执行SET @@GLOBAL.ndb_conflict_role = 'NONE'

    这个变量取代了弃用的ndb_slave_conflict_role

    更多信息,请见第 25.7.12 节,“NDB 集群复制冲突解决”

  • ndb_data_node_neighbour

    Command-Line Format --ndb-data-node-neighbour=#
    System Variable ndb_data_node_neighbour
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 255

    设置一个最近数据节点的ID—that is, a preferred nonlocal data node is chosen to execute the transaction, rather than one running on the same host as the SQL or API node。这曾用于确保当完全复制表被访问时,我们访问该数据节点,以确保在可能的情况下总是使用本地副本表的副本。这也可以用来为事务提供提示。

    这可以在物理上更近的节点上提高数据访问速度,从而具有更高的网络吞吐量。

    请参阅第15.1.20.12节,“设置 NDB 注释选项”,了解更多信息。

    Note

    NDB API 应用程序中提供了等效方法set_data_node_neighbour()

  • ndb_dbg_check_shares

    Command-Line Format --ndb-dbg-check-shares=#
    System Variable ndb_dbg_check_shares
    Scope Global, Session
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Integer
    Default Value 0
    Minimum Value 0
    Maximum Value 1

    设置为1时,检查没有遗留的共享。仅在调试版本中可用。

  • ndb_default_column_format

    Command-Line Format --ndb-default-column-format={FIXED|DYNAMIC}
    System Variable ndb_default_column_format
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value FIXED
    Valid Values

    FIXED

    DYNAMIC

    设置新的表的默认COLUMN_ FORMATROW_ FORMAT(见第15.1.20节,“CREATE TABLE 语句”)。默认值为FIXED

  • ndb_deferred_constraints

    Command-Line Format --ndb-deferred-constraints=#
    System Variable ndb_deferred_constraints
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 1

    控制是否延迟约束检查,支持这些约束。0 是默认值。

    这个变量通常不需要在 NDB 集群或 NDB 复制中进行操作,是主要用于测试的。

  • ndb_distribution

    Command-Line Format --ndb-distribution={KEYHASH|LINHASH}
    System Variable ndb_distribution
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value KEYHASH
    Valid Values

    LINHASH

    KEYHASH

    控制 NDB 表的默认分布方法,可以设置为 KEYHASH(键哈希)或 LINHASH(线性哈希)。KEYHASH 是默认值。

  • ndb_eventbuffer_free_percent

    Command-Line Format --ndb-eventbuffer-free-percent=#
    System Variable ndb_eventbuffer_free_percent
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 20
    Minimum Value 1
    Maximum Value 99

    设置事件缓冲区(ndb_ eventbuffer_max_alloc)中可用内存的百分比,达到最大值后再次开始缓冲。

  • ndb_eventbuffer_max_alloc

    Command-Line Format --ndb-eventbuffer-max-alloc=#
    System Variable ndb_eventbuffer_max_alloc
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 9223372036854775807

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

  • ndb_extra_logging

    Command-Line Format ndb_extra_logging=#
    System Variable ndb_extra_logging
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1
    Minimum Value 0
    Maximum Value 1

    该变量使 MySQL 错误日志记录特定于NDB 存储引擎的信息。

    当该变量设置为 0 时,MySQL 错误日志中记录的关于NDB 的信息仅限于事务处理。如果设置为大于 0 但小于 10 的值,NDB 表架构和连接事件也将被记录,以及冲突解决是否在使用中,以及其他NDB 错误和信息。如果值设置为 10 或更高,NDB 内部信息,也将被记录,如数据分布在集群节点中的进度等。默认值为 1。

  • ndb_force_send

    Command-Line Format --ndb-force-send[={OFF|ON}]
    System Variable ndb_force_send
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    强制将缓冲区发送到NDB,而不等待其他线程。默认值为 ON

  • ndb_fully_replicated

    Command-Line Format --ndb-fully-replicated[={OFF|ON}]
    System Variable ndb_fully_replicated
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    确定是否对新创建的 NDB 表进行完全复制。这设置可以在单个表中使用 COMMENT="NDB_ TABLE=FULLY_REPLICATED=..."CREATE TABLEALTER TABLE 语句中覆盖;见第15.1.20.12节,“设置 NDB 注释选项”,了解语法和其他信息。

  • ndb_index_stat_enable

    Command-Line Format --ndb-index-stat-enable[={OFF|ON}]
    System Variable ndb_index_stat_enable
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    在查询优化中使用NDB索引统计信息。默认情况下是ON

    索引统计表总是在服务器启动时创建的,无论这个选项的值是什么。

  • ndb_index_stat_option

    Command-Line Format --ndb-index-stat-option=value
    System Variable ndb_index_stat_option
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value 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选项和值

    Name Description Default/Units Minimum/Maximum
    loop_enable 1000 ms 0/4G
    loop_idle 空闲时的睡眠时间 1000 ms 0/4G
    loop_busy 有更多工作等待时的睡眠时间 100 ms 0/4G
    update_batch 1 0/4G
    read_batch 4 1/4G
    idle_batch 32 1/4G
    check_batch 8 1/4G
    check_delay 统计信息检查的频率 10 m 1/4G
    delete_batch 8 0/4G
    clean_delay 1 m 0/4G
    error_batch 4 1/4G
    error_delay 1 m 1/4G
    evict_batch 8 1/4G
    evict_delay 从读取时间清除LRU缓存 1 m 0/4G
    cache_limit 本地存储引擎用于缓存索引统计信息的最大内存大小(以字节为单位),由mysqld使用;当超过该限制时,清理缓存。 32M 0/4G
    cache_lowpct 90 0/100
    zero_total 将其设置为 1 将在 ndb_ index_stat_status 中的所有累积计数器重置为 0。此选项值也将在执行该操作时重置为 0。 0 0/1

  • ndb_join_pushdown

    System Variable ndb_join_pushdown
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    该变量控制是否将NDB表的连接推送到NDB内核(数据节点)。之前,连接使用多个访问NDB的SQL节点来处理;然而,当ndb_join_pushdown启用时,推送连接将完整地发送到数据节点,然后在多个数据副本上并行执行,并返回单个合并结果给mysqld。这可以大大减少处理这种连接所需的SQL节点和数据节点之间的回合数。

    默认情况下,ndb_join_pushdown启用。

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

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

      来自同一表的列之间的表达式也可以被推下。这些列(或对这些列执行的任何操作结果)必须具有完全相同的类型,包括同样的有符号性、长度、字符集和排序规则、精度和比例,其中适用。

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

    3. 明确锁定不受支持;然而,NDB存储引擎的隐式行锁定特性仍然被强制执行。

      这意味着使用FOR UPDATE的连接不能被推下。

    4. 为了使连接能够被推下,子表在连接中必须使用refeq_ ref、或const访问方法之一,或者这些方法的组合。

      外连接子表只能使用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)
    Note

    如果内连接的子表是由ref连接的,并且结果是根据排序索引进行了排序或分组,这个索引不能提供排序行,这将强制写入一个排序临时文件。

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

  • ndb_log_apply_status

    Command-Line Format --ndb-log-apply-status[={OFF|ON}]
    System Variable ndb_log_apply_status
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    只读变量,显示服务器是否使用--ndb-log-apply-status选项启动的。

  • ndb_log_bin

    Command-Line Format --ndb-log-bin[={OFF|ON}]
    System Variable ndb_log_bin
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    使NDB表的更新写入到二进制日志中。该变量的设置对服务器没有影响,如果服务器未启用二进制日志记录使用log_binndb_log_bin默认为0(FALSE)。

  • ndb_log_binlog_index

    Command-Line Format --ndb-log-binlog-index[={OFF|ON}]
    System Variable ndb_log_binlog_index
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

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

  • ndb_log_empty_epochs

    Command-Line Format --ndb-log-empty-epochs[={OFF|ON}]
    System Variable ndb_log_empty_epochs
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Boolean
    Default Value OFF

    当这个变量设置为0时,epoch事务中没有变化的记录将不会被写入到二进制日志中,但是仍然会写入一个空epoch到ndb_binlog_index表中。

  • ndb_log_empty_update

    Command-Line Format --ndb-log-empty-update[={OFF|ON}]
    System Variable ndb_log_empty_update
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    当该变量设置为ON1)时,更新事务无变化将被写入到二进制日志中,即使log_replica_updates启用了。

  • ndb_log_exclusive_reads

    Command-Line Format --ndb-log-exclusive-reads[={OFF|ON}]
    System Variable ndb_log_exclusive_reads
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value 0

    该变量确定是否将主键读取操作记录为独占锁,这样可以在 NDB 集群复制中检测和解决读取冲突。要启用这些锁,设置ndb_log_exclusive_reads的值为 1。0 是默认值,它禁用了这种锁定。

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

  • ndb_log_orig

    Command-Line Format --ndb-log-orig[={OFF|ON}]
    System Variable ndb_log_orig
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    显示是否将源服务器ID和纪元记录在ndb_-binlog_index表中。使用--ndb-log-orig服务器选项设置。

  • ndb_log_transaction_id

    System Variable ndb_log_transaction_id
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    这个只读的布尔系统变量显示是否在二进制日志中记录NDB事务ID(用于使用active-activeNDB集群复制和NDB$EPOCH_TRANS()冲突检测)。要更改设置,请使用--ndb-log-transaction-id选项。

    ndb_log_transaction_id在mainline MySQL Server 8.4中不受支持。

    更多信息,请见第25.7.12节,“NDB 集群复制冲突解决”

  • ndb_log_transaction_compression

    Command-Line Format --ndb-log-transaction-compression
    System Variable ndb_log_transaction_compression
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    是否在二进制日志中写入压缩的事务;只有当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 表的二进制日志事务压缩,使用 mysql 或其他客户端会话在启动mysqld后设置 ndb_log_transaction_compression 系统变量为 OFF

    在启动后设置 binlog_transaction_compression 变量对 ndb_log_transaction_compression 的值无效。

    关于二进制日志事务压缩的更多信息,例如哪些事件被或不被压缩,以及使用该特性时需要注意的行为变化,请见第7.4.4.5节,“二进制日志事务压缩”

  • ndb_log_transaction_compression_level_zstd

    Command-Line Format --ndb-log-transaction-compression-level-zstd=#
    System Variable ndb_log_transaction_compression_level_zstd
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 3
    Minimum Value 1
    Maximum Value 22

    如果启用了ndb_log_transaction_compression,则用于写入压缩事务到副本的二进制日志的ZSTD压缩级别。未支持在没有编译支持mysqldNDB存储引擎的情况下。

    请参阅第7.4.4.5节,“二进制日志事务压缩”,了解更多信息。

  • ndb_ metadata_check

    Command-Line Format --ndb-metadata-check[={OFF|ON}]
    System Variable ndb_ metadata_check
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    NDB使用背景线程每ndb_ metadata_check_interval秒检查元数据变化与MySQL数据字典的比较。这条元数据变化检测线程可以通过设置ndb_ metadata_checkOFF来禁用。线程默认启用。

  • ndb_metadata_check_interval

    Command-Line Format --ndb-metadata-check-interval=#
    System Variable ndb_metadata_check_interval
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 60
    Minimum Value 0
    Maximum Value 31536000
    Unit

    NDB 在后台运行一个元数据变化检测线程,以确定 NDB 字典相对于 MySQL 数据字典的变化。默认情况下,检查间隔为 60 秒,可以通过设置 ndb_metadata_check_interval 的值来调整。要启用或禁用线程,请使用 ndb_metadata_check

  • ndb_metadata_sync

    System Variable ndb_metadata_sync
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value false

    设置该变量将导致更改监控线程覆盖对ndb_metadata_checkndb_metadata_check_interval的值,并进入连续更改检测期限。当线程确定没有更多需要检测的更改时,它将等待二进制日志线程完成所有检测对象的同步。然后,ndb_metadata_sync被设置为falsendb_metadata_checkndb_metadata_check_interval确定的行为。

    将该变量设置为true将清除排除对象列表;将其设置为false将清除要重试的对象列表。

  • ndb_optimized_node_selection

    Command-Line Format --ndb-optimized-node-selection=#
    System Variable ndb_optimized_node_selection
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 3
    Minimum Value 0
    Maximum Value 3

    有两种优化节点选择形式,以下描述:

    1. SQL节点使用promixity确定事务协调器,即选择与 SQL 节点最近的数据节点为事务协调器。为了这个目的,拥有与 SQL 节点共享内存连接的数据节点被认为是与 SQL 节点最近的;紧接着的是:从本地主机建立的 TCP 连接,然后是来自其他主机的 TCP 连接。

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

    这个选项可以设置为整数值01233是默认值。这些值对节点选择的影响如下:

    • 0:节点选择不被优化。每个数据节点将作为事务协调器使用 8 次,然后 SQL 线程才会转移到下一个数据节点。

    • 1:根据距离 SQL 节点来确定事务协调器。

    • 2:使用分布式 awareness 选择事务协调器。但是,如果事务中的第一个语句访问超过一个集群分区,SQL 节点将回退到当这个选项设置为0时所见的轮询行为。

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

    近似是根据以下方式确定的:

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

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

    3. 设置ndb_data_node_neighbour将进一步减少Group的有效值50,使得该节点被视为最近的节点。这只在所有数据节点都在 API 节点主机以外时,且希望 dedication 一个数据节点给 API 节点时需要。在正常情况下,之前描述的默认调整已经足够。

    频繁地更改ndb_data_node_neighbour不是建议的,因为这将改变集群连接状态,从而可能会中断新事务选择算法对每个线程的稳定化过程。

  • ndb_read_backup

    Command-Line Format --ndb-read-backup[={OFF|ON}]
    System Variable ndb_read_backup
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    启用从任何副本fragment读取任何创建的 NDB 表,以提高表读性能,且对写操作的影响相对较小。

    如果 SQL 节点和数据节点使用相同的主机名或 IP 地址,这个事实将自动检测,从而优先将读取发送到同一主机。如果这些节点位于同一主机但使用不同的 IP 地址,可以在 SQL 节点上设置 ndb_data_node_neighbour 的值,以指示正确的数据节点。

    要为单个表启用或禁用从任何副本fragment读取,可以在 CREATE TABLEALTER TABLE 语句中设置 NDB_TABLE 选项 READ_BACKUP,以获取更多信息,请参见第15.1.20.12节,“设置 NDB 注释选项”

  • ndb_recv_thread_activation_threshold

    Command-Line Format --ndb-recv-thread-activation-threshold=#
    System Variable ndb_recv_thread_activation_threshold
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 8
    Minimum Value 0(MIN_ACTIVATION_THRESHOLD)
    Maximum Value 16(MAX_ACTIVATION_THRESHOLD)

    当活动线程达到这个数量时,接收线程将负责对集群连接的轮询。

    这个变量的作用域是全局的,可以在启动时设置。

  • ndb_recv_thread_cpu_mask

    Command-Line Format --ndb-recv-thread-cpu-mask=mask
    System Variable ndb_recv_thread_cpu_mask
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 位图
    Default Value [empty]

    锁定接收线程到特定的CPU的掩码。这个掩码是以十六进制形式指定的。例如,0x33表示每个接收线程使用一个CPU。空字符串是默认值;将ndb_recv_thread_cpu_mask设置为该值将移除之前设置的任何接收线程锁定。

    这个变量的作用域是全局的,可以在启动时设置。

  • ndb_report_thresh_binlog_epoch_slip

    Command-Line Format --ndb-report-thresh-binlog-epoch-slip=#
    System Variable ndb_report_thresh_binlog_epoch_slip
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 10
    Minimum Value 0
    Maximum Value 256

    这个变量表示事件缓冲区中完全缓冲但尚未被binlog injector线程消费的epochs数量阈值。当这个程度的滞后(lag)超过时,会报告事件缓冲区状态信息,并将BUFFERED_EPOCHS_OVER_THRESHOLD作为原因(见第25.6.2.3节,“事件缓冲区报告在集群日志”)。滞后增加时,epoch从数据节点接收并完全缓冲在事件缓冲区中;减少时,epoch被binlog injector线程消费,减少。空epochs缓冲和队列,并且只有在使用Ndb::setEventBufferQueueEmptyEpoch()方法从NDB API时才包括在计算中。

  • ndb_report_thresh_binlog_mem_usage

    Command-Line Format --ndb-report-thresh-binlog-mem-usage=#
    System Variable ndb_report_thresh_binlog_mem_usage
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 10
    Minimum Value 0
    Maximum Value 10

    这是一个在报告二进制日志状态之前的可用内存百分比阈值。例如,值为10(默认值)意味着,如果数据节点从数据节点接收二进制日志数据时可用的内存量低于10%,将发送状态信息到集群日志。

  • ndb_row_checksum

    System Variable ndb_row_checksum
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1
    Minimum Value 0
    Maximum Value 1

    传统上,NDB 创建表时使用行校验和,这可以检测硬件问题,但会影响性能。将 ndb_row_checksum 设置为 0 表示对新或已更改的表不使用行校验和,这对所有类型查询都有很大的影响。这是一个默认设置为 1 的变量,以提供向后兼容性。

  • ndb_schema_dist_lock_wait_timeout

    Command-Line Format --ndb-schema-dist-lock-wait-timeout=value
    System Variable ndb_schema_dist_lock_wait_timeout
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 30
    Minimum Value 0
    Maximum Value 1200
    Unit

    在每个 SQL 节点上对元数据锁的等待时间,以便将其本地数据字典更新以反映 DDL 语句更改。等待时间过后,将返回警告,指出某个 SQL 节点的数据字典未被更新以反映更改。这可以避免二进制日志线程在处理架构操作时等待过长时间。

  • ndb_schema_dist_timeout

    Command-Line Format --ndb-schema-dist-timeout=value
    System Variable ndb_schema_dist_timeout
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 120
    Minimum Value 5
    Maximum Value 1200
    Unit

    在架构分布中等待的时间,以检测超时。这可能表明其他 SQL 节点正在经历过高活动,或者它们正在被某些方式阻止获取必要资源。

  • ndb_schema_dist_upgrade_allowed

    Command-Line Format --ndb-schema-dist-upgrade-allowed=value
    System Variable ndb_schema_dist_upgrade_allowed
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value true

    允许在连接到NDB时升级schema分布表。当为真(默认)时,这个更改将被延迟,直到所有SQL节点都已升级到同一个版本的NDB集群软件。

    Note

    升级完成后,schema分布的性能可能会受到一些影响。

  • ndb_show_foreign_key_mock_tables

    Command-Line Format --ndb-show-foreign-key-mock-tables[={OFF|ON}]
    System Variable ndb_show_foreign_key_mock_tables
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    显示 NDB 使用的模拟表,以支持foreign_key_checks=0。当启用时,创建和删除表时将显示额外警告。可以在 SHOW CREATE TABLE 的输出中看到表的实际名称(内部名称)。

  • ndb_slave_conflict_role

    Command-Line Format --ndb-slave-conflict-role=value
    Deprecated
    System Variable ndb_slave_conflict_role
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value NONE
    Valid Values

    NONE

    PRIMARY

    SECONDARY

    PASS

    已弃用的 ndb_conflict_role 的同义词。

  • ndb_table_no_logging

    System Variable ndb_table_no_logging
    Scope 会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    当该变量设置为ON1时,它将导致使用ENGINE NDB创建或修改的所有表都成为非日志记录表,即使没有数据更改写入redo日志或磁盘检查点,就像使用NOLOGGING选项创建或修改CREATE TABLEALTER TABLE语句一样。

    关于非日志记录的NDB表的更多信息,请参见NDB_TABLE Options

    ndb_table_no_loggingNDB表架构文件的创建没有影响;要抑制这些文件,请使用ndb_table_temporary代替。

  • ndb_表临时

    System Variable ndb_表临时
    Scope 会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    当设置为ON1时,这个变量会导致NDB表不写入磁盘:这意味着不会创建表架构文件,也不会记录表。

    Note

    当前设置这个变量没有任何效果。这是一个已知的问题;请参阅Bug #34036。

  • ndb_使用复制ALTER TABLE

    System Variable ndb_使用复制ALTER TABLE
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies

    NDB出现在线ALTER TABLE操作问题时,强制使用复制表的方式。默认值为OFF

  • ndb_use_exact_count

    System Variable ndb_use_exact_count
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    强制NDB在执行SELECT COUNT(*)查询时使用记录数,以加速这种类型的查询。默认值为OFF,这使得查询速度更快。

  • ndb_use_transactions

    Command-Line Format --ndb-use-transactions[={OFF|ON}]
    System Variable ndb_use_transactions
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    您可以通过将该变量的值设置为OFF来禁用NDB事务支持。这通常不推荐,但是在某些情况下可能有用,例如在导入大型事务的dump文件时,可以在客户端会话中禁用事务支持;这样可以将多行插入分成多个部分执行,而不是作为单个事务执行。在这种情况下,一旦导入完成,您应该么将变量值设置为ON,或者简单地终止会话。

  • ndb_version

    System Variable ndb_version
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value

    NDB引擎版本,作为一个复合整数。

  • ndb_version_string

    System Variable ndb_version_string
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value

    NDB引擎版本,以ndb-x.y.z格式表示。

  • replica_allow_batching

    Command-Line Format --replica-allow-batch[={OFF|ON}]
    System Variable replica_allow_batching
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

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

    允许在副本上启用批量更新可以大大提高性能,特别是在复制TEXTBLOBJSON列时。因此,replica_allow_batching默认启用。

    设置这个变量只有在使用 NDB 存储引擎进行复制时才生效;在 MySQL 8.4 中,它存在但无效。更多信息,请见第25.7.6节,“Starting NDB Cluster Replication (Single Replication Channel)”

  • ndb_replica_batch_size

    Command-Line Format --ndb-replica-batch-size=#
    System Variable ndb_replica_batch_size
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 2097152
    Minimum Value 0
    Maximum Value 2147483648
    Unit 字节

    确定复制应用线程使用的批处理大小(以字节为单位)。将这个变量设置为 replication 中的值,而不是--ndb-batch-size选项,以便在 replica 中应用该设置,排除其他会话。

    如果这个变量未设置(默认值为 2 MB),那么它的实际值将是--ndb-batch-size的值和 2 MB 的较大者。

  • ndb_replica_blob_write_batch_bytes

    Command-Line Format --ndb-replica-blob-write-batch-bytes=#
    System Variable ndb_replica_blob_write_batch_bytes
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 2097152
    Minimum Value 0
    Maximum Value 2147483648
    Unit 字节

    控制复制应用线程对 blob 数据的批处理写入大小。

    可以使用这个变量,而不是--ndb-blob-write-batch-bytes选项来控制复制服务器上的blob批量写入大小,排除其他会话。原因是,当ndb_replica_blob_write_batch_bytes​未设置时,有效的blob批量大小(即 blob 列的最大 pending 字节数)由--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

    Command-Line Format --server-id-bits=#
    System Variable server_ id_ bits
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 32
    Minimum Value 7
    Maximum Value 32

    该变量表示实际识别服务器的最低有效位数,位于32位server_id中。将服务器实际识别为少于32位,使得剩余位可以用于其他目的,如在NDB API的Event API中存储应用程序生成的用户数据,使用OperationOptions结构中的AnyValue存储服务器ID(NDB集群使用AnyValue存储服务器ID)。

    在从server_id中提取实际服务器ID以便检测复制循环时,服务器忽略剩余位。变量server_id_bits用于在I/O和SQL线程中根据服务器ID决定是否忽略事件。

    该数据可以通过mysqlbinlog从二进制日志中读取,假设它是使用自己的server_id_bits变量设置为32(默认值)。

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

    这个系统变量仅支持NDB集群。它不支持标准MySQL 8.4 Server。

  • slave_allow_batching

    Command-Line Format --slave-allow-batching[={OFF|ON}]
    Deprecated
    System Variable slave_allow_batching
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    已弃用的同义词,等同于replica_allow_batching

  • transaction_allow_batching

    System Variable transaction_allow_batching
    Scope 会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    当设置为1ON时,这个变量启用同一事务中的语句批处理。要使用这个变量,需要先将autocommit设置为0OFF;否则,设置transaction_allow_batching无效。

    使用这个变量与只写事务是安全的,因为启用它可能会从before图像中读取。你应该确保任何挂起的事务已经提交(使用明确的COMMIT语句,如果需要)然后再执行SELECT语句。

    Important

    transaction_allow_batching在同一事务中可能会出现前一个语句的结果对后一个语句的影响时,不应该使用。

    当前,这个变量仅支持NDB集群。

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

  • ndbinfo_database

    System Variable NDB信息数据库
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value ndbinfo

    显示用于NDB信息数据库的名称;默认为ndbinfo。这是一个只读变量,其值在编译时确定。

  • ndbinfo_max_bytes

    Command-Line Format --ndbinfo-max-bytes=#
    System Variable ndbinfo_max_bytes
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 65535

    仅供测试和调试使用。

  • ndbinfo_max_rows

    Command-Line Format --ndbinfo-max-rows=#
    System Variable ndbinfo_max_rows
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 10
    Minimum Value 1
    Maximum Value 256

    仅供测试和调试使用。

  • ndbinfo_offline

    System Variable ndbinfo_offline
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    ndbinfo数据库置于离线模式中,即使表和视图不存在或存在但定义不同于NDB,仍然可以打开它们。从这些表(或视图)中不返回任何行。

  • ndbinfo_show_hidden

    Command-Line Format --ndbinfo-show-hidden[={OFF|ON}]
    System Variable ndbinfo_show_hidden
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF
    Valid Values

    ON

    OFF

    是否在ndbinfo数据库的内部表中显示mysql客户端。默认值为OFF

    Note

    ndbinfo_ show_hidden启用时,内部表只在ndbinfo数据库中显示,不可见于TABLES或其他INFORMATION_SCHEMA表中,无论变量的设置是什么。

  • ndbinfo_table_prefix

    System Variable ndbinfo_table_prefix
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value ndb$

    用于命名ndbinfo数据库的基本表(通常隐藏,除非通过设置ndbinfo_ show_hidden暴露)。这是一个只读变量,默认值为ndb$;前缀本身是在编译时确定的。

  • ndbinfo_version

    System Variable ndbinfo_版本
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value

    显示正在使用的ndbinfo引擎的版本号;只读。

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