该工具从 NDB 集群管理节点、config.ini 文件或 my.cnf 文件中提取当前配置信息,用于数据节点、SQL 节点和 API 节点。默认情况下,管理节点是配置数据的来源;要覆盖默认设置,请使用 --config-file 或 --mycnf 选项执行 ndb_config。也可以使用数据节点作为来源,通过指定其节点 ID 使用 --config_from_node= 选项。node_id
ndb_config 还可以提供所有配置参数的脱机转储,包括默认值、最大值和最小值等信息。转储可以以文本或 XML 格式生成;有关详细信息,请参阅本节后面的 --configinfo 和 --xml 选项的讨论。
可以使用 --nodes、--system 或 --connections 选项按节 (DB、SYSTEM 或 CONNECTIONS) 过滤结果。
所有可以与 ndb_config 一起使用的选项都显示在以下表格中。详细描述见表格后。
表 25.28 与程序 ndb_config 一起使用的命令行选项
| Format | Description | Added, Deprecated, or Removed |
|---|---|---|
| 覆盖默认组 suffix 当读取 cluster_config 节在 my.cnf 文件中;用于测试 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
| 读取该二进制配置文件 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
| 设置 config.ini 文件的路径 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
| 从具有该 ID 的节点获取配置数据(必须是数据节点) |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
| 以文本格式转储所有 NDB 配置参数的信息,包括默认值、最大值和最小值。使用 --xml 选项以获取 XML 输出 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
| 仅打印在 cluster 配置文件的 [tcp]、[tcp default]、[sci]、[sci default]、[shm] 或 [shm default] 节中指定的连接信息。不能与 --system 或 --nodes 一起使用 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
| 在放弃之前尝试连接的次数 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
| 在尝试联系管理服务器之间等待的秒数 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
| 与--ndb-connectstring相同 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
| 在读取全局文件后读取给定的文件 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
| 仅从给定的文件中读取默认选项 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
| 也读取带有后缀的组 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
| 仅打印非默认值的配置参数 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
| 字段分隔符 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
|
|
显示帮助文本并退出 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
| 指定主机 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
| 从登录文件中读取给定的路径 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
| 不从登录路径文件中读取登录路径 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
| 从 my.cnf 文件中读取配置数据 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
| 设置连接到 ndb_mgmd 的连接字符串。语法:"[nodeid=id;][host=]hostname[:port]"。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
| 与 --ndb-connectstring 相同 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
| ndb_mgm 客户端 TLS 要求级别 |
ADDED: 8.3.0 |
|
| TLS 密钥和证书的目录列表 |
ADDED: 8.3.0 |
|
| 不从任何选项文件中读取默认选项,除了登录文件 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
| 获取具有此 ID 的节点的配置 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
| 仅打印节点信息([ndbd] 或 [ndbd default] 部分的集群配置文件)。不能与 --system 或 --connections 一起使用 |
(在所有基于 MySQL 8.3 的 NDB 发布版本中支持) |
|
| 一个或多个查询选项(属性) |
(在所有基于 MySQL 8.3 的 NDB 发布版本中支持) |
|
| 将所有参数和值转储到一个逗号分隔的字符串中 |
(在所有基于 MySQL 8.3 的 NDB 发布版本中支持) |
|
| 打印程序参数列表并退出 |
(在所有基于 MySQL 8.3 的 NDB 发布版本中支持) |
|
| 行分隔符 |
(在所有基于 MySQL 8.3 的 NDB 发布版本中支持) |
|
| 仅打印 SYSTEM 部分信息(见 ndb_config --configinfo 输出)。不能与 --nodes 或 --connections 一起使用 |
(在所有基于 MySQL 8.3 的 NDB 发布版本中支持) |
|
| 指定节点类型 |
(在所有基于 MySQL 8.3 的 NDB 发布版本中支持) |
|
|
|
显示帮助文本并退出;同 --help |
(在所有基于 MySQL 8.3 的 NDB 发布版本中支持) |
|
|
显示版本信息并退出 |
(在所有基于 MySQL 8.3 的 NDB 发布版本中支持) |
| 使用 --xml 与 --configinfo 一起使用,以获取所有 NDB 配置参数的 XML 格式转储,包括默认值、最大值和最小值 |
(在所有基于 MySQL 8.3 的 NDB 发布版本中支持) |
-
Command-Line Format --字符集目录=path包含字符集的目录。
-
Command-Line Format --集群配置后缀=nameType 字符串 Default Value [none]覆盖默认组后缀时读取集群配置部分在
my.cnf中;用于测试。 -
--配置信息选项使 ndb_config 转储 NDB 集群配置参数的列表,包括以下信息:-
每个参数的简要描述、效果和使用
-
参数在
config.ini文件中的部分 -
参数的数据类型或单位
-
在适用情况下,参数的默认值、最小值和最大值
-
NDB 集群版本和构建信息
默认情况下,此输出为文本格式。这里显示了部分输出:
$> 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) …使用此选项与
--xml选项结合,以获取 XML 格式的输出。 -
-
--config-binary-file=路径-to-fileCommand-Line Format --config-binary-file=路径/to/fileType 文件名 Default Value 指定管理服务器的缓存二进制配置文件 (
ndb_) 的路径。可以是相对路径或绝对路径。如果管理服务器和 ndb_config 二进制文件位于不同的主机上,必须使用绝对路径。nodeID_config.bin.seqno以下示例演示了如何将
--config-binary-file与其他 ndb_config 选项结合以获取有用的输出:$> 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/8.1,(null) DataDir,/local/data/8.1,. DataMemory,2G,98M FileSystemPath,/local/data/8.1,(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/8.1,(null) DataDir,/local/data/8.1. DataMemory,2G,98M FileSystemPath,/local/data/8.1,(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,0以下是
config.ini文件的相关部分:[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/8.1 [ndbd] NodeId= 6 HostName= 127.0.0.1 DataDir= /local/data/8.1通过比较输出与配置文件,可以看到文件中的所有设置都被管理服务器写入二进制缓存,从而应用于集群。
-
Command-Line Format --config-file=file_nameType 文件名 Default Value 指定集群配置文件 (
config.ini) 的路径。可以是相对路径或绝对路径。如果管理服务器和 ndb_config 二进制文件位于不同的主机上,必须使用绝对路径。 -
Command-Line Format --config-from-node=#Type 数字 Default Value noneMinimum Value 1Maximum Value 48从具有此 ID 的数据节点获取集群配置数据。
如果具有此 ID 的节点不是数据节点,ndb_config 将失败并显示错误。(要从管理节点获取配置数据,请省略此选项。)
-
Command-Line Format --connect-retries=#Type 整数 Default Value 12Minimum Value 0Maximum Value 12在放弃之前尝试连接的次数。
-
Command-Line Format --connect-retry-delay=#Type 整数 Default Value 5Minimum Value 0Maximum Value 5在尝试联系管理服务器之间等待的秒数。
-
Command-Line Format --connect-string=connection_stringType 字符串 Default Value [none]与
--ndb-connectstring相同。 -
Command-Line Format --connections告诉ndb_config 只打印
CONNECTIONS信息,即来自集群配置文件的[tcp]、[tcp default]、[shm]或[shm default]部分的参数信息(参见第 25.4.3.10 节,“NDB 集群 TCP/IP 连接” 和 第 25.4.3.12 节,“NDB 集群共享内存连接”,以获取更多信息)。 -
Command-Line Format --core-file在错误时写入核心文件;用于调试。
-
Command-Line Format --defaults-extra-file=pathType 字符串 Default Value [none]在读取全局文件后读取给定的文件。
-
Command-Line Format --defaults-file=pathType 字符串 Default Value [none]仅从给定的文件中读取默认选项。
-
Command-Line Format --defaults-group-suffix=stringType 字符串 Default Value [none]还读取带有 concat(group, suffix) 的组。
-
Command-Line Format --diff-default仅打印非默认值的配置参数。
-
--fields=,delimiter-fdelimiterCommand-Line Format --fields=stringType 字符串 Default Value 指定一个
delimiter字符串,用于分隔结果中的字段。默认为,(逗号字符)。Note如果
delimiter包含空格或转义字符(例如\nnewline 字符),则必须将其引号括起来。 -
Command-Line Format --help显示帮助文本并退出。
-
Command-Line Format --host=nameType 字符串 Default Value 指定要获取配置信息的节点的主机名。
Note当主机名
localhost通常解析到 IP 地址127.0.0.1,但这并不一定适用于所有操作平台和配置。这意味着,当localhost在config.ini中使用时,可能会导致 ndb_config--host=localhost失败,如果 ndb_config 在不同的主机上运行,其中localhost解析到不同的地址(例如,在某些版本的 SUSE Linux 中,这是127.0.0.2)。一般来说,为了获得最佳结果,您应该使用数字 IP 地址来配置 NDB 集群的所有主机相关值,或者验证所有 NDB 集群主机都以相同的方式处理localhost。 -
Command-Line Format --login-path=pathType 字符串 Default Value [none]从登录文件中读取给定的路径。
-
Command-Line Format --mycnf从
my.cnf文件中读取配置数据。 -
--ndb-connectstring=,connection_string-cconnection_stringCommand-Line Format --ndb-connectstring=connection_stringType 字符串 Default Value [none]指定连接到管理服务器的连接字符串。连接字符串的格式与 第 25.4.3.3 节“NDB 集群连接字符串” 中描述的相同,默认为
localhost:1186。 -
Command-Line Format --ndb-mgm-tls=levelType 枚举 Default Value relaxedValid Values relaxedstrict设置连接到管理服务器所需的 TLS 支持级别;可以是
relaxed或strict。relaxed(默认)表示尝试 TLS 连接,但不需要成功:strict表示需要 TLS 连接。 -
Command-Line Format --ndb-mgmd-host=connection_stringType 字符串 Default Value [none]与
--ndb-connectstring相同。 -
Command-Line Format --ndb-nodeid=#Type 整数 Default Value [none]设置当前节点的节点 ID,覆盖
--ndb-connectstring设置的 ID。 -
--ndb-optimized-node-selectionCommand-Line Format --ndb-optimized-node-selection启用事务节点选择的优化。默认启用;使用
--skip-ndb-optimized-node-selection禁用。 -
Command-Line Format --ndb-tls-search-path=listType 路径名 Default Value (Unix) $HOME/ndb-tlsDefault Value (Windows) $HOMEDIR/ndb-tls指定要搜索的CA文件目录列表。在 Unix 平台上,目录名以冒号 (
:) 分隔;在 Windows 系统上,使用分号 (;) 作为分隔符。目录引用可以是相对的或绝对的,可以包含一个或多个环境变量,每个变量以美元符号 ($) 开头,并在使用前展开。搜索从左侧命名的目录开始,自左向右进行,直到找到文件。空字符串表示空搜索路径,导致所有搜索失败。点 (
.) 表示搜索路径仅限于当前工作目录。如果未提供搜索路径,则使用编译时的默认值。该值取决于平台:在 Windows 上为
\ndb-tls;在其他平台(包括 Linux)上为$HOME/ndb-tls。这可以通过使用-DWITH_NDB_TLS_SEARCH_PATH编译 NDB Cluster 来覆盖。 -
Command-Line Format --no-defaults不从任何选项文件中读取默认选项,除了登录文件。
-
Command-Line Format --no-login-paths跳过从登录路径文件中读取选项。
-
Command-Line Format --ndb-nodeid=#Type 整数 Default Value [none]指定要获取配置信息的节点 ID。
-
Command-Line Format --nodes告诉 ndb_config 只打印在集群配置文件的
[ndbd]或[ndbd default]部分中定义的参数信息(见 第 25.4.3.6 节,“Defining NDB Cluster Data Nodes”)。该选项与
--connections和--system互斥;只能使用这三个选项之一。 -
Command-Line Format --print-defaults打印程序参数列表并退出。
-
--query=,query-options-qquery-optionsCommand-Line Format --query=stringType 字符串 Default Value 这是一个逗号分隔的查询选项列表,即要返回的节点属性列表。这些包括
nodeid(节点 ID)、type(节点类型,即ndbd、mysqld或ndb_mgmd)和要获取的配置参数。例如,
--query=nodeid,type,datamemory,datadir返回每个节点的节点 ID、节点类型、DataMemory和DataDir。Note如果某个参数不适用于某种类型的节点,则返回空字符串。
-
--query-all,-aCommand-Line Format --query-allType 字符串 Default Value 返回一个逗号分隔的所有查询选项(节点属性)列表,注意该列表是一个单字符串。
-
--行=,separator-rseparatorCommand-Line Format --行=stringType 字符串 Default Value 指定用于分隔结果中的行的
separator字符串。默认是一个空格字符。Note如果
separator包含空格或转义字符(例如\nnewline 字符),那么它必须被引号括起来。 -
Command-Line Format --系统告诉 ndb_config 只打印
SYSTEM信息。这些信息是系统变量,不能在运行时更改;因此,在集群配置文件中没有相应的部分。它们可以在 ndb_config--configinfo的输出中看到(以****** SYSTEM ******开头)。这个选项与
--nodes和--connections是互斥的;只能使用这三个选项中的一个。 -
Command-Line Format --类型=nameType 枚举 Default Value [none]Valid Values ndbdmysqldndb_mgmd过滤结果,以便只返回指定
node_type(ndbd,mysqld, 或ndb_mgmd) 的配置值。 -
--usage,--help, 或-?Command-Line Format --help使 ndb_config 打印可用选项的列表,然后退出。
-
--版本,-VCommand-Line Format --版本使 ndb_config 打印版本信息字符串,然后退出。
-
--configinfo--xmlCommand-Line Format --configinfo --xml使 ndb_config
--configinfo以 XML 格式提供输出,添加这个选项。以下是一个示例输出:$> ndb_config --configinfo --xml <configvariables protocolversion="1" ndbversionstring="5.7.44-ndb-7.5.32" 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>Note通常,ndb_config
--configinfo--xml生成的 XML 输出使用每个元素一行;我们在前一个示例中添加了额外的空格,以便阅读性更好。这对使用该输出的应用程序不应该产生任何影响,因为大多数 XML 处理器要么忽略非essential 空格,要么可以被指示忽略这些空格。XML 输出还指示更改给定参数时需要使用
--initial选项重新启动数据节点。这在相应的<param>元素中显示为initial="true"属性。此外,重新启动类型(system或node)也显示;如果给定参数需要系统重新启动,则在相应的<param>元素中显示restart="system"属性。例如,改变Diskless参数的值需要系统初始重新启动,如下所示(restart 和 initial 属性突出显示以提高可读性):<param name="Diskless" comment="Run wo/ disk" type="bool" default="false" restart="system" initial="true"/>目前,对于不需要初始重新启动的参数,XML 输出中不包括
initial属性;换言之,initial="false"是默认值,如果属性不存在,则假定值为false。类似地,默认重新启动类型是node(即在线或“滚动”重新启动集群),但只有在重新启动类型为system时,才包括restart属性(即所有集群节点必须同时关闭,然后重新启动)。已弃用的参数在 XML 输出中由
deprecated属性指示,如下所示:<param name="NoOfDiskPagesToDiskAfterRestartACC" comment="DiskCheckpointSpeed" type="unsigned" default="20" min="1" max="4294967039" deprecated="true"/>在这种情况下,
comment引用一个或多个超越弃用参数的参数。类似于initial,deprecated属性仅在参数弃用时显示,带有deprecated="true",并且对于未弃用的参数不出现。(Bug #21127135)必需的参数用
mandatory="true"指示,如下所示:<param name="NodeId" comment="Number identifying application node (mysqld(API))" type="unsigned" mandatory="true" min="1" max="255"/>与
initial或deprecated属性类似,mandatory属性仅在给定参数实际需要时包含。Important--xml选项只能与--configinfo选项一起使用。使用--xml而不使用--configinfo将失败并显示错误。与用于获取当前配置数据的选项不同,
--configinfo和--xml使用在编译 ndb_config 时从 NDB 集群源获取的信息。因此,不需要连接到正在运行的 NDB 集群或访问config.ini或my.cnf文件。
将其他 ndb_config 选项(例如 --query 或 --type)与 --configinfo 结合使用(带或不带 --xml 选项)不受支持。目前,如果您尝试这样做,通常结果是所有其他选项除了 --configinfo 或 --xml 都将被忽略。但是,这种行为不保证并且可能随时更改。此外,由于 ndb_config 在使用 --configinfo 选项时不访问 NDB 集群也不读取任何文件,因此尝试指定其他选项,如 --ndb-connectstring 或 --config-file 与 --configinfo 一起使用是没有意义的。
示例
-
要获取集群中每个节点的节点 ID 和类型:
$> ./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:mysqld在这个示例中,我们使用了
--fields选项将每个节点的 ID 和类型分隔以冒号字符(:),并使用--rows选项将每个节点的值放在输出的新行上。 -
要生成可以由数据、SQL 和 API 节点用于连接到管理服务器的连接字符串:
$> ./ndb_config --config-file=usr/local/mysql/cluster-data/config.ini \ --query=hostname,portnumber --fields=: --rows=, --type=ndb_mgmd 198.51.100.179:1186 -
此次调用 ndb_config 只检查数据节点(使用
--type选项),并显示每个节点的 ID 和主机名的值,以及其DataMemory和DataDir参数的值:$> ./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-data在这个示例中,我们使用了短选项
-f和-r分别设置字段分隔符和行分隔符,以及短选项-q传递要获取的参数列表。 -
要排除除特定主机以外的所有结果,请使用
--host选项:$> ./ndb_config --host=198.51.100.176 -f : -r '\n' -q id,type 3:ndbd 5:ndb_mgmd在这个示例中,我们还使用了短形式
-q确定要查询的属性。类似地,您可以使用
--nodeid选项限制结果到具有特定 ID 的节点。