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=nameType 字符串 Default Value [none]在读取
my.cnf中的集群配置部分时,override默认的组suffix;用于测试。 -
使用
--configinfo选项将ndb_config输出NDB集群配置参数的列表,包括以下信息:-
每个参数的简要描述、作用和使用方法
-
在
config.ini文件中的section -
参数的数据类型或单位
-
可应用时,参数的默认值、最小值和最大值
-
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) …使用这个选项 zusammen mit dem
--xml选项来获取XML格式的输出。 -
-
--config-binary-file=path-to-fileCommand-Line Format --config-binary-file=path/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.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文件的相关部分:[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_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] -
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=pathType 字符串 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=nameType 字符串 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=pathType String 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 Cluster Connection Strings”中描述相同,默认为
localhost:1186。 -
Command-Line Format --ndb-mgm-tls=levelType 枚举值 Default Value relaxedValid Values relaxedstrict设置连接到管理服务器时所需的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=listType Path name Default Value (Unix) $HOME/ndb-tlsDefault 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-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 返回一个逗号分隔的列表,包含了所有查询选项(节点属性;注意,这是一个单个字符串)。
-
--rows=,separator-rseparatorCommand-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 ndbdmysqldndb_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 输出,添加该选项。以下是一个示例输出的一部分:$> 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属性高亮显示以提高可读性):<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属性所示,如下所示:<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选项一起使用。没有使用--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和类型:
$> ./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来传递要获取的参数列表。 -
要排除来自任何主机except特定的一些结果,请使用
--host选项:$> ./ndb_config --host=198.51.100.176 -f : -r '\n' -q id,type 3:ndbd 5:ndb_mgmd在这个示例中,我们也使用了短形式
-q来确定要查询的属性。类似地,您可以使用
--nodeid选项来限制结果到具有特定ID的节点。