25.5.7 NDB 集群配置信息提取工具 — ndb_config
这个工具从 NDB 集群管理节点、config.ini
或 my.cnf
文件中提取当前配置信息,包括数据节点、SQL 节点和 API 节点的信息。默认情况下,管理节点是配置数据的来源;要覆盖默认设置,可以使用--config-file
或--mycnf
选项。也可以使用数据节点作为来源,通过指定其节点 ID 使用--config_from_node=
选项。node_id
ndb_ config也可以提供离线dump所有配置参数的信息,这些信息包括默认值、最大值、最小值和其他信息。dump 可以在文本或 XML 格式中生产;更多信息,请参阅--configinfo
和--xml
选项的讨论。)
您可以使用以下选项来过滤结果:DB
、SYSTEM
或CONNECTIONS
,其中包括--nodes
、--system
或--connections
。
以下是可以与ndb_config一起使用的所有选项的表格。额外描述在表格后面。
-
Command-Line Format --character-sets-dir=path
包含字符集的目录。
-
Command-Line Format --cluster-config-suffix=name
Type 字符串 Default Value [none]
在读取
my.cnf
中的集群配置部分时,override默认的组suffix;用于测试。 -
使用
--configinfo
选项将ndb_config输出NDB集群配置参数的列表,包括以下信息:-
每个参数的简要描述、作用和使用方法
-
在
config.ini
文件中的section -
参数的数据类型或单位
-
可应用时,参数的默认值、最小值和最大值
-
NDB集群版本和构建信息
默认情况下,这个输出是文本格式的一部分。以下是一部分输出:
Press CTRL+C to copy$> 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) …
使用这个选项 zusammen mit dem
--xml
选项来获取XML格式的输出。 -
-
--config-binary-file=
path-to-file
Command-Line Format --config-binary-file=path/to/file
Type 文件名 Default Value 显示管理服务器的缓存二进制配置文件路径(
ndb_
)。这可能是一个相对或绝对路径。如果管理服务器和ndb_config二进制文件位于不同的主机上,您必须使用绝对路径。nodeID
_config.bin.seqno
这个示例演示了将
--config-binary-file
与其他ndb_config选项组合,以获取有用的输出:Press CTRL+C to copy$> 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.4,(null) DataDir,/local/data/8.4,. DataMemory,2G,98M FileSystemPath,/local/data/8.4,(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.4,(null) DataDir,/local/data/8.4. DataMemory,2G,98M FileSystemPath,/local/data/8.4,(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
文件的相关部分:Press CTRL+C to copy[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.4 [ndbd] NodeId= 6 HostName= 127.0.0.1 DataDir= /local/data/8.4
通过比较输出与配置文件,您可以看到所有设置都被管理服务器写入到二进制缓存中,并且应用于集群。
-
Command-Line Format --config-file=file_name
Type 文件名 Default Value 指定集群配置文件的路径(
config.ini
)。这可能是一个相对或绝对路径。如果管理服务器和ndb_config二进制文件位于不同的主机上,您必须使用绝对路径。 -
Command-Line Format --config-from-node=#
Type 数字 Default Value none
Minimum Value 1
Maximum Value 48
从具有该ID的数据节点获取集群配置数据。
如果具有该ID的节点不是数据节点,ndb_config将以错误退出。 (要从管理节点获取配置数据,只需省略该选项。)
-
Command-Line Format --connect-retries=#
Type 整数 Default Value 12
Minimum Value 0
Maximum Value 12
连接失败前重试的次数。
-
Command-Line Format --connect-retry-delay=#
Type 整数 Default Value 5
Minimum Value 0
Maximum Value 5
连接管理服务器时等待的秒数。
-
Command-Line Format --connect-string=connection_string
Type 字符串 Default Value [none]
-
Command-Line Format --connections
将ndb_config 命令设置为仅打印
CONNECTIONS
信息,即来自集群配置文件的[tcp]
、[tcp default]
、[shm]
或[shm default]
部分的参数信息(见第25.4.3.10节,“NDB Cluster TCP/IP Connections”和第25.4.3.12节,“NDB Cluster Shared-Memory Connections”,了解更多信息)。 -
Command-Line Format --core-file
在错误情况下写入核心文件;用于调试。
-
Command-Line Format --defaults-extra-file=path
Type 字符串 Default Value [none]
在读取全局文件后读取给定的文件。
-
Command-Line Format --defaults-file=路径
Type 字符串 Default Value [none]
从给定的文件中读取默认选项。
-
Command-Line Format --defaults-group-suffix=字符串
Type 字符串 Default Value [none]
也读取concat(组,后缀)中的组。
-
Command-Line Format --diff-default
只打印配置参数,具有非默认值。
-
--fields=
,分隔符
-f
分隔符
Command-Line Format --fields=字符串
Type 字符串 Default Value 指定结果中字段的
分隔符
字符串。默认是,
(逗号字符)。Note如果
delimiter
包含空格或转义字符(例如\n
表示换行符),那么它必须被引号。 -
Command-Line Format --help
显示帮助文本并退出。
-
Command-Line Format --host=name
Type 字符串 Default Value 指定要获取配置信息的节点的主机名称。
Note通常情况下,主机名
localhost
将解析为IP地址127.0.0.1
。然而,这可能在所有操作系统和配置中都不是真的。这意味着,当使用config.ini
中的localhost
时,ndb_config--host=localhost
可能在不同的主机上失败,这些主机上的localhost
解析为不同的地址(例如,在某些版本的SUSE Linux中,这是127.0.0.2
)。总的来说,对于NDB集群配置中的所有主机相关值,您应该使用数字IP地址,或者验证所有NDB集群主机都处理localhost
一样。 -
Command-Line Format --login-path=path
Type String Default Value [none]
从登录文件中读取给定的路径。
-
Command-Line Format --mycnf
从
my.cnf
文件中读取配置数据。 -
--ndb-connectstring=
,connection_string
-c
connection_string
Command-Line Format --ndb-connectstring=connection_string
Type 字符串 Default Value [none]
指定连接到管理服务器时使用的连接字符串。连接字符串的格式与第25.4.3.3节,“NDB Cluster Connection Strings”中描述相同,默认为
localhost:1186
。 -
Command-Line Format --ndb-mgm-tls=level
Type 枚举值 Default Value relaxed
Valid Values 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
禁用。 -
Command-Line Format --_ndb-tls-search-phns=list
Type Path name Default Value (Unix) $HOME/ndb-tls
Default Value (Windows) $HOME/ndb-tls
指定搜索CA文件的目录列表。Unix平台上,目录名称使用冒点(
:
)分隔;Windows系统上,使用分号(;
)作为分隔符。目录引用可以是相对或绝对路径,可以包含一个或多个环境变量,每个变量以前缀的美元符号($
)表示,并在使用时展开。搜索从左侧命名目录开始,自左向右直到找到文件为止。空字符串表示空搜索路径,这将导致所有搜索失败。包含单个点(
.
)的字符串表示搜索路径限制于当前工作目录。如果未提供搜索路径,则使用编译时默认值。这取决于平台:在Windows上,这是
\ndb-tls
;在其他平台(包括Linux)上,这是$HOME/ndb-tls
。可以通过编译NDB集群使用-DWITH_NDB_TLS_SEARCH_PATH
来覆盖该值。 -
Command-Line Format --no-defaults
不从任何选项文件中读取默认选项,除了登录文件。
-
Command-Line Format --no-login-paths
跳过从登录路径文件中读取选项。
-
Command-Line Format --ndb-nodeid=#
Type Integer Default Value [none]
指定要获取配置信息的节点ID。
-
Command-Line Format --nodes
将ndb_config命令限制为只打印在集群配置文件中定义的
[ndbd]
或[ndbd default]
部分的参数信息(见第25.4.3.6节,“定义NDB集群数据节点”)。这个选项与
--connections
和--system
选项是互斥的;只能使用其中一个选项。 -
Command-Line Format --print-defaults
打印程序命令行参数列表并退出。
-
--query=
,query_options
-q
query_options
Command-Line Format --query=string
Type 字符串 Default Value 这是一个逗号分隔的列表,包含了查询选项—即要返回的一组或多个节点属性,这些包括
nodeid
(节点ID)、type(节点类型,即ndbd
、mysqld
或ndb_mgmd
)和任何配置参数的值。例如,
--query=nodeid,type,datamemory,datadir
将返回每个节点的节点ID、节点类型、DataMemory
和DataDir
。Note如果给定的参数对于某种类型的节点不适用,那么对应的值将返回空字符串。请参阅本节后面的示例以获取更多信息。
-
--query-all
,-a
Command-Line Format --query-all
Type 字符串 Default Value 返回一个逗号分隔的列表,包含了所有查询选项(节点属性;注意,这是一个单个字符串)。
-
--rows=
,separator
-r
separator
Command-Line Format --rows=字符串
Type 字符串 Default Value 指定结果中行的分隔符串。默认是空格字符。
Note如果分隔符串包含空格或转义(例如\n表示换行符),则必须被引号。
-
Command-Line Format --system
告诉ndb_config仅打印SYSTEM信息。这包括不能在运行时更改的系统变量;因此,它们没有对应的集群配置文件部分。它们可以在ndb_config的输出中看到(以****** SYSTEM ******开头)。
这选项与
--nodes
和--connections
互斥;只能使用其中一个选项。 -
Command-Line Format --type=名称
Type 枚举 Default Value [none]
Valid Values ndbd
mysqld
ndb_mgmd
过滤结果,以便只返回指定
node_类型
(ndbd
、mysqld
或ndb_mgmd
)的配置值。 -
--usage
、--help
或-?
Command-Line Format --help
使ndb_config打印可用的选项列表,然后退出。
-
Command-Line Format --version
使ndb_config 打印版本信息字符串,然后退出。
-
Command-Line Format --configinfo --xml
使ndb_config
--configinfo
提供 XML 输出,添加该选项。以下是一个示例输出的一部分:Press CTRL+C to copy$> 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 处理器都忽略非必要空格,或者可以被 instructed 来这样做。XML 输出还会指出更改给定参数需要重新启动数据节点,使用
--initial
选项。这由对应的<param>
元素中出现的initial="true"
属性所示。此外,重启类型(system
或node
)也将被显示;如果给定参数需要系统重启,这将由对应的<param>
元素中出现的restart="system"
属性所示。例如,改变Diskless
参数的值需要系统初始重启,如下所示(将restart
和initial
属性高亮显示以提高可读性):Press CTRL+C to copy<param name="Diskless" comment="Run wo/ disk" type="bool" default="false" restart="system" initial="true"/>
当前,XML 输出中不包括对不需要初始重启的参数的
initial
属性;换言之,initial="false"
是默认值,如果该属性不存在,则假设其值为false
。类似地,默认重启类型为node
(即在线或“rolling”重启集群),但只有当重启类型为system
时才包括restart
属性(表示所有集群节点必须同时关闭,然后重新启动)。XML 输出中已弃用的参数由
deprecated
属性所示,如下所示:Press CTRL+C to copy<param name="NoOfDiskPagesToDiskAfterRestartACC" comment="DiskCheckpointSpeed" type="unsigned" default="20" min="1" max="4294967039" deprecated="true"/>
在这种情况下,
comment
指的是一个或多个参数,它们超出了已弃用的参数。类似于initial
,deprecated
属性仅在参数被弃用时出现,格式为deprecated="true"
,否则不出现。 (Bug #21127135)需要的参数以
mandatory="true"
表示,如下所示:Press CTRL+C to copy<param name="NodeId" comment="Number identifying application node (mysqld(API))" type="unsigned" mandatory="true" min="1" max="255"/>
类似于
initial
或deprecated
属性仅在需要初始重启或已弃用的参数时出现,mandatory
属性仅在给定的参数实际需要时出现。Important--xml
选项只能与--configinfo
选项一起使用。没有使用--configinfo
时,使用--xml
将失败。与用于获取当前配置数据的选项不同,
--configinfo
和--xml
使用来自 NDB 集群源的信息,当 ndb_config 编译时获得。因此,对于这两个选项,不需要连接到运行的 NDB 集群或访问config.ini
或my.cnf
文件。
将其他ndb_config选项(如--query
或--type
)与--configinfo
(无论是否使用--xml
选项都不支持。当前,如果您尝试这样做,通常结果是忽略所有其他选项except --configinfo
或--xml
。然而,这种行为不保证,并且可能随时更改。此外,使用ndb_config时,使用--configinfo
选项,不会访问NDB集群或读取任何文件,尝试指定额外的选项,如--ndb-connectstring
或--config-file
与--configinfo
无效。
-
获取集群中的每个节点的节点ID和类型:
Press CTRL+C to copy$> ./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 节点用于连接管理服务器的连接字符串:
Press CTRL+C to copy$> ./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
参数的值:Press CTRL+C to copy$> ./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
来传递要获取的参数列表。 -
要排除来自任何主机except特定的一些结果,请使用
--host
选项:Press CTRL+C to copy$> ./ndb_config --host=198.51.100.176 -f : -r '\n' -q id,type 3:ndbd 5:ndb_mgmd
在这个示例中,我们也使用了短形式
-q
来确定要查询的属性。类似地,您可以使用
--nodeid
选项来限制结果到具有特定ID的节点。