Documentation Home
MySQL 9.0 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 259.0Kb
Man Pages (Zip) - 366.2Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 Reference Manual  / ...  / MySQL NDB Cluster 9.0  / Configuration of NDB Cluster  / NDB Cluster Configuration Files  /  MySQL Server Options and Variables for NDB Cluster

25.4.3.9 MySQL Server Options and Variables for NDB Cluster

This section provides information about MySQL server options, server and status variables that are specific to NDB Cluster. For general information on using these, and for other options and variables not specific to NDB Cluster, seeSection 7.1, “The MySQL Server”.

For NDB Cluster configuration parameters used in the cluster configuration file (usually namedconfig.ini), seeSection 25.4, “Configuration of NDB Cluster”.

25.4.3.9.1 MySQL Server Options for NDB Cluster

This section provides descriptions ofmysqld server options relating to NDB Cluster. For information aboutmysqld options not specific to NDB Cluster, and for general information about the use of options withmysqld, seeSection 7.1.7, “Server Command Options”.

For information about command-line options used with other NDB Cluster processes, seeSection 25.5, “NDB Cluster Programs”.

  • --ndbcluster

    Command-Line Format--ndbcluster[=value]
    Disabled byskip-ndbcluster
    TypeEnumeration
    Default ValueON
    Valid Values

    OFF

    FORCE

    TheNDBCLUSTER storage engine is necessary for using NDB Cluster. If amysqld binary includes support for theNDBCLUSTER storage engine, the engine is disabled by default. Use the--ndbcluster option to enable it. Use--skip-ndbcluster to explicitly disable the engine.

    The--ndbcluster option is ignored (and theNDB storage engine isnot enabled) if--initialize is also used. (It is neither necessary nor desirable to use this option together with--initialize.)

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

    Command-Line Format--ndb-allow-copying-alter-table[={OFF|ON}]
    System Variablendb_allow_copying_alter_table
    ScopeGlobal, Session
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueON

    LetALTER TABLE and other DDL statements use copying operations onNDB tables. Set toOFF to keep this from happening; doing so may improve performance of critical applications.

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

    Command-Line Format--ndb-applier-allow-skip-epoch
    System Variablendb_applier_allow_skip_epoch
    ScopeGlobal
    DynamicNo
    SET_VAR Hint AppliesNo

    Use together with--replica-skip-errors to causeNDB to ignore skipped epoch transactions. Has no effect when used alone.

  • --ndb-batch-size=#

    Command-Line Format--ndb-batch-size
    System Variablendb_batch_size
    ScopeGlobal, Session
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value32768
    Minimum Value0
    Maximum Value2147483648
    Unitbytes

    This sets the size in bytes that is used for NDB transaction batches.

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

    Command-Line Format--ndb-cluster-connection-pool
    System Variablendb_cluster_connection_pool
    System Variablendb_cluster_connection_pool
    ScopeGlobal
    ScopeGlobal
    DynamicNo
    DynamicNo
    SET_VAR Hint AppliesNo
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value1
    Minimum Value1
    Maximum Value63

    By setting this option to a value greater than 1 (the default), amysqld process can use multiple connections to the cluster, effectively mimicking several SQL nodes. Each connection requires its own[api] or[mysqld] section in the cluster configuration (config.ini) file, and counts against the maximum number of API connections supported by the cluster.

    Suppose that you have 2 cluster host computers, each running an SQL node whosemysqld process was started with--ndb-cluster-connection-pool=4; this means that the cluster must have 8 API slots available for these connections (instead of 2). All of these connections are set up when the SQL node connects to the cluster, and are allocated to threads in a round-robin fashion.

    This option is useful only when runningmysqld on host machines having multiple CPUs, multiple cores, or both. For best results, the value should be smaller than the total number of cores available on the host machine. Setting it to a value greater than this is likely to degrade performance severely.

    Important

    Because each SQL node using connection pooling occupies multiple API node slots—each slot having its own node ID in the cluster—you mustnot use a node ID as part of the cluster connection string when starting anymysqld process that employs connection pooling.

    Setting a node ID in the connection string when using the--ndb-cluster-connection-pool option causes node ID allocation errors when the SQL node attempts to connect to the cluster.

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

    Command-Line Format--ndb-cluster-connection-pool-nodeids
    System Variablendb_cluster_connection_pool_nodeids
    ScopeGlobal
    DynamicNo
    SET_VAR Hint AppliesNo
    TypeSet
    Default Value

    Specifies a comma-separated list of node IDs for connections to the cluster used by an SQL node. The number of nodes in this list must be the same as the value set for the--ndb-cluster-connection-pool option.

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

    Command-Line Format--ndb-blob-read-batch-bytes
    System Variablendb_blob_read_batch_bytes
    ScopeGlobal, Session
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value65536
    Minimum Value0
    Maximum Value4294967295

    This option can be used to set the size (in bytes) for batching ofBLOB data reads in NDB Cluster applications. When this batch size is exceeded by the amount ofBLOB data to be read within the current transaction, any pendingBLOB read operations are immediately executed.

    The maximum value for this option is 4294967295; the default is 65536. Setting it to 0 has the effect of disablingBLOB read batching.

    Note

    In NDB API applications, you can controlBLOB write batching with thesetMaxPendingBlobReadBytes() andgetMaxPendingBlobReadBytes() methods.

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

    Command-Line Format--ndb-blob-write-batch-bytes
    System Variablendb_blob_write_batch_bytes
    ScopeGlobal, Session
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value65536
    Minimum Value0
    Maximum Value4294967295
    Unitbytes

    This option can be used to set the size (in bytes) for batching ofBLOB data writes in NDB Cluster applications. When this batch size is exceeded by the amount ofBLOB data to be written within the current transaction, any pendingBLOB write operations are immediately executed.

    The maximum value for this option is 4294967295; the default is 65536. Setting it to 0 has the effect of disablingBLOB write batching.

    Note

    In NDB API applications, you can controlBLOB write batching with thesetMaxPendingBlobWriteBytes() andgetMaxPendingBlobWriteBytes() methods.

  • --ndb-connectstring=connection_string

    Command-Line Format--ndb-connectstring
    TypeString

    When using theNDBCLUSTER storage engine, this option specifies the management server that distributes cluster configuration data. SeeSection 25.4.3.3, “NDB Cluster Connection Strings”, for syntax.

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

    Command-Line Format--ndb-default-column-format={FIXED|DYNAMIC}
    System Variablendb_default_column_format
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeEnumeration
    Default ValueFIXED
    Valid Values

    FIXED

    DYNAMIC

    Sets the defaultCOLUMN_FORMAT andROW_FORMAT for new tables (seeSection 15.1.20, “CREATE TABLE Statement”). The default isFIXED.

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

    Command-Line Format--ndb-deferred-constraints
    System Variablendb_deferred_constraints
    ScopeGlobal, Session
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value0
    Minimum Value0
    Maximum Value1

    Controls whether or not constraint checks on unique indexes are deferred until commit time, where such checks are supported.0 is the default.

    This option is not normally needed for operation of NDB Cluster or NDB Cluster Replication, and is intended primarily for use in testing.

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

    Command-Line Format--ndb-schema-dist-timeout=#
    System Variablendb_schema_dist_timeout
    ScopeGlobal
    DynamicNo
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value120
    Minimum Value5
    Maximum Value1200
    Unitseconds

    Specifies the maximum time in seconds that thismysqld waits for a schema operation to complete before marking it as having timed out.

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

    Command-Line Format--ndb-distribution={KEYHASH|LINHASH}
    System Variablendb_distribution
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeEnumeration
    Default ValueKEYHASH
    Valid Values

    LINHASH

    KEYHASH

    Controls the default distribution method forNDB tables. Can be set to either ofKEYHASH (key hashing) orLINHASH (linear hashing).KEYHASH is the default.

  • --ndb-log-apply-status

    Command-Line Format--ndb-log-apply-status[={OFF|ON}]
    System Variablendb_log_apply_status
    ScopeGlobal
    DynamicNo
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueOFF

    Causes a replicamysqld to log any updates received from its immediate source to themysql.ndb_apply_status table in its own binary log using its own server ID rather than the server ID of the source. In a circular or chain replication setting, this allows such updates to propagate to themysql.ndb_apply_status tables of any MySQL servers configured as replicas of the currentmysqld.

    In a chain replication setup, using this option allows downstream (replica) clusters to be aware of their positions relative to all of their upstream contributors (sourcess).

    In a circular replication setup, this option causes changes tondb_apply_status tables to complete the entire circuit, eventually propagating back to the originating NDB Cluster. This also allows a cluster acting as a replication source to see when its changes (epochs) have been applied to the other clusters in the circle.

    This option has no effect unless the MySQL server is started with the--ndbcluster option.

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

    Command-Line Format--ndb-log-empty-epochs[={OFF|ON}]
    System Variablendb_log_empty_epochs
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueOFF

    Causes epochs during which there were no changes to be written to thendb_apply_status andndb_binlog_index tables, even whenlog_replica_updates is enabled.

    By default this option is disabled. Disabling--ndb-log-empty-epochs causes epoch transactions with no changes not to be written to the binary log, although a row is still written even for an empty epoch inndb_binlog_index.

    Because--ndb-log-empty-epochs=1 causes the size of thendb_binlog_index table to increase independently of the size of the binary log, users should be prepared to manage the growth of this table, even if they expect the cluster to be idle a large part of the time.

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

    Command-Line Format--ndb-log-empty-update[={OFF|ON}]
    System Variablendb_log_empty_update
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueOFF

    Causes updates that produced no changes to be written to thendb_apply_status andndb_binlog_index tables, even whenlog_replica_updates is enabled.

    By default this option is disabled (OFF). Disabling--ndb-log-empty-update causes updates with no changes not to be written to the binary log.

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

    Command-Line Format--ndb-log-exclusive-reads[={OFF|ON}]
    System Variablendb_log_exclusive_reads
    ScopeGlobal, Session
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default Value0

    Starting the server with this option causes primary key reads to be logged with exclusive locks, which allows for NDB Cluster Replication conflict detection and resolution based on read conflicts. You can also enable and disable these locks at runtime by setting the value of thendb_log_exclusive_reads system variable to 1 or 0, respectively. 0 (disable locking) is the default.

    For more information, seeRead conflict detection and resolution.

  • --ndb-log-fail-terminate

    Command-Line Format--ndb-log-fail-terminate
    System Variablendb_log_fail_terminate
    ScopeGlobal
    DynamicNo
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueFALSE

    When this option is specified, and complete logging of all found row events is not possible, themysqld process is terminated.

  • --ndb-log-orig

    Command-Line Format--ndb-log-orig[={OFF|ON}]
    System Variablendb_log_orig
    ScopeGlobal
    DynamicNo
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueOFF

    Log the originating server ID and epoch in thendb_binlog_index table.

    Note

    This makes it possible for a given epoch to have multiple rows inndb_binlog_index, one for each originating epoch.

    For more information, seeSection 25.7.4, “NDB Cluster Replication Schema and Tables”.

  • --ndb-log-transaction-dependency

    Command-Line Format--ndb-log-transaction-dependency={true|false}
    System Variablendb_log_transaction_dependency
    ScopeGlobal
    DynamicNo
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default Valuefalse

    Causes theNDB binary logging thread to calculate transaction dependencies for each transaction which it writes to the binary log. The default value isFALSE.

    This option cannot be set at runtime; the correspondingndb_log_transaction_dependency system variable is read-only.

  • --ndb-log-transaction-id

    Command-Line Format--ndb-log-transaction-id[={OFF|ON}]
    System Variablendb_log_transaction_id
    ScopeGlobal
    DynamicNo
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueOFF

    Causes a replicamysqld to write the NDB transaction ID in each row of the binary log. The default value isFALSE.

    --ndb-log-transaction-id is required to enable NDB Cluster Replication conflict detection and resolution using theNDB$EPOCH_TRANS() function (seeNDB$EPOCH_TRANS()). For more information, seeSection 25.7.12, “NDB Cluster Replication Conflict Resolution”.

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

    Command-Line Format--ndb-log-update-as-write[={OFF|ON}]
    System Variablendb_log_update_as_write
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueON

    Whether updates on the source are written to the binary log as updates (OFF) or writes (ON). When this option is enabled, and both--ndb-log-updated-only and--ndb-log-update-minimal are disabled, operations of different types are loǵged as described in the following list:

    • INSERT: Logged as aWRITE_ROW event with no before image; the after image is logged with all columns.

      UPDATE: Logged as aWRITE_ROW event with no before image; the after image is logged with all columns.

      DELETE: Logged as aDELETE_ROW event with all columns logged in the before image; the after image is not logged.

    This option can be used for NDB Replication conflict resolution in combination with the other two NDB logging options mentioned previously; seendb_replication Table, for more information.

  • --ndb-log-updated-only

    Command-Line Format--ndb-log-updated-only[={OFF|ON}]
    System Variablendb_log_updated_only
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueON

    Whethermysqld writes updates only (ON) or complete rows (OFF) to the binary log. When this option is enabled, and both--ndb-log-update-as-write and--ndb-log-update-minimal are disabled, operations of different types are loǵged as described in the following list:

    • INSERT: Logged as aWRITE_ROW event with no before image; the after image is logged with all columns.

    • UPDATE: Logged as anUPDATE_ROW event with primary key columns and updated columns present in both the before and after images.

    • DELETE: Logged as aDELETE_ROW event with primary key columns incuded in the before image; the after image is not logged.

    This option can be used for NDB Replication conflict resolution in combination with the other two NDB logging options mentioned previously; seendb_replication Table, for more information about how these options interact with one another.

  • --ndb-log-update-minimal

    Command-Line Format--ndb-log-update-minimal[={OFF|ON}]
    System Variablendb_log_update_minimal
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueOFF

    Log updates in a minimal fashion, by writing only the primary key values in the before image, and only the changed columns in the after image. This may cause compatibility problems if replicating to storage engines other thanNDB. When this option is enabled, and both--ndb-log-updated-only and--ndb-log-update-as-write are disabled, operations of different types are loǵged as described in the following list:

    • INSERT: Logged as aWRITE_ROW event with no before image; the after image is logged with all columns.

    • UPDATE: Logged as anUPDATE_ROW event with primary key columns in the before image; all columnsexcept primary key columns are logged in the after image.

    • DELETE: Logged as aDELETE_ROW event with all columns in the before image; the after image is not logged.

    This option can be used for NDB Replication conflict resolution in combination with the other two NDB logging options mentioned previously; seendb_replication Table, for more information.

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

    Command-Line Format--ndb-mgm-tls=[strict|relaxed]
    System Variablendb_mgm_tls
    ScopeGlobal
    DynamicNo
    SET_VAR Hint AppliesNo
    TypeEnumeration
    Default Valuerelaxed
    Valid Values

    relaxed

    strict

    Sets the level of TLS support required for TLS connections to NDB Cluster; the value is one ofrelaxed orstrict.relaxed means that a TLS connection is attempted, but success is not required;strict means that TLS is required to connect. The default isrelaxed.

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

    Command-Line Format--ndb-mgmd-host=host_name[:port_num]
    TypeString
    Default Valuelocalhost:1186

    Can be used to set the host and port number of a single management server for the program to connect to. If the program requires node IDs or references to multiple management servers (or both) in its connection information, use the--ndb-connectstring option instead.

  • --ndb-nodeid=#

    Command-Line Format--ndb-nodeid=#
    Status VariableNdb_cluster_node_id
    ScopeGlobal
    DynamicNo
    TypeInteger
    Default ValueN/A
    Minimum Value1
    Maximum Value255
    Maximum Value63

    Set this MySQL server's node ID in an NDB Cluster.

    The--ndb-nodeid option overrides any node ID set with--ndb-connectstring, regardless of the order in which the two options are used.

    In addition, if--ndb-nodeid is used, then either a matching node ID must be found in a[mysqld] or[api] section ofconfig.ini, or there must be anopen[mysqld] or[api] section in the file (that is, a section without aNodeId orId parameter specified). This is also true if the node ID is specified as part of the connection string.

    Regardless of how the node ID is determined, it is shown as the value of the global status variableNdb_cluster_node_id in the output ofSHOW STATUS, and ascluster_node_id in theconnection row of the output ofSHOW ENGINE NDBCLUSTER STATUS.

    For more information about node IDs for NDB Cluster SQL nodes, seeSection 25.4.3.7, “Defining SQL and Other API Nodes in an NDB Cluster”.

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

    Command-Line Format--ndbinfo[=value]
    TypeEnumeration
    Default ValueON
    Valid Values

    ON

    OFF

    FORCE

    Enables the plugin for thendbinfo information database. By default this is ON wheneverNDBCLUSTER is enabled.

  • --ndb-optimization-delay=milliseconds

    Command-Line Format--ndb-optimization-delay=#
    System Variablendb_optimization_delay
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value10
    Minimum Value0
    Maximum Value100000
    Unitmilliseconds

    Set the number of milliseconds to wait between sets of rows byOPTIMIZE TABLE statements onNDB tables. The default is 10.

  • --ndb-optimized-node-selection

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

    Enable optimizations for selection of nodes for transactions. Enabled by default; use--skip-ndb-optimized-node-selection to disable.

  • ndb-tls-search-path=path

    Command-Line Format--ndb-tls-search-path=path
    System Variablendb_tls_search_path
    ScopeGlobal
    DynamicNo
    SET_VAR Hint AppliesNo
    TypePath name
    Default Value (Unix)$HOME/tls
    Default Value (Windows)$HOMEDIR/tls

    List of directories to search for CAs and private keys for NDB TLS connections. The list is comma-delimited on Unix platforms and semicolon-delimited on Windows.

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

    Command-Line Format--ndb-transid-mysql-connection-map[=state]
    TypeEnumeration
    Default ValueON
    Valid Values

    ON

    OFF

    FORCE

    Enables or disables the plugin that handles thendb_transid_mysql_connection_map table in theINFORMATION_SCHEMA database. Takes one of the valuesON,OFF, orFORCE.ON (the default) enables the plugin.OFF disables the plugin, which makesndb_transid_mysql_connection_map inaccessible.FORCE keeps the MySQL Server from starting if the plugin fails to load and start.

    You can see whether thendb_transid_mysql_connection_map table plugin is running by checking the output ofSHOW PLUGINS.

  • --ndb-wait-connected=seconds

    Command-Line Format--ndb-wait-connected=#
    System Variablendb_wait_connected
    ScopeGlobal
    DynamicNo
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value120
    Default Value30
    Minimum Value0
    Maximum Value31536000
    Unitseconds

    This option sets the period of time that the MySQL server waits for connections to NDB Cluster management and data nodes to be established before accepting MySQL client connections. The time is specified in seconds. The default value is30.

  • --ndb-wait-setup=seconds

    Command-Line Format--ndb-wait-setup=#
    System Variablendb_wait_setup
    ScopeGlobal
    DynamicNo
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value120
    Default Value30
    Default Value15
    Default Value15
    Minimum Value0
    Maximum Value31536000
    Unitseconds

    This variable shows the period of time that the MySQL server waits for theNDB storage engine to complete setup before timing out and treatingNDB as unavailable. The time is specified in seconds. The default value is30.

  • --skip-ndbcluster

    Command-Line Format--skip-ndbcluster

    Disable theNDBCLUSTER storage engine. This is the default for binaries that were built withNDBCLUSTER storage engine support; the server allocates memory and other resources for this storage engine only if the--ndbcluster option is given explicitly. SeeSection 25.4.1, “Quick Test Setup of NDB Cluster”, for an example.

25.4.3.9.2 NDB Cluster System Variables

This section provides detailed information about MySQL server system variables that are specific to NDB Cluster and theNDB storage engine. For system variables not specific to NDB Cluster, seeSection 7.1.8, “Server System Variables”. For general information on using system variables, seeSection 7.1.9, “Using System Variables”.

  • ndb_autoincrement_prefetch_sz

    Command-Line Format--ndb-autoincrement-prefetch-sz=#
    System Variablendb_autoincrement_prefetch_sz
    ScopeGlobal, Session
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value512
    Minimum Value1
    Maximum Value65536

    Determines the probability of gaps in an autoincremented column. Set it to1 to minimize this. Setting it to a high value for optimization makes inserts faster, but decreases the likelihood of consecutive autoincrement numbers being used in a batch of inserts.

    This variable affects only the number ofAUTO_INCREMENT IDs that are fetched between statements; within a given statement, at least 32 IDs are obtained at a time.

    Important

    This variable does not affect inserts performed usingINSERT ... SELECT.

  • ndb_clear_apply_status

    Command-Line Format--ndb-clear-apply-status[={OFF|ON}]
    System Variablendb_clear_apply_status
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueON

    By the default, executingRESET REPLICA causes an NDB Cluster replica to purge all rows from itsndb_apply_status table. You can disable this by settingndb_clear_apply_status=OFF.

  • ndb_conflict_role

    Command-Line Format--ndb-conflict-role=value
    System Variablendb_conflict_role
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeEnumeration
    Default ValueNONE
    Valid Values

    NONE

    PRIMARY

    SECONDARY

    PASS

    Determines the role of this SQL node (and NDB Cluster) in a circular (active-active) replication setup.ndb_conflict_role can take any one of the valuesPRIMARY,SECONDARY,PASS, orNULL (the default). The replica SQL thread must be stopped before you can changendb_conflict_role. In addition, it is not possible to change directly betweenPASS and either ofPRIMARY orSECONDARY directly; in such cases, you must ensure that the SQL thread is stopped, then executeSET @@GLOBAL.ndb_conflict_role = 'NONE' first.

    This variable replaces the deprecatedndb_slave_conflict_role.

    For more information, seeSection 25.7.12, “NDB Cluster Replication Conflict Resolution”.

  • ndb_data_node_neighbour

    Command-Line Format--ndb-data-node-neighbour=#
    System Variablendb_data_node_neighbour
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value0
    Minimum Value0
    Maximum Value255

    Sets the ID of anearest data node—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. This used to ensure that when a fully replicated table is accessed, we access it on this data node, to ensure that the local copy of the table is always used whenever possible. This can also be used for providing hints for transactions.

    This can improve data access times in the case of a node that is physically closer than and thus has higher network throughput than others on the same host.

    SeeSection 15.1.20.12, “Setting NDB Comment Options”, for further information.

    Note

    An equivalent methodset_data_node_neighbour() is provided for use in NDB API applications.

  • ndb_dbg_check_shares

    Command-Line Format--ndb-dbg-check-shares=#
    System Variablendb_dbg_check_shares
    ScopeGlobal, Session
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value0
    Minimum Value0
    Maximum Value1

    When set to 1, check that no shares are lingering. Available in debug builds only.

  • ndb_default_column_format

    Command-Line Format--ndb-default-column-format={FIXED|DYNAMIC}
    System Variablendb_default_column_format
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeEnumeration
    Default ValueFIXED
    Valid Values

    FIXED

    DYNAMIC

    Sets the defaultCOLUMN_FORMAT andROW_FORMAT for new tables (seeSection 15.1.20, “CREATE TABLE Statement”). The default isFIXED.

  • ndb_deferred_constraints

    Command-Line Format--ndb-deferred-constraints=#
    System Variablendb_deferred_constraints
    ScopeGlobal, Session
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value0
    Minimum Value0
    Maximum Value1

    Controls whether or not constraint checks are deferred, where these are supported.0 is the default.

    This variable is not normally needed for operation of NDB Cluster or NDB Cluster Replication, and is intended primarily for use in testing.

  • ndb_distribution

    Command-Line Format--ndb-distribution={KEYHASH|LINHASH}
    System Variablendb_distribution
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeEnumeration
    Default ValueKEYHASH
    Valid Values

    LINHASH

    KEYHASH

    Controls the default distribution method forNDB tables. Can be set to either ofKEYHASH (key hashing) orLINHASH (linear hashing).KEYHASH is the default.

  • ndb_eventbuffer_free_percent

    Command-Line Format--ndb-eventbuffer-free-percent=#
    System Variablendb_eventbuffer_free_percent
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value20
    Minimum Value1
    Maximum Value99

    Sets the percentage of the maximum memory allocated to the event buffer (ndb_eventbuffer_max_alloc) that should be available in event buffer after reaching the maximum, before starting to buffer again.

  • ndb_eventbuffer_max_alloc

    Command-Line Format--ndb-eventbuffer-max-alloc=#
    System Variablendb_eventbuffer_max_alloc
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value0
    Minimum Value0
    Maximum Value9223372036854775807

    Sets the maximum amount memory (in bytes) that can be allocated for buffering events by the NDB API. 0 means that no limit is imposed, and is the default.

  • ndb_extra_logging

    Command-Line Formatndb_extra_logging=#
    System Variablendb_extra_logging
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value1
    Minimum Value0
    Maximum Value1

    This variable enables recording in the MySQL error log of information specific to theNDB storage engine.

    When this variable is set to 0, the only information specific toNDB that is written to the MySQL error log relates to transaction handling. If it set to a value greater than 0 but less than 10,NDB table schema and connection events are also logged, as well as whether or not conflict resolution is in use, and otherNDB errors and information. If the value is set to 10 or more, information aboutNDB internals, such as the progress of data distribution among cluster nodes, is also written to the MySQL error log. The default is 1.

  • ndb_force_send

    Command-Line Format--ndb-force-send[={OFF|ON}]
    System Variablendb_force_send
    ScopeGlobal, Session
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueON

    Forces sending of buffers toNDB immediately, without waiting for other threads. Defaults toON.

  • ndb_fully_replicated

    Command-Line Format--ndb-fully-replicated[={OFF|ON}]
    System Variablendb_fully_replicated
    ScopeGlobal, Session
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueOFF

    Determines whether newNDB tables are fully replicated. This setting can be overridden for an individual table usingCOMMENT="NDB_TABLE=FULLY_REPLICATED=..." in aCREATE TABLE orALTER TABLE statement; seeSection 15.1.20.12, “Setting NDB Comment Options”, for syntax and other information.

  • ndb_index_stat_enable

    Command-Line Format--ndb-index-stat-enable[={OFF|ON}]
    System Variablendb_index_stat_enable
    ScopeGlobal, Session
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueON

    UseNDB index statistics in query optimization. The default isON.

    The index statistics tables are always created when the server starts, regardless of this option's value.

  • ndb_index_stat_option

    Command-Line Format--ndb-index-stat-option=value
    System Variablendb_index_stat_option
    ScopeGlobal, Session
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeString
    Default Valueloop_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

    This variable is used for providing tuning options for NDB index statistics generation. The list consist of comma-separated name-value pairs of option names and values, and this list must not contain any space characters.

    Options not used when settingndb_index_stat_option are not changed from their default values. For example, you can setndb_index_stat_option = 'loop_idle=1000ms,cache_limit=32M'.

    Time values can be optionally suffixed withh (hours),m (minutes), ors (seconds). Millisecond values can optionally be specified usingms; millisecond values cannot be specified usingh,m, ors.) Integer values can be suffixed withK,M, orG.

    The names of the options that can be set using this variable are shown in the table that follows. The table also provides brief descriptions of the options, their default values, and (where applicable) their minimum and maximum values.

    Table 25.19 ndb_index_stat_option optionsand values

    NameDescriptionDefault/UnitsMinimum/Maximum
    loop_enable1000 ms0/4G
    loop_idleTime to sleep when idle1000 ms0/4G
    loop_busyTime to sleep when more work is waiting100 ms0/4G
    update_batch10/4G
    read_batch41/4G
    idle_batch321/4G
    check_batch81/4G
    check_delayHow often to check for new statistics10 m1/4G
    delete_batch80/4G
    clean_delay1 m0/4G
    error_batch41/4G
    error_delay1 m1/4G
    evict_batch81/4G
    evict_delayClean LRU cache, from read time1 m0/4G
    cache_limitMaximum amount of memory in bytes used for cached index statistics by thismysqld; clean up the cache when this is exceeded.32 M0/4G
    cache_lowpct900/100
    zero_totalSetting this to 1 resets all accumulating counters inndb_index_stat_status to 0. This option value is also reset to 0 when this is done.00/1

  • ndb_join_pushdown

    System Variablendb_join_pushdown
    ScopeGlobal, Session
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueON

    This variable controls whether joins onNDB tables are pushed down to the NDB kernel (data nodes). Previously, a join was handled using multiple accesses ofNDB by the SQL node; however, whenndb_join_pushdown is enabled, a pushable join is sent in its entirety to the data nodes, where it can be distributed among the data nodes and executed in parallel on multiple copies of the data, with a single, merged result being returned tomysqld. This can reduce greatly the number of round trips between an SQL node and the data nodes required to handle such a join.

    By default,ndb_join_pushdown is enabled.

    Conditions for NDB pushdown joins.  In order for a join to be pushable, it must meet the following conditions:

    1. Only columns can be compared, and all columns to be joined must useexactly the same data type. This means that (for example) a join on anINT column and aBIGINT column also cannot be pushed down.

      Expressions comparing columns from the same table can also be pushed down. The columns (or the result of any operations on those columns) must be of exactly the same type, including the same signedness, length, character set and collation, precision, and scale, where these are applicable.

    2. Queries referencingBLOB orTEXT columns are not supported.

    3. Explicit locking is not supported; however, theNDB storage engine's characteristic implicit row-based locking is enforced.

      This means that a join usingFOR UPDATE cannot be pushed down.

    4. In order for a join to be pushed down, child tables in the join must be accessed using one of theref,eq_ref, or const access methods, or some combination of these methods.

      Outer joined child tables can only be pushed usingeq_ref.

      If the root of the pushed join is aneq_ref orconst, only child tables joined byeq_ref can be appended. (A table joined byref is likely to become the root of another pushed join.)

      If the query optimizer decides onUsing join cache for a candidate child table, that table cannot be pushed as a child. However, it may be the root of another set of pushed tables.

    5. Joins referencing tables explicitly partitioned by[LINEAR] HASH,LIST, orRANGE currently cannot be pushed down.

    You can see whether a given join can be pushed down by checking it withEXPLAIN; when the join can be pushed down, you can see references to thepushed join in theExtra column of the output, as shown in this example:

    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: ALLpossible_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: refpossible_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_refpossible_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: refpossible_keys: PRIMARY,emp_no          key: emp_no      key_len: 4          ref: employees.de.emp_no         rows: 19        Extra: Child of 'e' in pushed join@14 rows in set (0.00 sec)
    Note

    If inner joined child tables are joined byref,and the result is ordered or grouped by a sorted index, this index cannot provide sorted rows, which forces writing to a sorted tempfile.

    Two additional sources of information about pushed join performance are available:

    1. The status variablesNdb_pushed_queries_defined,Ndb_pushed_queries_dropped,Ndb_pushed_queries_executed, andNdb_pushed_reads.

    2. The counters in thendbinfo.counters table that belong to theDBSPJ kernel block.

  • ndb_log_apply_status

    Command-Line Format--ndb-log-apply-status[={OFF|ON}]
    System Variablendb_log_apply_status
    ScopeGlobal
    DynamicNo
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueOFF

    A read-only variable which shows whether the server was started with the--ndb-log-apply-status option.

  • ndb_log_bin

    Command-Line Format--ndb-log-bin[={OFF|ON}]
    System Variablendb_log_bin
    ScopeGlobal, Session
    DynamicNo
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueOFF

    Causes updates toNDB tables to be written to the binary log. The setting for this variable has no effect if binary logging is not already enabled on the server usinglog_bin.ndb_log_bin defaults to 0 (FALSE).

  • ndb_log_binlog_index

    Command-Line Format--ndb-log-binlog-index[={OFF|ON}]
    System Variablendb_log_binlog_index
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueON

    Causes a mapping of epochs to positions in the binary log to be inserted into thendb_binlog_index table. Setting this variable has no effect if binary logging is not already enabled for the server usinglog_bin. (In addition,ndb_log_bin must not be disabled.)ndb_log_binlog_index defaults to1 (ON); normally, there is never any need to change this value in a production environment.

  • ndb_log_empty_epochs

    Command-Line Format--ndb-log-empty-epochs[={OFF|ON}]
    System Variablendb_log_empty_epochs
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueOFF

    When this variable is set to 0, epoch transactions with no changes are not written to the binary log, although a row is still written even for an empty epoch inndb_binlog_index.

  • ndb_log_empty_update

    Command-Line Format--ndb-log-empty-update[={OFF|ON}]
    System Variablendb_log_empty_update
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueOFF

    When this variable is set toON (1), update transactions with no changes are written to the binary log, even whenlog_replica_updates is enabled.

  • ndb_log_exclusive_reads

    Command-Line Format--ndb-log-exclusive-reads[={OFF|ON}]
    System Variablendb_log_exclusive_reads
    ScopeGlobal, Session
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default Value0

    This variable determines whether primary key reads are logged with exclusive locks, which allows for NDB Cluster Replication conflict detection and resolution based on read conflicts. To enable these locks, set the value ofndb_log_exclusive_reads to 1. 0, which disables such locking, is the default.

    For more information, seeRead conflict detection and resolution.

  • ndb_log_orig

    Command-Line Format--ndb-log-orig[={OFF|ON}]
    System Variablendb_log_orig
    ScopeGlobal
    DynamicNo
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueOFF

    Shows whether the originating server ID and epoch are logged in thendb_binlog_index table. Set using the--ndb-log-orig server option.

  • ndb_log_transaction_id

    System Variablendb_log_transaction_id
    ScopeGlobal
    DynamicNo
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueOFF

    This read-only, Boolean system variable shows whether a replicamysqld writes NDB transaction IDs in the binary log (required to useactive-active NDB Cluster Replication withNDB$EPOCH_TRANS() conflict detection). To change the setting, use the--ndb-log-transaction-id option.

    ndb_log_transaction_id is not supported in mainline MySQL Server 9.0.

    For more information, seeSection 25.7.12, “NDB Cluster Replication Conflict Resolution”.

  • ndb_log_transaction_compression

    Command-Line Format--ndb-log-transaction-compression
    System Variablendb_log_transaction_compression
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueOFF

    Whether a replicamysqld writes compressed transactions in the binary log; present only ifmysqld was compiled with support forNDB.

    You should note that starting the MySQL server with--binlog-transaction-compression forces this variable to be enabled (ON), and that this overrides any setting for--ndb-log-transaction-compression made on the command line or in amy.cnf file, as shown here:

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

    To disable binary log transaction compression forNDB tables only, set thendb_log_transaction_compression system variable toOFF in amysql or other client session after startingmysqld.

    Setting thebinlog_transaction_compression variable after startup has no effect on the value ofndb_log_transaction_compression.

    For more information on binary log transaction compression, such as which events are or are not compressed and as well as behavior changes to be aware of when this feature is used, seeSection 7.4.4.5, “Binary Log Transaction Compression”.

  • ndb_log_transaction_compression_level_zstd

    Command-Line Format--ndb-log-transaction-compression-level-zstd=#
    System Variablendb_log_transaction_compression_level_zstd
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value3
    Minimum Value1
    Maximum Value22

    TheZSTD compression level used for writing compressed transactions to the replica's binary log if enabled byndb_log_transaction_compression. Not supported ifmysqld was not compiled with support for theNDB storage engine.

    SeeSection 7.4.4.5, “Binary Log Transaction Compression”, for more information.

  • ndb_metadata_check

    Command-Line Format--ndb-metadata-check[={OFF|ON}]
    System Variablendb_metadata_check
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueON

    NDB uses a background thread to check for metadata changes eachndb_metadata_check_interval seconds as compared with the MySQL data dictionary. This metadata change detection thread can be disabled by settingndb_metadata_check toOFF. The thread is enabled by default.

  • ndb_metadata_check_interval

    Command-Line Format--ndb-metadata-check-interval=#
    System Variablendb_metadata_check_interval
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value60
    Minimum Value0
    Maximum Value31536000
    Unitseconds

    NDB runs a metadata change detection thread in the background to determine when the NDB dictionary has changed with respect to the MySQL data dictionary. By default,the interval between such checks is 60 seconds; this can be adjusted by setting the value ofndb_metadata_check_interval. To enable or disable the thread, usendb_metadata_check.

  • ndb_metadata_sync

    System Variablendb_metadata_sync
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default Valuefalse

    Setting this variable causes the change monitor thread to override any values set forndb_metadata_check orndb_metadata_check_interval, and to enter a period of continuous change detection. When the thread ascertains that there are no more changes to be detected, it stalls until the binary logging thread has finished synchronization of all detected objects.ndb_metadata_sync is then set tofalse, and the change monitor thread reverts to the behavior determined by the settings forndb_metadata_check andndb_metadata_check_interval.

    Setting this variable totrue causes the list of excluded objects to be cleared; setting it tofalse clears the list of objects to be retried.

  • ndb_optimized_node_selection

    Command-Line Format--ndb-optimized-node-selection=#
    System Variablendb_optimized_node_selection
    ScopeGlobal
    DynamicNo
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value3
    Minimum Value0
    Maximum Value3

    There are two forms of optimized node selection, described here:

    1. The SQL node usespromixity to determine the transaction coordinator; that is, theclosest data node to the SQL node is chosen as the transaction coordinator. For this purpose, a data node having a shared memory connection with the SQL node is considered to beclosest to the SQL node; the next closest (in order of decreasing proximity) are: TCP connection tolocalhost, followed by TCP connection from a host other thanlocalhost.

    2. The SQL thread usesdistribution awareness to select the data node. That is, the data node housing the cluster partition accessed by the first statement of a given transaction is used as the transaction coordinator for the entire transaction. (This is effective only if the first statement of the transaction accesses no more than one cluster partition.)

    This option takes one of the integer values0,1,2, or3.3 is the default. These values affect node selection as follows:

    • 0: Node selection is not optimized. Each data node is employed as the transaction coordinator 8 times before the SQL thread proceeds to the next data node.

    • 1: Proximity to the SQL node is used to determine the transaction coordinator.

    • 2: Distribution awareness is used to select the transaction coordinator. However, if the first statement of the transaction accesses more than one cluster partition, the SQL node reverts to the round-robin behavior seen when this option is set to0.

    • 3: If distribution awareness can be employed to determine the transaction coordinator, then it is used; otherwise proximity is used to select the transaction coordinator. (This is the default behavior.)

    Proximity is determined as follows:

    1. Start with the value set for theGroup parameter (default 55).

    2. For an API node sharing the same host with other API nodes, decrement the value by 1. Assuming the default value forGroup, the effective value for data nodes on same host as the API node is 54, and for remote data nodes 55.

    3. Settingndb_data_node_neighbour further decreases the effectiveGroup value by 50, causing this node to be regarded as the nearest node. This is needed only when all data nodes are on hosts other than that hosts the API node and it is desirable to dedicate one of them to the API node. In normal cases, the default adjustment described previously is sufficient.

    Frequent changes inndb_data_node_neighbour are not advisable, since this changes the state of the cluster connection and thus may disrupt the selection algorithm for new transactions from each thread until it stablilizes.

  • ndb_read_backup

    Command-Line Format--ndb-read-backup[={OFF|ON}]
    System Variablendb_read_backup
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueON

    Enable read from any fragment replica for anyNDB table subsequently created; doing so greatly improves the table read performance at a relatively small cost to writes.

    If the SQL node and the data node use the same host name or IP address, this fact is detected automatically, so that the preference is to send reads to the same host. If these nodes are on the same host but use different IP addresses, you can tell the SQL node to use the correct data node by setting the value ofndb_data_node_neighbour on the SQL node to the node ID of the data node.

    To enable or disable read from any fragment replica for an individual table, you can set theNDB_TABLE optionREAD_BACKUP for the table accordingly, in aCREATE TABLE orALTER TABLE statement; seeSection 15.1.20.12, “Setting NDB Comment Options”, for more information.

  • ndb_recv_thread_activation_threshold

    Command-Line Format--ndb-recv-thread-activation-threshold=#
    System Variablendb_recv_thread_activation_threshold
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value8
    Minimum Value0 (MIN_ACTIVATION_THRESHOLD)
    Maximum Value16 (MAX_ACTIVATION_THRESHOLD)

    When this number of concurrently active threads is reached, the receive thread takes over polling of the cluster connection.

    This variable is global in scope. It can also be set at startup.

  • ndb_recv_thread_cpu_mask

    Command-Line Format--ndb-recv-thread-cpu-mask=mask
    System Variablendb_recv_thread_cpu_mask
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBitmap
    Default Value[empty]

    CPU mask for locking receiver threads to specific CPUs. This is specified as a hexadecimal bitmask. For example,0x33 means that one CPU is used per receiver thread. An empty string is the default; settingndb_recv_thread_cpu_mask to this value removes any receiver thread locks previously set.

    This variable is global in scope. It can also be set at startup.

  • ndb_report_thresh_binlog_epoch_slip

    Command-Line Format--ndb-report-thresh-binlog-epoch-slip=#
    System Variablendb_report_thresh_binlog_epoch_slip
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value10
    Minimum Value0
    Maximum Value256

    This represents the threshold for the number of epochs completely buffered in the event buffer, but not yet consumed by the binlog injector thread. When this degree of slippage (lag) is exceeded, an event buffer status message is reported, withBUFFERED_EPOCHS_OVER_THRESHOLD supplied as the reason (seeSection 25.6.2.3, “Event Buffer Reporting in the Cluster Log”). Slip is increased when an epoch is received from data nodes and buffered completely in the event buffer; it is decreased when an epoch is consumed by the binlog injector thread, it is reduced. Empty epochs are buffered and queued, and so included in this calculation only when this is enabled using theNdb::setEventBufferQueueEmptyEpoch() method from the NDB API.

  • ndb_report_thresh_binlog_mem_usage

    Command-Line Format--ndb-report-thresh-binlog-mem-usage=#
    System Variablendb_report_thresh_binlog_mem_usage
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value10
    Minimum Value0
    Maximum Value10

    This is a threshold on the percentage of free memory remaining before reporting binary log status. For example, a value of10 (the default) means that if the amount of available memory for receiving binary log data from the data nodes falls below 10%, a status message is sent to the cluster log.

  • ndb_row_checksum

    System Variablendb_row_checksum
    ScopeGlobal, Session
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value1
    Minimum Value0
    Maximum Value1

    Traditionally,NDB has created tables with row checksums, which checks for hardware issues at the expense of performance. Settingndb_row_checksum to 0 means that row checksums arenot used for new or altered tables, which has a significant impact on performance for all types of queries. This variable is set to 1 by default, to provide backward-compatible behavior.

  • ndb_schema_dist_lock_wait_timeout

    Command-Line Format--ndb-schema-dist-lock-wait-timeout=value
    System Variablendb_schema_dist_lock_wait_timeout
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value30
    Minimum Value0
    Maximum Value1200
    Unitseconds

    Number of seconds to wait during schema distribution for the metadata lock taken on each SQL node in order to change its local data dictionary to reflect the DDL statement change. After this time has elapsed, a warning is returned to the effect that a given SQL node's data dictionary was not updated with the change. This avoids having the binary logging thread wait an excessive length of time while handling schema operations.

  • ndb_schema_dist_timeout

    Command-Line Format--ndb-schema-dist-timeout=value
    System Variablendb_schema_dist_timeout
    ScopeGlobal
    DynamicNo
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value120
    Minimum Value5
    Maximum Value1200
    Unitseconds

    Number of seconds to wait before detecting a timeout during schema distribution. This can indicate that other SQL nodes are experiencing excessive activity, or that they are somehow being prevented from acquiring necessary resources at this time.

  • ndb_schema_dist_upgrade_allowed

    Command-Line Format--ndb-schema-dist-upgrade-allowed=value
    System Variablendb_schema_dist_upgrade_allowed
    ScopeGlobal
    DynamicNo
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default Valuetrue

    Allow upgrading of the schema distribution table when connecting toNDB. When true (the default), this change is deferred until all SQL nodes have been upgraded to the same version of the NDB Cluster software.

    Note

    The performance of the schema distribution may be somewhat degraded until the upgrade has been performed.

  • ndb_show_foreign_key_mock_tables

    Command-Line Format--ndb-show-foreign-key-mock-tables[={OFF|ON}]
    System Variablendb_show_foreign_key_mock_tables
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueOFF

    Show the mock tables used byNDB to supportforeign_key_checks=0. When this is enabled, extra warnings are shown when creating and dropping the tables. The real (internal) name of the table can be seen in the output ofSHOW CREATE TABLE.

  • ndb_slave_conflict_role

    Command-Line Format--ndb-slave-conflict-role=value
    DeprecatedYes
    System Variablendb_slave_conflict_role
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeEnumeration
    Default ValueNONE
    Valid Values

    NONE

    PRIMARY

    SECONDARY

    PASS

    Deprecated synonym forndb_conflict_role.

  • ndb_table_no_logging

    System Variablendb_table_no_logging
    ScopeSession
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueOFF

    When this variable is set toON or1, it causes all tables created or altered usingENGINE NDB to be nonlogging; that is, no data changes for this table are written to the redo log or checkpointed to disk, just as if the table had been created or altered using theNOLOGGING option forCREATE TABLE orALTER TABLE.

    For more information about nonloggingNDB tables, seeNDB_TABLE Options.

    ndb_table_no_logging has no effect on the creation ofNDB table schema files; to suppress these, usendb_table_temporary instead.

  • ndb_table_temporary

    System Variablendb_table_temporary
    ScopeSession
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueOFF

    When set toON or1, this variable causesNDB tables not to be written to disk: This means that no table schema files are created, and that the tables are not logged.

    Note

    Setting this variable currently has no effect. This is a known issue; see Bug #34036.

  • ndb_use_copying_alter_table

    System Variablendb_use_copying_alter_table
    ScopeGlobal, Session
    DynamicNo
    SET_VAR Hint AppliesNo

    ForcesNDB to use copying of tables in the event of problems with onlineALTER TABLE operations. The default value isOFF.

  • ndb_use_exact_count

    System Variablendb_use_exact_count
    ScopeGlobal, Session
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueOFF

    ForcesNDB to use a count of records duringSELECT COUNT(*) query planning to speed up this type of query. The default value isOFF, which allows for faster queries overall.

  • ndb_use_transactions

    Command-Line Format--ndb-use-transactions[={OFF|ON}]
    System Variablendb_use_transactions
    ScopeGlobal, Session
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueON

    You can disableNDB transaction support by setting this variable's value toOFF. This is generally not recommended, although it may be useful to disable transaction support within a given client session when that session is used to import one or more dump files with large transactions; this allows a multi-row insert to be executed in parts, rather than as a single transaction. In such cases, once the import has been completed, you should either reset the variable value for this session toON, or simply terminate the session.

  • ndb_version

    System Variablendb_version
    ScopeGlobal
    DynamicNo
    SET_VAR Hint AppliesNo
    TypeString
    Default Value

    NDB engine version, as a composite integer.

  • ndb_version_string

    System Variablendb_version_string
    ScopeGlobal
    DynamicNo
    SET_VAR Hint AppliesNo
    TypeString
    Default Value

    NDB engine version inndb-x.y.z format.

  • replica_allow_batching

    Command-Line Format--replica-allow-batching[={OFF|ON}]
    System Variablereplica_allow_batching
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueON

    Whether or not batched updates are enabled on NDB Cluster replicas.

    Allowing batched updates on the replica greatly improves performance, particularly when replicatingTEXT,BLOB, andJSON columns. For this reason,replica_allow_batching is enabled by default.

    Setting this variable has an effect only when using replication with theNDB storage engine; in MySQL Server 9.0, it is present but does nothing. For more information, seeSection 25.7.6, “Starting NDB Cluster Replication (Single Replication Channel)”.

  • ndb_replica_batch_size

    Command-Line Format--ndb-replica-batch-size=#
    System Variablendb_replica_batch_size
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value2097152
    Minimum Value0
    Maximum Value2147483648
    Unitbytes

    Determines the batch size in bytes used by the replication applier thread. Set this variable rather than the--ndb-batch-size option to apply this setting to the replica, exclusive of any other sessions.

    If this variable is unset (default 2 MB), its effective value is the greater of the value of--ndb-batch-size and 2 MB.

  • ndb_replica_blob_write_batch_bytes

    Command-Line Format--ndb-replica-blob-write-batch-bytes=#
    System Variablendb_replica_blob_write_batch_bytes
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value2097152
    Minimum Value0
    Maximum Value2147483648
    Unitbytes

    Control the batch write size used for blob data by the replication applier thread.

    Use this variable rather than the--ndb-blob-write-batch-bytes option to control the blob batch write size on the replica, exclusive of any other sessions. The reason for this is that, whenndb_replica_blob_write_batch_bytes​is not set,​the effective blob batch size (that is, the maximum number of pending bytes to write for blob columns) is determined by the greater of the value of--ndb-blob-write-batch-bytes and 2 MB (the default forndb_replica_blob_write_batch_bytes).

    Settingndb_replica_blob_write_batch_bytes to 0 means thatNDB imposes no limit on the size of blob batch writes on the replica.

  • server_id_bits

    Command-Line Format--server-id-bits=#
    System Variableserver_id_bits
    ScopeGlobal
    DynamicNo
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value32
    Minimum Value7
    Maximum Value32

    This variable indicates the number of least significant bits within the 32-bitserver_id which actually identify the server. Indicating that the server is actually identified by fewer than 32 bits makes it possible for some of the remaining bits to be used for other purposes, such as storing user data generated by applications using the NDB API's Event API within theAnyValue of anOperationOptions structure (NDB Cluster uses theAnyValue to store the server ID).

    When extracting the effective server ID fromserver_id for purposes such as detection of replication loops, the server ignores the remaining bits. Theserver_id_bits variable is used to mask out any irrelevant bits ofserver_id in the I/O and SQL threads when deciding whether an event should be ignored based on the server ID.

    This data can be read from the binary log bymysqlbinlog, provided that it is run with its ownserver_id_bits variable set to 32 (the default).

    If the value ofserver_id greater than or equal to 2 to the power ofserver_id_bits; otherwise,mysqld refuses to start.

    This system variable is supported only by NDB Cluster. It is not supported in the standard MySQL 9.0 Server.

  • slave_allow_batching

    Command-Line Format--slave-allow-batching[={OFF|ON}]
    DeprecatedYes
    System Variableslave_allow_batching
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueON

    Deprecated synonym forreplica_allow_batching.

  • transaction_allow_batching

    System Variabletransaction_allow_batching
    ScopeSession
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueOFF

    When set to1 orON, this variable enables batching of statements within the same transaction. To use this variable,autocommit must first be disabled by setting it to0 orOFF; otherwise, settingtransaction_allow_batching has no effect.

    It is safe to use this variable with transactions that performs writes only, as having it enabled can lead to reads from thebefore image. You should ensure that any pending transactions are committed (using an explicitCOMMIT if desired) before issuing aSELECT.

    Important

    transaction_allow_batching should not be used whenever there is the possibility that the effects of a given statement depend on the outcome of a previous statement within the same transaction.

    This variable is currently supported for NDB Cluster only.

The system variables in the following list all relate to thendbinfo information database.

  • ndbinfo_database

    System Variablendbinfo_database
    ScopeGlobal
    DynamicNo
    SET_VAR Hint AppliesNo
    TypeString
    Default Valuendbinfo

    Shows the name used for theNDB information database; the default isndbinfo. This is a read-only variable whose value is determined at compile time.

  • ndbinfo_max_bytes

    Command-Line Format--ndbinfo-max-bytes=#
    System Variablendbinfo_max_bytes
    ScopeGlobal, Session
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value0
    Minimum Value0
    Maximum Value65535

    Used in testing and debugging only.

  • ndbinfo_max_rows

    Command-Line Format--ndbinfo-max-rows=#
    System Variablendbinfo_max_rows
    ScopeGlobal, Session
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeInteger
    Default Value10
    Minimum Value1
    Maximum Value256

    Used in testing and debugging only.

  • ndbinfo_offline

    System Variablendbinfo_offline
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueOFF

    Place thendbinfo database into offline mode, in which tables and views can be opened even when they do not actually exist, or when they exist but have different definitions inNDB. No rows are returned from such tables (or views).

  • ndbinfo_show_hidden

    Command-Line Format--ndbinfo-show-hidden[={OFF|ON}]
    System Variablendbinfo_show_hidden
    ScopeGlobal, Session
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeBoolean
    Default ValueOFF
    Valid Values

    ON

    OFF

    Whether or not thendbinfo database's underlying internal tables are shown in themysql client. The default isOFF.

    Note

    Whenndbinfo_show_hidden is enabled, the internal tables are shown in thendbinfo database only; they are not visible inTABLES or otherINFORMATION_SCHEMA tables, regardless of the variable's setting.

  • ndbinfo_table_prefix

    System Variablendbinfo_table_prefix
    ScopeGlobal
    DynamicNo
    SET_VAR Hint AppliesNo
    TypeString
    Default Valuendb$

    The prefix used in naming the ndbinfo database's base tables (normally hidden, unless exposed by settingndbinfo_show_hidden). This is a read-only variable whose default value isndb$; the prefix itself is determined at compile time.

  • ndbinfo_version

    System Variablendbinfo_version
    ScopeGlobal
    DynamicNo
    SET_VAR Hint AppliesNo
    TypeString
    Default Value

    Shows the version of thendbinfo engine in use; read-only.

25.4.3.9.3 NDB Cluster Status Variables

This section provides detailed information about MySQL server status variables that relate to NDB Cluster and theNDB storage engine. For status variables not specific to NDB Cluster, and for general information on using status variables, seeSection 7.1.10, “Server Status Variables”.