21.4.7 ndb_config-提取 NDB 群集配置信息

该工具从以下多个来源之一中提取数据节点,SQL 节点和 API 节点的当前配置信息:NDB 群集 Management 节点或其config.inimy.cnf文件。默认情况下,Management 节点是配置数据的源。要覆盖默认值,请使用--config-file--mycnf选项执行 ndb_config。通过使用--config_from_node=node_id指定其节点 ID,也可以将数据节点用作源。

ndb_config还可以提供所有可用配置参数的脱机转储,以及它们的默认,最大值和最小值以及其他信息。可以以文本或 XML 格式生成转储。有关更多信息,请参阅本节后面有关--configinfo--xml选项的讨论。

您可以使用选项--nodes--system--connections之一按部分(DBSYSTEMCONNECTIONS)过滤结果。

下 table 包含特定于ndb_config的选项。附加说明如下 table 所示。有关大多数 NDB 群集程序(包括ndb_config)共有的选项,请参见第 21.4.32 节“ NDB 群集程序的公用选项-NDB 群集程序的公用选项”

table21.244 ndb_config 程序的命令行选项

FormatDescription添加,不建议使用或删除
--config-file=file_name将路径设置为 config.ini 文件(在所有基于 MySQL 5.7 的版本中受支持)
--config-from-node=#从具有此 ID 的节点(必须是数据节点)获取配置数据(在所有基于 MySQL 5.7 的版本中受支持)
--configinfo以文本格式转储有关所有 NDB 配置参数的信息,包括默认值,最大值和最小值。与--xml 一起使用以获取 XML 输出(在所有基于 MySQL 5.7 的版本中受支持)
--connections仅打印连接信息(群集配置文件的[tcp],[tcp 默认],[sci],[sci 默认],[shm]或[shm 默认]部分)。不能与--system 或--nodes 一起使用(在所有基于 MySQL 5.7 的版本中受支持)
--diff-default仅打印具有非默认值的配置参数添加:NDB 7.5.7,NDB 7.6.3
--fields=string ,

-f
字段分隔符(在所有基于 MySQL 5.7 的版本中受支持)
--host=name指定主机(在所有基于 MySQL 5.7 的版本中受支持)
--mycnf从 my.cnf 文件中读取配置数据(在所有基于 MySQL 5.7 的发行版中受支持)
--nodeid使用此 ID 获取节点的配置(在所有基于 MySQL 5.7 的发行版中受支持)
--nodes仅打印节点信息(集群配置文件的[ndbd]或[ndbd 默认]部分)。不能与--system 或--connections(在所有基于 MySQL 5.7 的发行版中受支持)一起使用
-c--ndb-connectstring的短格式(所有基于 MySQL 5.7 的版本均支持)
--query=string ,
-q
一个或多个查询选项(属性)(在所有基于 MySQL 5.7 的版本中受支持)
--query-all ,
-a
将所有参数和值转储到单个逗号分隔的字符串中ADDED:NDB 7.4.16,NDB 7.5.7
--rows=string ,
-r
行分隔符(在所有基于 MySQL 5.7 的版本中受支持)
--system仅打印系统部分的信息(请参阅 ndb_config --configinfo 输出)。不能与--nodes 或--connections(在所有基于 MySQL 5.7 的版本中支持)
--type=name指定节点类型(所有基于 MySQL 5.7 的版本均支持)
--configinfo --xml将--xml 与--configinfo 一起使用,以 XML 格式获取具有默认值,最大值和最小值的所有 NDB 配置参数的转储(在所有基于 MySQL 5.7 的发行版中受支持)
  • --configinfo

--configinfo选项使ndb_config转储 NDB Cluster 发行版所支持的每个 NDB Cluster 配置参数的列 table,其中ndb_config是其中的一部分,包括以下信息:

  • 每个参数的用途,效果和用法的简要说明

    • config.ini文件中可使用参数的部分

    • 参数的数据类型或度量单位

    • 如果适用,参数的默认值,最小值和最大值

    • NDB Cluster 发行版本和内部版本信息

默认情况下,此输出为文本格式。此输出的一部分显示在此处:

shell> 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-file=path-to-file

PropertyValue
Command-Line Format--config-file=file_name
TypeFile name
Default Value``

提供 Management 服务器的配置文件(config.ini)的路径。这可能是相对或绝对路径。如果 Management 节点与调用ndb_config的主机位于不同的主机上,则必须使用绝对路径。

  • --config_from_node=#

PropertyValue
Command-Line Format--config-from-node=#
TypeNumeric
Default Valuenone
Minimum Value1
Maximum Value48

从具有此 ID 的数据节点获取集群的配置数据。

如果具有此 ID 的节点不是数据节点,则ndb_config失败并显示错误。 (相反,要从 Management 节点获取配置数据,只需忽略此选项.)

  • --connections

PropertyValue
Command-Line Format--connections
TypeBoolean
Default ValueFALSE

告诉ndb_config仅打印CONNECTIONS信息-即有关在集群配置文件的[tcp][tcp default][shm][shm default]部分中找到的参数的信息(有关更多信息,请参见第 21.3.3.10 节“ NDB 群集 TCP/IP 连接”第 21.3.3.12 节“ NDB 群集共享内存连接”)。

此选项与--nodes--system互斥;这三个选项只能使用其中之一。

  • --diff-default

PropertyValue
Command-Line Format--diff-default
Introduced5.7.18-ndb-7.6.3
TypeBoolean
Default ValueFALSE

仅打印具有非默认值的配置参数。

  • --fields=delimiter , -f delimiter

PropertyValue
Command-Line Format--fields=string
TypeString
Default Value``

指定一个* delimiter *字符串,用于分隔结果中的字段。默认值为,(逗号字符)。

Note

如果* delimiter *包含空格或转义符(例如\ntable 示换行符),则必须用引号引起来。

  • --host=hostname

PropertyValue
Command-Line Format--host=name
TypeString
Default Value``

指定要获取其配置信息的节点的主机名。

Note

尽管主机名localhost通常解析为 IP 地址127.0.0.1,但不一定对所有操作平台和配置都正确。这意味着,在config.ini中使用localhost时,如果ndb_configlocalhost解析为其他地址的另一台主机上运行(例如,在某些版本的 SUSE Linux 中为127.0.0.2),则ndb_config --host=localhost可能会失败。通常,为了获得最佳结果,应为所有与主机相关的 NDB 群集配置值使用数字 IP 地址,或验证所有 NDB 群集主机以相同的方式处理localhost

  • --mycnf

PropertyValue
Command-Line Format--mycnf
TypeBoolean
Default ValueFALSE

my.cnf文件读取配置数据。

  • --ndb-connectstring=connection_string , -c connection_string

PropertyValue
Command-Line Format--ndb-connectstring=connectstring

--connect-string=connectstring
TypeString
默认值localhost:1186

指定用于连接到 Management 服务器的连接字符串。连接字符串的格式与第 21.3.3.3 节“ NDB 群集连接字符串”中描述的相同,默认为localhost:1186

  • --nodeid=node_id

PropertyValue
Command-Line Format--ndb-nodeid=#
TypeNumeric
Default Value0

指定要获取其配置信息的节点的节点 ID。以前,--id可以用作该选项的同义词;在 NDB 7.5 和更高版本中,唯一接受的格式是--nodeid

  • --nodes

PropertyValue
Command-Line Format--nodes
TypeBoolean
Default ValueFALSE

告诉ndb_config打印仅与集群配置文件的[ndbd][ndbd default]部分中定义的参数有关的信息(请参阅第 21.3.3.6 节,“定义 NDB 群集数据节点”)。

此选项与--connections--system互斥;这三个选项只能使用其中之一。

  • --query=query-options , -q query-options

PropertyValue
Command-Line Format--query=string
TypeString
Default Value``

这是用逗号分隔的查询选项列 table,即要返回的一个或多个节点属性的列 table。这些参数包括nodeid(节点 ID),类型(节点类型,即ndbdmysqldndb_mgmd)以及要获取其值的任何配置参数。

例如,--query=nodeid,type,datamemory,datadir返回每个节点的节点 ID,节点类型DataMemoryDataDir

以前,id被接受为nodeid的同义词,但已在 NDB 7.5 和更高版本中删除。

Note

如果给定参数不适用于某种类型的节点,则将为相应的值返回一个空字符串。有关更多信息,请参见本节后面的示例。

  • --query-all , -a

PropertyValue
Command-Line Format--query-all
Introduced5.7.18-ndb-7.5.7
TypeString
Default Value``

返回所有查询选项(节点属性)的逗号分隔列 table;请注意,该列 table 是单个字符串。

NDB 7.5.7 中已引入了此选项(错误#60095,错误#11766869)。

  • --rows=separator , -r separator

PropertyValue
Command-Line Format--rows=string
TypeString
Default Value``

指定* separator *字符串,用于分隔结果中的行。默认为空格字符。

Note

如果* separator *包含空格或转义符(例如\ntable 示换行符),则必须用引号引起来。

  • --system

PropertyValue
Command-Line Format--system
TypeBoolean
Default ValueFALSE

告诉ndb_config仅打印SYSTEM信息。它由无法在运行时更改的系统变量组成;因此,集群配置文件中没有对应的部分。在ndb_config --configinfo的输出中可以看到它们(以****** SYSTEM ******前缀)。

此选项与--nodes--connections互斥;这三个选项只能使用其中之一。

  • --type=node_type

PropertyValue
Command-Line Format--type=name
TypeEnumeration
Default Value[none]
Valid Valuesndbd

mysqld
ndb_mgmd

过滤结果,以便仅返回应用于指定* node_type *(ndbdmysqldndb_mgmd)的节点的配置值。

  • --usage--help-?

PropertyValue
Command-Line Format--help

--usage

使ndb_config打印可用选项列 table,然后退出。

  • --version , -V

PropertyValue
Command-Line Format--version

使ndb_config打印版本信息字符串,然后退出。

  • --configinfo --xml

PropertyValue
Command-Line Format--configinfo --xml
TypeBoolean
Default Valuefalse

通过添加此选项,使ndb_config --configinfo以 XML 格式提供输出。此示例显示了部分此类输出:

shell> ndb_config --configinfo --xml

<configvariables protocolversion="1" ndbversionstring="5.7.31-ndb-7.5.20"
                    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 处理器要么理所当然地忽略了不必要的空格,要么被指示这样做。

XML 输出还指示更改给定参数时要求使用--initial选项重新启动数据节点。通过在相应的<param>元素中存在initial="true"属性来 table 明这一点。另外,还显示了重新启动类型(systemnode)。如果给定参数需要系统重启,则通过在相应的<param>元素中存在restart="system"属性来 table 明。例如,更改为Diskless参数设置的值需要重新启动系统,如下所示(突出显示restartinitial属性以提高可见性):

<param name="Diskless" comment="Run wo/ disk" type="bool" default="false"
          restart="system" initial="true"/>

当前,对于不需要初始重启的参数所对应的<param>元素,XML 输出中没有包含initial属性。换句话说,initial="false"是默认值,如果属性不存在,则应假定值为false。同样,默认重新启动类型为node(即群集的联机或“滚动”重新启动),但是仅当重新启动类型为system时才包含restart属性(这意味着必须同时关闭所有群集节点)时间,然后重新启动)。

弃用的参数在deprecated属性的 XML 输出中指示,如下所示:

<param name="NoOfDiskPagesToDiskAfterRestartACC" comment="DiskCheckpointSpeed"
       type="unsigned" default="20" min="1" max="4294967039" deprecated="true"/>

在这种情况下,comment是指取代不推荐使用的参数的一个或多个参数。与initial相似,deprecated属性仅在参数已弃用时以deprecated="true"table 示,而对于未弃用的参数则完全不显示。 (缺陷号 21127135)

从 NDB 7.5.0 开始,所需的参数用mandatory="true"table 示,如下所示:

<param name="NodeId"
          comment="Number identifying application node (mysqld(API))"
          type="unsigned" mandatory="true" min="1" max="255"/>

与仅针对需要初始重启或已弃用的参数显示initialdeprecated属性的方式几乎相同,仅在实际需要给定参数的情况下才包括mandatory属性。

Important

--xml选项只能与--configinfo选项一起使用。在不使用--configinfo的情况下使用--xml失败,并出现错误。

与该程序用于获取当前配置数据的选项不同,--configinfo--xml使用的是在编译ndb_config时从 NDB 群集源获取的信息。因此,这两个选项不需要连接到正在运行的 NDB 群集,也不需要访问config.inimy.cnf文件。

将不支持将其他ndb_config选项(例如--query--type)与--configinfo(带有或不带有--xml选项)结合使用。当前,如果尝试这样做,通常的结果是,除了--configinfo--xml之外,所有其他选项都将被忽略。但是,不能保证此行为,并且随时可能更改。此外,由于ndb_config--configinfo选项一起使用时,它不会访问 NDB 群集或读取任何文件,而是尝试指定其他选项,例如--ndb-connectstring--config-file--configinfo没有用。

Examples

  • 要获取集群中每个节点的节点 ID 和类型:
shell> ./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 节点可以使用该连接字符串来连接到 Management 服务器:
shell> ./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 和主机名的值以及为其DataMemoryDataDir参数设置的值:
shell> ./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来传递要获取的参数列 table。

  • 要从任何主机(特别是主机)中排除结果,请使用--host选项:
shell> ./ndb_config --host=198.51.100.176 -f : -r '\n' -q id,type
3:ndbd
5:ndb_mgmd

在此示例中,我们还使用缩写形式-q来确定要查询的属性。

同样,您可以使用--nodeid选项将结果限制为具有特定 ID 的节点。