此工具从以下几种来源之一提取数据节点、SQL 节点和 API 节点的当前配置信息:NDB Cluster 管理节点,或其 config.ini
或 my.cnf
文件。默认情况下,管理节点是配置数据的来源;要覆盖默认值,请使用 --config-file
或 --mycnf
选项执行 ndb_config。还可以通过使用 --config_from_node=
指定其节点 ID 来使用数据节点作为来源。node_id
ndb_config 还可以提供所有配置参数的离线转储,这些参数及其默认值、最大值、最小值和其他信息可以一起使用。转储可以以文本或 XML 格式生成;有关更多信息,请参阅本节后面有关 --configinfo
和 --xml
选项的讨论。
您可以使用 --nodes
、--system
或 --connections
选项之一,按节(DB
、SYSTEM
或 CONNECTIONS
)过滤结果。
所有可与 ndb_config 一起使用的选项都列在下面的表格中。表格后面提供了其他描述。
-
命令行格式 --character-sets-dir=path
包含字符集的目录。
-
命令行格式 --cluster-config-suffix=name
类型 字符串 默认值 [无]
在读取
my.cnf
中的集群配置节时覆盖默认组后缀;用于测试。 --configinfo
选项会导致 ndb_config 转储 NDB Cluster 分发版(其中 ndb_config 是其中一部分)支持的每个 NDB Cluster 配置参数的列表,包括以下信息简要描述每个参数的用途、效果和用法
config.ini
文件中可能使用参数的节参数的数据类型或度量单位
在适用的情况下,参数的默认值、最小值和最大值
NDB Cluster 版本和构建信息
默认情况下,此输出为文本格式。部分输出如下所示
$> 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=
path-to-file
命令行格式 --config-binary-file=path/to/file
类型 文件名 默认值 提供管理服务器的缓存二进制配置文件 (
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/9.0,(null) DataDir,/local/data/9.0,. DataMemory,2G,98M FileSystemPath,/local/data/9.0,(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.0,(null) DataDir,/local/data/9.0. DataMemory,2G,98M FileSystemPath,/local/data/9.0,(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/9.0 [ndbd] NodeId= 6 HostName= 127.0.0.1 DataDir= /local/data/9.0
通过将输出与配置文件进行比较,您可以看到配置文件中的所有设置都已由管理服务器写入二进制缓存,因此已应用于集群。
-
命令行格式 --config-file=file_name
类型 文件名 默认值 提供集群配置文件 (
config.ini
) 的路径。这可以是相对路径或绝对路径。如果管理服务器和使用的 ndb_config 二进制文件位于不同的主机上,则必须使用绝对路径。 -
命令行格式 --config-from-node=#
类型 数字 默认值 无
最小值 1
最大值 48
从具有此 ID 的数据节点获取集群的配置数据。
如果具有此 ID 的节点不是数据节点,则 ndb_config 会失败并出现错误。(要改为从管理节点获取配置数据,只需省略此选项。)
-
命令行格式 --connect-retries=#
类型 整数 默认值 12
最小值 0
最大值 12
放弃之前重试连接的次数。
-
命令行格式 --connect-retry-delay=#
类型 整数 默认值 5
最小值 0
最大值 5
两次尝试联系管理服务器之间等待的秒数。
-
命令行格式 --connect-string=connection_string
类型 字符串 默认值 [无]
与
--ndb-connectstring
相同。 -
命令行格式 --connections
告诉 ndb_config 只打印
CONNECTIONS
信息,即有关在集群配置文件的[tcp]
、[tcp default]
、[shm]
或[shm default]
节中找到的参数的信息(有关更多信息,请参见 第 25.4.3.10 节,“NDB Cluster TCP/IP 连接” 和 第 25.4.3.12 节,“NDB Cluster 共享内存连接”)。 -
命令行格式 --core-file
在错误时写入核心文件;用于调试。
-
命令行格式 --defaults-extra-file=path
类型 字符串 默认值 [无]
在读取全局文件后读取给定文件。
-
命令行格式 --defaults-file=path
类型 字符串 默认值 [无]
仅从给定文件读取默认选项。
-
命令行格式 --defaults-group-suffix=string
类型 字符串 默认值 [无]
还读取具有 concat(group, suffix) 的组。
-
命令行格式 --diff-default
仅打印具有非默认值的配置参数。
--fields=
,delimiter
-f
delimiter
命令行格式 --fields=string
类型 字符串 默认值 指定用于分隔结果中字段的
delimiter
字符串。默认值为,
(逗号字符)。注意如果
delimiter
包含空格或转义字符(例如\n
代表换行符),则必须加引号。-
命令行格式 --help
显示帮助文本并退出。
-
命令行格式 --host=name
类型 字符串 默认值 指定要获取配置信息的节点的主机名。
注意虽然主机名
localhost
通常解析为 IP 地址127.0.0.1
,但这并不一定适用于所有操作系统平台和配置。这意味着,当localhost
用于config.ini
时,如果 ndb_config--host=localhost
在localhost
解析为不同地址(例如,在某些版本的 SUSE Linux 上,此地址为127.0.0.2
)的不同主机上运行,则可能会失败。通常,为了获得最佳效果,您应该对与主机相关的所有 NDB Cluster 配置值使用数字 IP 地址,或验证所有 NDB Cluster 主机以相同的方式处理localhost
。 -
命令行格式 --login-path=path
类型 字符串 默认值 [无]
从登录文件读取给定路径。
-
命令行格式 --mycnf
从
my.cnf
文件读取配置数据。 --ndb-connectstring=
,connection_string
-c
connection_string
命令行格式 --ndb-connectstring=connection_string
类型 字符串 默认值 [无]
指定用于连接到管理服务器的连接字符串。连接字符串的格式与第 25.4.3.3 节,“NDB 集群连接字符串”中描述的相同,默认值为
localhost:1186
。-
命令行格式 --ndb-mgm-tls=level
类型 枚举 默认值 relaxed
有效值 relaxed
strict
设置连接到管理服务器所需的 TLS 支持级别;
relaxed
或strict
之一。relaxed
(默认)表示尝试建立 TLS 连接,但不需要成功;strict
表示连接需要 TLS。 -
命令行格式 --ndb-mgmd-host=connection_string
类型 字符串 默认值 [无]
与
--ndb-connectstring
相同。 -
命令行格式 --ndb-nodeid=#
类型 整数 默认值 [无]
设置此节点的节点 ID,覆盖由
--ndb-connectstring
设置的任何 ID。 --ndb-optimized-node-selection
命令行格式 --ndb-optimized-node-selection
启用针对事务节点选择的优化。默认情况下启用;使用
--skip-ndb-optimized-node-selection
禁用。-
命令行格式 --ndb-tls-search-path=list
类型 路径名称 默认值(Unix) $HOME/ndb-tls
默认值(Windows) $HOMEDIR/ndb-tls
指定要搜索 CA 文件的目录列表。在 Unix 平台上,目录名称以冒号 (
:
) 分隔;在 Windows 系统上,分号 (;
) 用作分隔符。目录引用可以是相对的或绝对的;它可以包含一个或多个环境变量,每个变量都以美元符号 ($
) 为前缀,并在使用前扩展。搜索从最左边的命名目录开始,从左到右进行,直到找到一个文件。空字符串表示空搜索路径,导致所有搜索失败。仅包含一个点 (
.
) 的字符串表示搜索路径仅限于当前工作目录。如果没有提供搜索路径,则使用编译后的默认值。此值取决于使用的平台:在 Windows 上,这是
\ndb-tls
;在其他平台(包括 Linux)上,它是$HOME/ndb-tls
。这可以通过使用-DWITH_NDB_TLS_SEARCH_PATH
编译 NDB 集群来覆盖。 -
命令行格式 --no-defaults
不要从除登录文件以外的任何选项文件中读取默认选项。
-
命令行格式 --no-login-paths
跳过从登录路径文件中读取选项。
-
命令行格式 --ndb-nodeid=#
类型 整数 默认值 [无]
指定要获取配置信息的节点的节点 ID。
-
命令行格式 --nodes
告诉ndb_config 仅打印与集群配置文件 (第 25.4.3.6 节,“定义 NDB 集群数据节点”) 的
[ndbd]
或[ndbd default]
部分中定义的参数相关的 信息。此选项与
--connections
和--system
互斥;这 3 个选项中只能使用一个。 -
命令行格式 --print-defaults
打印程序参数列表并退出。
--query=
,query-options
-q
query-options
命令行格式 --query=string
类型 字符串 默认值 这是一个以逗号分隔的查询选项列表,即一个或多个要返回的节点属性列表。这些包括
nodeid
(节点 ID)、type(节点类型,即ndbd
、mysqld
或ndb_mgmd
)以及任何要获取其值的配置参数。例如,
--query=nodeid,type,datamemory,datadir
返回每个节点的节点 ID、节点类型、DataMemory
和DataDir
。注意如果给定参数不适用于特定类型的节点,则返回相应的空字符串作为对应值。有关更多信息,请参见本节后面的示例。
--query-all
,-a
命令行格式 --query-all
类型 字符串 默认值 返回所有查询选项(节点属性)的逗号分隔列表;请注意,此列表是一个字符串。
--rows=
,separator
-r
separator
命令行格式 --rows=string
类型 字符串 默认值 指定用于分隔结果中行的
separator
字符串。默认值为空格字符。注意如果
separator
包含空格或转义符(例如\n
用于换行符),则必须用引号括起来。-
命令行格式 --system
告诉ndb_config 仅打印
SYSTEM
信息。这包括运行时无法更改的系统变量;因此,没有相应的集群配置文件部分用于它们。它们可以在ndb_config--configinfo
的输出中看到(以****** SYSTEM ******
为前缀)。此选项与
--nodes
和--connections
互斥;这 3 个选项中只能使用一个。 -
命令行格式 --type=name
类型 枚举 默认值 [无]
有效值 ndbd
mysqld
ndb_mgmd
筛选结果,以便仅返回适用于指定
node_type
(ndbd
、mysqld
或ndb_mgmd
)节点的配置值。 --usage
,--help
, 或-?
命令行格式 --help
导致ndb_config 打印可用选项列表,然后退出。
--version
,-V
命令行格式 --version
导致ndb_config 打印版本信息字符串,然后退出。
--configinfo
--xml
命令行格式 --configinfo --xml
导致ndb_config
--configinfo
通过添加此选项来提供 XML 输出。此示例中显示了此类输出的一部分$> ndb_config --configinfo --xml <configvariables protocolversion="1" ndbversionstring="5.7.44-ndb-7.5.35" 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>
注意通常,由ndb_config
--configinfo
--xml
生成的 XML 输出是使用每元素一行进行格式化的;我们已在之前的示例和下一个示例中添加了额外的空格,以提高可读性。对于使用此输出的应用程序来说,这应该没有任何影响,因为大多数 XML 处理器会自动忽略不必要的空格,或者可以被指示这样做。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"/>
目前,对于与不需要初始重新启动的参数相对应的
<param>
元素,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"
),对于没有被弃用的参数,则完全不会显示。必需的参数用
mandatory="true"
表示,如这里所示<param name="NodeId" comment="Number identifying application node (mysqld(API))" type="unsigned" mandatory="true" min="1" max="255"/>
与仅当参数需要初始重新启动或被弃用时才会显示
initial
或deprecated
属性的方式非常相似,仅当给定参数实际需要时才会包含mandatory
属性。重要--xml
选项只能与--configinfo
选项一起使用。在没有--configinfo
的情况下使用--xml
会导致错误。与该程序用于获取当前配置数据的选项不同,
--configinfo
和--xml
使用从 NDB Cluster 源获取的信息,这些信息是在编译 ndb_config 时获取的。因此,这两个选项不需要连接到正在运行的 NDB Cluster 或访问config.ini
或my.cnf
文件。
将其他 ndb_config 选项(如 --query
或 --type
)与 --configinfo
(带或不带 --xml
选项)组合在一起不受支持。目前,如果您尝试这样做,通常的结果是除了 --configinfo
或 --xml
之外的所有其他选项都将被忽略。 但是,此行为并非保证,并且随时可能更改。此外,由于 ndb_config 在与 --configinfo
选项一起使用时不会访问 NDB Cluster 或读取任何文件,因此尝试使用 --configinfo
指定其他选项(如 --ndb-connectstring
或 --config-file
)毫无意义。
示例
获取集群中每个节点的节点 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 的节点。