Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

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

25.4.3.9 MySQL 服务器选项和变量 для NDB 集群

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

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

25.4.3.9.1 MySQL 服务器选项 для NDB 集群

本节提供了 mysqld 服务器选项的描述,这些选项与 NDB 集群相关。有关 mysqld 选项的常规信息,以及使用 mysqld 选项的信息,请参阅 第 7.1.7 节,“服务器命令选项”

有关使用其他 NDB 集群进程的命令行选项的信息,请参阅 第 25.5 节,“NDB 集群程序”

  • --ndbcluster

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

    OFF

    FORCE

    如果 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 Global, Session
    Dynamic Yes
    SET_VAR Hint Applies No
    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 Global
    Dynamic No
    SET_VAR Hint Applies No

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

  • --ndb-batch-size=#

    Command-Line Format --ndb-batch-size
    System Variable ndb_batch_size
    Scope Global, Session
    Dynamic Yes
    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——因此,您 不能 在使用连接池时在集群连接字符串中使用节点 ID。

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

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

    Command-Line Format --ndb-cluster-connection-pool-nodeids
    System Variable ndb_cluster_connection_pool_nodeids
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 设置
    Default Value

    指定一个以逗号分隔的节点 ID 列表,用于连接到集群的 SQL 节点。该列表中的节点数必须与 --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 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 65536
    Minimum Value 0
    Maximum Value 4294967295
    Unit 字节

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

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

    Note

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

  • --ndb-connectstring=connection_string

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

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

  • --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。在环形或链式复制设置中,这允许这些更新传播到 mysql.ndb_apply_status 表中的任何 MySQL 服务器配置为副本的当前 mysqld

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

    在环形复制设置中,这个选项使 ndb_apply_status 表的更改完成整个回路,最后传播回原始 NDB 集群。这也允许作为复制来源的集群看到其更改(epochs)何时应用于其他集群中的环。

    这个选项只有在 MySQL 服务器以 --ndbcluster 选项启动时才生效。

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

    使得没有更改的epochs被写入 ndb_apply_statusndb_binlog_index 表,即使 log_replica_updates 启用。

    默认情况下,该选项被禁用。禁用 --ndb-log-empty-epochs 导致没有更改的epochs事务不被写入二进制日志,尽管 ndb_binlog_index 表中仍然写入一行,即使是空epochs。

    因为 --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-log-fail-terminate
    System Variable ndb_log_fail_terminate
    Scope Global
    Dynamic No
    SET_VAR Hint Applies No
    Type Boolean
    Default Value FALSE

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

  • --ndb-log-orig

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

    ndb_binlog_index 表中记录原始服务器 ID 和 epoch。

    Note

    这使得每个 epoch 在 ndb_binlog_index 中可以有多行,一行对应每个原始 epoch。

    有关更多信息,请参阅 第 25.7.4 节,“NDB Cluster Replication Schema and Tables”

  • --ndb-log-transaction-dependency

    Command-Line Format --ndb-log-transaction-dependency={true|false}
    System Variable ndb_log_transaction_dependency
    Scope Global
    Dynamic No
    SET_VAR Hint Applies No
    Type Boolean
    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 Cluster Replication Conflict Resolution”

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

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

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

    • INSERT:记录为WRITE_ROW事件,without before image; after image记录所有列。

      UPDATE:记录为WRITE_ROW事件,without before image; after image记录所有列。

      DELETE:记录为DELETE_ROW事件,before image记录所有列;after image不记录。

    此选项可用于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 Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Boolean
    Default Value ON

    是否将mysqld写入更新(ON)或完整行(OFF)到二进制日志中。当此选项启用时,如果同时禁用--ndb-log-update-as-write--ndb-log-update-minimal,则不同类型的操作将被记录如下所示:

    • INSERT:记录为WRITE_ROW事件,without before image; after image记录所有列。

    • UPDATE:记录为UPDATE_ROW事件,primary key列和更新列同时出现在before和after images中。

    • DELETE:记录为DELETE_ROW事件,primary key列包含在before image中;after image不记录。

    此选项可用于NDB复制冲突解决方案,结合其他两个NDB日志选项;见ndb_replication Table,获取更多信息。

  • --ndb-log-update-minimal

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

    以最小化方式记录更新,仅在before image中写入primary key值,在after image中仅写入更改的列。这可能会导致与其他存储引擎(除NDB外)复制时出现兼容性问题。当此选项启用时,如果同时禁用--ndb-log-updated-only--ndb-log-update-as-write,则不同类型的操作将被记录如下所示:

    • INSERT:记录为WRITE_ROW事件,without before image; after image记录所有列。

    • UPDATE:记录为UPDATE_ROW事件,primary key列在before image中;所有列(except primary key列)在after image中记录。

    • DELETE:记录为DELETE_ROW事件,所有列在before image中记录;after image不记录。

    此选项可用于NDB复制冲突解决方案,结合其他两个NDB日志选项;见ndb_replication Table,获取更多信息。

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

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

    relaxed

    strict

    设置 NDB 集群的 TLS 连接要求级别;值为 relaxedstrictrelaxed 表示尝试 TLS 连接,但不要求成功:strict 表示 TLS 连接是必需的。默认为 relaxed

  • --ndb-mgmd-host=主机[:端口]

    Command-Line Format --ndb-mgmd-host=主机名[:端口号]
    Type 字符串
    Default Value localhost:1186

    用于设置管理服务器的主机和端口号,以便程序连接。如果程序需要节点 ID 或多个管理服务器的引用(或两者)在连接信息中,请使用 --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,或者必须在文件中存在一个开放的 [mysqld][api] 部分(即没有 NodeIdId 参数指定的部分)。这也适用于节点 ID 作为连接字符串的一部分指定的情况。

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

    有关 NDB 集群 SQL 节点的节点 ID 的更多信息,请参阅 第 25.4.3.7 节,“Defining SQL and Other API Nodes in an NDB Cluster”

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

    Command-Line Format --ndbinfo[=值]
    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=路径

    Command-Line Format --ndb-tls-search-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=状态

    Command-Line Format --ndb-transid-mysql-connection-map[=状态]
    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 服务器启动。

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

  • --ndb-wait-connected=秒数

    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=秒数

    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 选项时才分配内存和其他资源用于该存储引擎。见 Section 25.4.1, “Quick Test Setup of NDB Cluster”,以获取示例。

25.4.3.9.2 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(默认)。在更改 ndb_conflict_role 之前,必须停止副本 SQL 线程。此外,不可能直接在 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,即首选的非本地数据节点,以执行事务,而不是在同一主机上的SQL或API节点上运行。这用于确保在访问完全复制的表时,总是使用本地副本,以提高数据访问速度。

    这可以在节点之间具有更高的网络吞吐量时提高数据访问速度。

    请参阅第 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 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    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 Cluster 或 NDB Cluster 复制操作中使用,主要用于测试。

  • 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 时,仅记录与事务处理相关的 NDB 信息。如果设置为大于 0 但小于 10,NDB 表模式和连接事件也将被记录,以及冲突解决是否启用和其他 NDB 错误和信息。如果设置为 10 或更高,NDB 内部信息,如集群节点之间的数据分布进度,也将被记录到 MySQL 错误日志中。默认值为 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 = '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 使用的最大内存量(以字节为单位),用于缓存索引统计信息;当超过这个值时,清除缓存。 32 M 0/4G
    cache_lowpct 90 0/100
    zero_total 将所有累积计数器重置为 0。ndb_index_stat_status 中的这个选项值也将被重置为 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

    默认情况下,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)
    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_bin,则该变量的设置无效。ndb_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默认为1ON); 在生产环境中通常不需要更改此值。

  • ndb_log_empty_epochs

    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

    当该变量设置为0时,不写入二进制日志的空epochs事务,尽管仍然在ndb_binlog_index中写入一行,即使是空epochs。

  • ndb_log_empty_update

    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

    当该变量设置为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 Cluster复制冲突检测和解决基于读取冲突。要启用这些锁,请将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 关闭

    显示原始服务器 ID 和 epoch 是否在 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 关闭

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

    ndb_log_transaction_id 在主线 MySQL 服务器 8.3 中不受支持。

    有关更多信息,请参阅 第 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 关闭

    副本 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 表的二进制日志事务压缩,请在 mysql 或其他客户端会话中将 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

    使用的 ZSTD 压缩级别写入复制的二进制日志,如果启用了 ndb_log_transaction_compression。如果 mysqld 未编译支持 NDB 存储引擎,不支持该功能。

    请参阅 第 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_check 设置为 OFF 来禁用该线程。默认情况下,线程处于启用状态。

  • 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 然后将设置为 false,并且更改监控线程将恢复到由 ndb_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 节点使用 近似度 来确定事务协调器;即,选择离 SQL 节点最近的数据节点作为事务协调器。为此目的,具有共享内存连接的数据节点被认为是 SQL 节点的 最近 ;其次是 TCP 连接到 localhost,然后是从其他主机的 TCP 连接。

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

    该选项可以取整数值 01233 是默认值。这些值影响节点选择,如下所示:

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

    • 1:使用 SQL 节点的近似度来确定事务协调器。

    • 2:使用分布式感知来选择事务协调器。但是,如果事务的第一个语句访问多个集群分区,SQL 节点将回退到 0 时的轮询行为。

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

    近似度是根据以下规则确定的:

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

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

    3. 设置 ndb_data_node_neighbour 进一步减少了 Group 的有效值,导致该节点被视为最近的节点。这仅在所有数据节点位于与 API 节点不同的主机上,并且需要将其中一个专门用于 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

    启用从任何片段副本读取任何 NDB 表的数据,大大提高了表读取性能,代价是写入性能略有下降。

    如果 SQL 节点和数据节点使用相同的主机名或 IP 地址,这将被自动检测,以便将读取发送到同一主机。如果这些节点位于同一主机但使用不同的 IP 地址,可以通过在 SQL 节点上设置 ndb_data_node_neighbour 的值为数据节点的节点 ID,以告诉 SQL 节点使用正确的数据节点。

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

  • ndb_recv_thread_activation_threshold

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

    当达到这个数字的并发活动线程时,接收线程将接管集群连接的轮询。

    这个变量是全局范围的。它也可以在启动时设置。

  • 接收线程 CPU 掩码

    Command-Line Format --ndb-recv-thread-cpu-mask=mask
    System Variable 接收线程 CPU 掩码
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 位图
    Default Value [空]

    用于锁定接收线程到特定 CPU 的 CPU 掩码。例如,0x33 表示每个接收线程使用一个 CPU。空字符串是默认值;将 ndb_recv_thread_cpu_mask 设置为空值将删除之前设置的任何接收线程锁。

    这个变量是全局范围的。它也可以在启动时设置。

  • 二进制日志 epoch 滑动阈值

    Command-Line Format --ndb-report-thresh-binlog-epoch-slip=#
    System Variable 二进制日志 epoch 滑动阈值
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 10
    Minimum Value 0
    Maximum Value 256

    这表示事件缓冲区中完全缓冲但尚未被二进制日志 injector 线程消费的 epoch 数量阈值。当这个滑动程度(延迟)被超过时,将报告事件缓冲区状态信息, reason 为 BUFFERED_EPOCHS_OVER_THRESHOLD(参见第 25.6.2.3 节,“事件缓冲区日志记录”)。滑动程度增加时,事件缓冲区中完全缓冲的 epoch 数量增加;滑动程度减少时,事件缓冲区中完全缓冲的 epoch 数量减少。空的 epoch 也被缓冲和排队,因此在这个计算中包括,只有在使用 NDB API 的 Ndb::setEventBufferQueueEmptyEpoch() 方法时启用。

  • 二进制日志内存使用率阈值

    Command-Line Format --ndb-report-thresh-binlog-mem-usage=#
    System Variable 二进制日志内存使用率阈值
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 10
    Minimum Value 0
    Maximum Value 10

    这是二进制日志状态报告的内存使用率阈值。例如,值为 10(默认值)表示,如果从数据节点接收二进制日志数据的可用内存量低于 10%,则发送集群日志状态信息。

  • 行 checksum

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

    传统上,NDB 创建的表具有行 checksum,这检查硬件问题的同时影响性能。将 ndb_row_checksum 设置为 0 意味着新建或修改的表不使用行 checksum,这对所有类型的查询性能产生了显著影响。这个变量默认设置为 1,以提供向后兼容的行为。

  • 分布式锁定等待超时

    Command-Line Format --ndb-schema-dist-lock-wait-timeout=value
    System Variable 分布式锁定等待超时
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 30
    Minimum Value 0
    Maximum Value 1200
    Unit

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

  • 分布式超时

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

    在模式分布期间检测超时的秒数。这可能表明其他 SQL 节点正在经历过高的活动,或者它们无法获取必要的资源。

  • 允许升级分布式模式

    Command-Line Format --ndb-schema-dist-upgrade-allowed=value
    System Variable 允许升级分布式模式
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value true

    允许在连接到 NDB 时升级模式分布表。当为 true(默认值)时,这个更改将被推迟,直到所有 SQL 节点都升级到相同版本的 NDB 集群软件。

    Note

    直到升级完成,模式分布的性能可能会有一些下降。

  • 显示外键模拟表

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

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

  • 从属冲突角色

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

    NONE

    PRIMARY

    SECONDARY

    PASS

    已弃用的 ndb_conflict_role 的同义词。

  • 不记录表

    System Variable 不记录表
    Scope 会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value 关闭

    当该变量设置为 ON1 时,它会使使用 ENGINE NDB 创建或更改的所有表都变为非日志记录的;也就是说,对于该表的所有数据更改都不会写入重做日志或 checkpoint 到磁盘上,就像使用 NOLOGGING 选项创建或更改表一样。

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

    ndb_table_no_logging 不会影响 NDB 表模式文件的创建;要抑制这些文件,请使用 ndb_table_temporary 代替。

  • ndb_table_temporary

    System Variable ndb_table_temporary
    Scope 会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value 关闭

    当设置为 ON1 时,该变量会使 NDB 表不写入磁盘:这意味着不会创建表模式文件,也不会记录表。

    Note

    当前设置该变量无效。这是一个已知的问题,请参阅 Bug #34036。

  • ndb_use_copying_alter_table

    System Variable ndb_use_copying_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 关闭

    强制 NDBSELECT 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 事务支持。这通常不建议这样做,尽管在某些情况下可能有用,例如在客户端会话中导入一个或多个大事务的转储文件时禁用事务支持,以便将多行插入分成多个部分执行,而不是作为单个事务执行。在这种情况下,一旦导入完成,您应该将该变量的值重置为 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-batching[={OFF|ON}]
    System Variable replica_allow_batching
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

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

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

    设置这个变量仅在使用 NDB 存储引擎时生效;在 MySQL Server 8.3 中,它存在但不起作用。有关更多信息,请参阅 第 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 字节

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

    如果这个变量未设置(默认为 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 批量写入大小(即,最大待写入的字节数)是 --ndb-blob-write-batch-bytes 的值和 2 MB 的最大值。

    ndb_replica_blob_write_batch_bytes 设置为 0 意味着 NDB 不对副本上的 blob 批量写入大小施加限制。

  • server_id_bits

    Command-Line Format --server-id-bits=#
    System Variable 服务器ID位数
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 32
    Minimum Value 7
    Maximum Value 32

    该变量指示32位服务器ID中的最低有效位数,用于标识服务器。指示服务器实际上是由少于32位标识的,使得一些剩余位可以用于其他目的,例如在NDB API的事件API中存储用户数据OperationOptions结构中(NDB Cluster使用AnyValue存储服务器ID).

    当从服务器ID中提取有效服务器ID以检测复制循环时,服务器将忽略剩余位。服务器ID位数变量用于屏蔽服务器ID中的无关位,以便在I/O和SQL线程中决定是否忽略事件基于服务器ID.

    该数据可以从二进制日志中读取,使用mysqlbinlog,前提是它自己的服务器ID位数变量设置为32(默认值).

    如果服务器ID的值大于或等于2的服务器ID位数的幂;否则,mysqld将拒绝启动.

    该系统变量仅支持NDB Cluster,不支持标准MySQL 8.3 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”图像中读取数据。您应该确保在发出SELECT语句之前提交所有挂起的事务(使用明确的COMMIT语句,如果需要).

    Important

    不应在可能依赖前一个语句结果的语句中使用transaction_allow_batching.

    该变量当前仅支持NDB Cluster.

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

  • ndbinfo_database

    System Variable ndbinfo_database
    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_version
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value

    显示当前使用的ndbinfo引擎的版本;只读。

25.4.3.9.3 NDB 集群状态变量

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