This tool extracts current configuration information for data
nodes, SQL nodes, and API nodes from one of a number of sources:
an NDB Cluster management node, or its
config.ini or my.cnf
file. By default, the management node is the source for the
configuration data; to override the default, execute ndb_config
with the --config-file or
--mycnf option. It is also
possible to use a data node as the source by specifying its node
ID with
--config_from_node=.
node_id
ndb_config can also provide an offline dump
of all configuration parameters which can be used, along with
their default, maximum, and minimum values and other
information. The dump can be produced in either text or XML
format; for more information, see the discussion of the
--configinfo and
--xml options later in this
section).
You can filter the results by section (DB,
SYSTEM, or CONNECTIONS)
using one of the options
--nodes,
--system, or
--connections.
All options that can be used with ndb_config are shown in the following table. Additional descriptions follow the table.
-
Command-Line Format --character-sets-dir=pathDirectory containing character sets.
-
Command-Line Format --cluster-config-suffix=nameType String Default Value [none]Override defaults group suffix when reading cluster configuration sections in
my.cnf; used in testing. The
--configinfooption causes ndb_config to dump a list of each NDB Cluster configuration parameter supported by the NDB Cluster distribution of which ndb_config is a part, including the following information:A brief description of each parameter's purpose, effects, and usage
The section of the
config.inifile where the parameter may be usedThe parameter's data type or unit of measurement
Where applicable, the parameter's default, minimum, and maximum values
NDB Cluster release version and build information
By default, this output is in text format. Part of this output is shown here:
$> ndb_config --configinfo ****** SYSTEM ****** Name (String) Name of system (NDB Cluster) MANDATORY PrimaryMGMNode (Non-negative Integer) Node id of Primary ndb_mgmd(MGM) node Default: 0 (Min: 0, Max: 4294967039) ConfigGenerationNumber (Non-negative Integer) Configuration generation number Default: 0 (Min: 0, Max: 4294967039) ****** DB ****** MaxNoOfSubscriptions (Non-negative Integer) Max no of subscriptions (default 0 == MaxNoOfTables) Default: 0 (Min: 0, Max: 4294967039) MaxNoOfSubscribers (Non-negative Integer) Max no of subscribers (default 0 == 2 * MaxNoOfTables) Default: 0 (Min: 0, Max: 4294967039) …Use this option together with the
--xmloption to obtain output in XML format.--config-binary-file=path-to-fileCommand-Line Format --config-binary-file=path/to/fileType File name Default Value Gives the path to the management server's cached binary configuration file (
ndb_). This may be a relative or absolute path. If the management server and the ndb_config binary used reside on different hosts, you must use an absolute path.nodeID_config.bin.seqnoThis example demonstrates combining
--config-binary-filewith other ndb_config options to obtain useful output:$> ndb_config --config-binary-file=../mysql-cluster/ndb_50_config.bin.1 --diff-default --type=ndbd config of [DB] node id 5 that is different from default CONFIG_PARAMETER,ACTUAL_VALUE,DEFAULT_VALUE NodeId,5,(mandatory) BackupDataDir,/local/data/9.3,(null) DataDir,/local/data/9.3,. DataMemory,2G,98M FileSystemPath,/local/data/9.3,(null) HostName,127.0.0.1,localhost Nodegroup,0,(null) ThreadConfig,,(null) config of [DB] node id 6 that is different from default CONFIG_PARAMETER,ACTUAL_VALUE,DEFAULT_VALUE NodeId,6,(mandatory) BackupDataDir,/local/data/9.3,(null) DataDir,/local/data/9.3. DataMemory,2G,98M FileSystemPath,/local/data/9.3,(null) HostName,127.0.0.1,localhost Nodegroup,0,(null) ThreadConfig,,(null) $> ndb_config --config-binary-file=../mysql-cluster/ndb_50_config.bin.1 --diff-default --system config of [SYSTEM] system CONFIG_PARAMETER,ACTUAL_VALUE,DEFAULT_VALUE Name,MC_20220906060042,(mandatory) ConfigGenerationNumber,1,0 PrimaryMGMNode,50,0The relevant portions of the
config.inifile are shown here:[ndbd default] DataMemory= 2G NoOfReplicas= 2 [ndb_mgmd] NodeId= 50 HostName= 127.0.0.1 [ndbd] NodeId= 5 HostName= 127.0.0.1 DataDir= /local/data/9.3 [ndbd] NodeId= 6 HostName= 127.0.0.1 DataDir= /local/data/9.3By comparing the output with the configuration file, you can see that all of the settings in the file have been written by the management server to the binary cache, and thus, applied to the cluster.
-
Command-Line Format --config-file=file_nameType File name Default Value Gives the path to the cluster configuration file (
config.ini). This may be a relative or absolute path. If the management server and the ndb_config binary used reside on different hosts, you must use an absolute path. -
Command-Line Format --config-from-node=#Type Numeric Default Value noneMinimum Value 1Maximum Value 48Obtain the cluster's configuration data from the data node that has this ID.
If the node having this ID is not a data node, ndb_config fails with an error. (To obtain configuration data from the management node instead, simply omit this option.)
-
Command-Line Format --connect-retries=#Type Integer Default Value 12Minimum Value 0Maximum Value 12Number of times to retry connection before giving up.
-
Command-Line Format --connect-retry-delay=#Type Integer Default Value 5Minimum Value 0Maximum Value 5Number of seconds to wait between attempts to contact management server.
-
Command-Line Format --connect-string=connection_stringType String Default Value [none]Same as
--ndb-connectstring. -
Command-Line Format --connectionsTells ndb_config to print
CONNECTIONSinformation only—that is, information about parameters found in the[tcp],[tcp default],[shm], or[shm default]sections of the cluster configuration file (see Section 25.4.3.10, “NDB Cluster TCP/IP Connections”, and Section 25.4.3.12, “NDB Cluster Shared-Memory Connections”, for more information).This option is mutually exclusive with
--nodesand--system; only one of these 3 options can be used. -
Command-Line Format --core-fileWrite core file on error; used in debugging.
-
Command-Line Format --defaults-extra-file=pathType String Default Value [none]Read given file after global files are read.
-
Command-Line Format --defaults-file=pathType String Default Value [none]Read default options from given file only.
-
Command-Line Format --defaults-group-suffix=stringType String Default Value [none]Also read groups with concat(group, suffix).
-
Command-Line Format --diff-defaultPrint only configuration parameters that have non-default values.
--fields=,delimiter-fdelimiterCommand-Line Format --fields=stringType String Default Value Specifies a
delimiterstring used to separate the fields in the result. The default is,(the comma character).NoteIf the
delimitercontains spaces or escapes (such as\nfor the linefeed character), then it must be quoted.-
Command-Line Format --helpDisplay help text and exit.
-
Command-Line Format --host=nameType String Default Value Specifies the host name of the node for which configuration information is to be obtained.
NoteWhile the hostname
localhostusually resolves to the IP address127.0.0.1, this may not necessarily be true for all operating platforms and configurations. This means that it is possible, whenlocalhostis used inconfig.ini, for ndb_config--host=localhostto fail if ndb_config is run on a different host wherelocalhostresolves to a different address (for example, on some versions of SUSE Linux, this is127.0.0.2). In general, for best results, you should use numeric IP addresses for all NDB Cluster configuration values relating to hosts, or verify that all NDB Cluster hosts handlelocalhostin the same fashion. -
Command-Line Format --login-path=pathType String Default Value [none]Read given path from login file.
-
Command-Line Format --mycnfRead configuration data from the
my.cnffile. --ndb-connectstring=,connection_string-cconnection_stringCommand-Line Format --ndb-connectstring=connection_stringType String Default Value [none]Specifies the connection string to use in connecting to the management server. The format for the connection string is the same as described in Section 25.4.3.3, “NDB Cluster Connection Strings”, and defaults to
localhost:1186.-
Command-Line Format --ndb-mgm-tls=levelType Enumeration Default Value relaxedValid Values relaxedstrictSets the level of TLS support required to connect to the management server; one of
relaxedorstrict.relaxed(the default) means that a TLS connection is attempted, but success is not required;strictmeans that TLS is required to connect. -
Command-Line Format --ndb-mgmd-host=connection_stringType String Default Value [none]Same as
--ndb-connectstring. -
Command-Line Format --ndb-nodeid=#Type Integer Default Value [none]Set node ID for this node, overriding any ID set by
--ndb-connectstring. --ndb-optimized-node-selectionCommand-Line Format --ndb-optimized-node-selectionEnable optimizations for selection of nodes for transactions. Enabled by default; use
--skip-ndb-optimized-node-selectionto disable.-
Command-Line Format --ndb-tls-search-path=listType Path name Default Value (Unix) $HOME/ndb-tlsDefault Value (Windows) $HOMEDIR/ndb-tlsSpecify a list of directories to search for a CA file. On Unix platforms, the directory names are separated by colons (
:); on Windows systems, the semicolon character (;) is used as the separator. A directory reference may be relative or absolute; it may contain one or more environment variables, each denoted by a prefixed dollar sign ($), and expanded prior to use.Searching begins with the leftmost named directory and proceeds from left to right until a file is found. An empty string denotes an empty search path, which causes all searches to fail. A string consisting of a single dot (
.) indicates that the search path limited to the current working directory.If no search path is supplied, the compiled-in default value is used. This value depends on the platform used: On Windows, this is
\ndb-tls; on other platforms (including Linux), it is$HOME/ndb-tls. This can be overridden by compiling NDB Cluster using-DWITH_NDB_TLS_SEARCH_PATH. -
Command-Line Format --no-defaultsDo not read default options from any option file other than login file.
-
Command-Line Format --no-login-pathsSkips reading options from the login path file.
-
Command-Line Format --ndb-nodeid=#Type Integer Default Value [none]Specify the node ID of the node for which configuration information is to be obtained.
-
Command-Line Format --nodesTells ndb_config to print information relating only to parameters defined in an
[ndbd]or[ndbd default]section of the cluster configuration file (see Section 25.4.3.6, “Defining NDB Cluster Data Nodes”).This option is mutually exclusive with
--connectionsand--system; only one of these 3 options can be used. -
Command-Line Format --print-defaultsPrint program argument list and exit.
--query=,query-options-qquery-optionsCommand-Line Format --query=stringType String Default Value This is a comma-delimited list of query options—that is, a list of one or more node attributes to be returned. These include
nodeid(node ID), type (node type—that is,ndbd,mysqld, orndb_mgmd), and any configuration parameters whose values are to be obtained.For example,
--query=nodeid,type,datamemory,datadirreturns the node ID, node type,DataMemory, andDataDirfor each node.NoteIf a given parameter is not applicable to a certain type of node, than an empty string is returned for the corresponding value. See the examples later in this section for more information.
--query-all,-aCommand-Line Format --query-allType String Default Value Returns a comma-delimited list of all query options (node attributes; note that this list is a single string.
--rows=,separator-rseparatorCommand-Line Format --rows=stringType String Default Value Specifies a
separatorstring used to separate the rows in the result. The default is a space character.NoteIf the
separatorcontains spaces or escapes (such as\nfor the linefeed character), then it must be quoted.-
Command-Line Format --systemTells ndb_config to print
SYSTEMinformation only. This consists of system variables that cannot be changed at run time; thus, there is no corresponding section of the cluster configuration file for them. They can be seen (prefixed with****** SYSTEM ******) in the output of ndb_config--configinfo.This option is mutually exclusive with
--nodesand--connections; only one of these 3 options can be used. -
Command-Line Format --type=nameType Enumeration Default Value [none]Valid Values ndbdmysqldndb_mgmdFilters results so that only configuration values applying to nodes of the specified
node_type(ndbd,mysqld, orndb_mgmd) are returned. --usage,--help, or-?Command-Line Format --helpCauses ndb_config to print a list of available options, and then exit.
--version,-VCommand-Line Format --versionCauses ndb_config to print a version information string, and then exit.
--configinfo--xmlCommand-Line Format --configinfo --xmlCause ndb_config
--configinfoto provide output as XML by adding this option. A portion of such output is shown in this example:$> ndb_config --configinfo --xml <configvariables protocolversion="1" ndbversionstring="5.7.44-ndb-7.5.36" ndbversion="460032" ndbversionmajor="7" ndbversionminor="5" ndbversionbuild="0"> <section name="SYSTEM"> <param name="Name" comment="Name of system (NDB Cluster)" type="string" mandatory="true"/> <param name="PrimaryMGMNode" comment="Node id of Primary ndb_mgmd(MGM) node" type="unsigned" default="0" min="0" max="4294967039"/> <param name="ConfigGenerationNumber" comment="Configuration generation number" type="unsigned" default="0" min="0" max="4294967039"/> </section> <section name="MYSQLD" primarykeys="NodeId"> <param name="wan" comment="Use WAN TCP setting as default" type="bool" default="false"/> <param name="HostName" comment="Name of computer for this node" type="string" default=""/> <param name="Id" comment="NodeId" type="unsigned" mandatory="true" min="1" max="255" deprecated="true"/> <param name="NodeId" comment="Number identifying application node (mysqld(API))" type="unsigned" mandatory="true" min="1" max="255"/> <param name="ExecuteOnComputer" comment="HostName" type="string" deprecated="true"/> … </section> … </configvariables>NoteNormally, the XML output produced by ndb_config
--configinfo--xmlis formatted using one line per element; we have added extra whitespace in the previous example, as well as the next one, for reasons of legibility. This should not make any difference to applications using this output, since most XML processors either ignore nonessential whitespace as a matter of course, or can be instructed to do so.The XML output also indicates when changing a given parameter requires that data nodes be restarted using the
--initialoption. This is shown by the presence of aninitial="true"attribute in the corresponding<param>element. In addition, the restart type (systemornode) is also shown; if a given parameter requires a system restart, this is indicated by the presence of arestart="system"attribute in the corresponding<param>element. For example, changing the value set for theDisklessparameter requires a system initial restart, as shown here (with therestartandinitialattributes highlighted for visibility):<param name="Diskless" comment="Run wo/ disk" type="bool" default="false" restart="system" initial="true"/>Currently, no
initialattribute is included in the XML output for<param>elements corresponding to parameters which do not require initial restarts; in other words,initial="false"is the default, and the valuefalseshould be assumed if the attribute is not present. Similarly, the default restart type isnode(that is, an online or “rolling” restart of the cluster), but therestartattribute is included only if the restart type issystem(meaning that all cluster nodes must be shut down at the same time, then restarted).Deprecated parameters are indicated in the XML output by the
deprecatedattribute, as shown here:<param name="NoOfDiskPagesToDiskAfterRestartACC" comment="DiskCheckpointSpeed" type="unsigned" default="20" min="1" max="4294967039" deprecated="true"/>In such cases, the
commentrefers to one or more parameters that supersede the deprecated parameter. Similarly toinitial, thedeprecatedattribute is indicated only when the parameter is deprecated, withdeprecated="true", and does not appear at all for parameters which are not deprecated. (Bug #21127135)Parameters that are required are indicated with
mandatory="true", as shown here:<param name="NodeId" comment="Number identifying application node (mysqld(API))" type="unsigned" mandatory="true" min="1" max="255"/>In much the same way that the
initialordeprecatedattribute is displayed only for a parameter that requires an initial restart or that is deprecated, themandatoryattribute is included only if the given parameter is actually required.ImportantThe
--xmloption can be used only with the--configinfooption. Using--xmlwithout--configinfofails with an error.Unlike the options used with this program to obtain current configuration data,
--configinfoand--xmluse information obtained from the NDB Cluster sources when ndb_config was compiled. For this reason, no connection to a running NDB Cluster or access to aconfig.iniormy.cnffile is required for these two options.
Combining other ndb_config options (such as
--query or
--type) with
--configinfo (with or without the
--xml option is not supported. Currently, if
you attempt to do so, the usual result is that all other options
besides --configinfo or --xml
are simply ignored. However, this behavior is not
guaranteed and is subject to change at any time. In
addition, since ndb_config, when used with
the --configinfo option, does not access the
NDB Cluster or read any files, trying to specify additional
options such as --ndb-connectstring or
--config-file with
--configinfo serves no purpose.
Examples
To obtain the node ID and type of each node in the cluster:
$> ./ndb_config --query=nodeid,type --fields=':' --rows='\n' 1:ndbd 2:ndbd 3:ndbd 4:ndbd 5:ndb_mgmd 6:mysqld 7:mysqld 8:mysqld 9:mysqldIn this example, we used the
--fieldsoptions to separate the ID and type of each node with a colon character (:), and the--rowsoptions to place the values for each node on a new line in the output.To produce a connection string that can be used by data, SQL, and API nodes to connect to the management server:
$> ./ndb_config --config-file=usr/local/mysql/cluster-data/config.ini \ --query=hostname,portnumber --fields=: --rows=, --type=ndb_mgmd 198.51.100.179:1186This invocation of ndb_config checks only data nodes (using the
--typeoption), and shows the values for each node's ID and host name, as well as the values set for itsDataMemoryandDataDirparameters:$> ./ndb_config --type=ndbd --query=nodeid,host,datamemory,datadir -f ' : ' -r '\n' 1 : 198.51.100.193 : 83886080 : /usr/local/mysql/cluster-data 2 : 198.51.100.112 : 83886080 : /usr/local/mysql/cluster-data 3 : 198.51.100.176 : 83886080 : /usr/local/mysql/cluster-data 4 : 198.51.100.119 : 83886080 : /usr/local/mysql/cluster-dataIn this example, we used the short options
-fand-rfor setting the field delimiter and row separator, respectively, as well as the short option-qto pass a list of parameters to be obtained.To exclude results from any host except one in particular, use the
--hostoption:$> ./ndb_config --host=198.51.100.176 -f : -r '\n' -q id,type 3:ndbd 5:ndb_mgmdIn this example, we also used the short form
-qto determine the attributes to be queried.Similarly, you can limit results to a node with a specific ID using the
--nodeidoption.