文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  ndb_config — 提取 NDB Cluster 配置信息

25.5.7 ndb_config — 提取 NDB Cluster 配置信息

此工具从以下几种来源之一提取数据节点、SQL 节点和 API 节点的当前配置信息:NDB Cluster 管理节点,或其 config.inimy.cnf 文件。默认情况下,管理节点是配置数据的来源;要覆盖默认值,请使用 --config-file--mycnf 选项执行 ndb_config。还可以通过使用 --config_from_node=node_id 指定其节点 ID 来使用数据节点作为源。

ndb_config 还可以提供所有配置参数的离线转储,这些参数可以与其默认值、最大值和最小值以及其他信息一起使用。转储可以以文本或 XML 格式生成;有关更多信息,请参见本节后面关于 --configinfo--xml 选项的讨论。

您可以使用 --nodes--system--connections 选项之一,按节(DBSYSTEMCONNECTIONS)筛选结果。

以下表格显示了可与 ndb_config 一起使用的所有选项。表格后面是补充说明。

  • --character-sets-dir

    命令行格式 --character-sets-dir=path

    包含字符集的目录。

  • cluster-config-suffix

    命令行格式 --cluster-config-suffix=name
    类型 字符串
    默认值 [无]

    在读取 my.cnf 中的集群配置节时,覆盖默认组后缀;用于测试。

  • --configinfo

    --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_nodeID_config.bin.seqno) 的路径。这可以是相对路径或绝对路径。如果管理服务器和使用的 ndb_config 二进制文件驻留在不同的主机上,则必须使用绝对路径。

    此示例演示了如何将 --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

    通过将输出与配置文件进行比较,您可以看到配置文件中的所有设置都已由管理服务器写入二进制缓存,因此已应用于集群。

  • --config-file=path-to-file

    命令行格式 --config-file=file_name
    类型 文件名
    默认值

    提供集群配置文件 (config.ini) 的路径。这可以是相对路径或绝对路径。如果管理服务器和使用的 ndb_config 二进制文件驻留在不同的主机上,则必须使用绝对路径。

  • --config_from_node=#

    命令行格式 --config-from-node=#
    类型 数值
    默认值
    最小值 1
    最大值 48

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

    如果具有此 ID 的节点不是数据节点,ndb_config 会出错并失败。(要改为从管理节点获取配置数据,只需省略此选项。)

  • --connect-retries

    命令行格式 --connect-retries=#
    类型 整数
    默认值 12
    最小值 0
    最大值 12

    在放弃之前尝试连接的次数。

  • --connect-retry-delay

    命令行格式 --connect-retry-delay=#
    类型 整数
    默认值 5
    最小值 0
    最大值 5

    尝试联系管理服务器之间等待的秒数。

  • --connect-string

    命令行格式 --connect-string=connection_string
    类型 字符串
    默认值 [无]

    --ndb-connectstring 相同。

  • --connections

    命令行格式 --connections

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

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

  • --core-file

    命令行格式 --core-file

    在错误时写入核心文件;用于调试。

  • --defaults-extra-file

    命令行格式 --defaults-extra-file=path
    类型 字符串
    默认值 [无]

    读取全局文件后读取给定文件。

  • --defaults-file

    命令行格式 --defaults-file=path
    类型 字符串
    默认值 [无]

    仅从给定文件读取默认选项。

  • --defaults-group-suffix

    命令行格式 --defaults-group-suffix=string
    类型 字符串
    默认值 [无]

    还读取具有 concat(group, suffix) 的组。

  • --diff-default

    命令行格式 --diff-default

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

  • --fields=delimiter, -f delimiter

    命令行格式 --fields=string
    类型 字符串
    默认值

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

    注意

    如果 delimiter 包含空格或转义符(例如 \n 用于换行符),则必须对其进行引用。

  • --help

    命令行格式 --help

    显示帮助文本并退出。

  • --host=hostname

    命令行格式 --host=name
    类型 字符串
    默认值

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

    注意

    虽然主机名 localhost 通常解析为 IP 地址 127.0.0.1,但这并非所有操作系统平台和配置都如此。这意味着,当 localhost 用于 config.ini 时,如果 ndb_config --host=localhostlocalhost 解析为不同地址(例如,在某些版本的 SUSE Linux 上,这是 127.0.0.2)的不同主机上运行,则可能会失败。通常,为了获得最佳结果,您应该对与主机相关的 NDB Cluster 配置值使用数字 IP 地址,或者验证所有 NDB Cluster 主机是否以相同的方式处理 localhost

  • --login-path

    命令行格式 --login-path=path
    类型 字符串
    默认值 [无]

    从登录文件读取给定路径。

  • --mycnf

    命令行格式 --mycnf

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

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

    命令行格式 --ndb-connectstring=connection_string
    类型 字符串
    默认值 [无]

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

  • --ndb-mgm-tls

    命令行格式 --ndb-mgm-tls=level
    类型 枚举
    默认值 relaxed
    有效值

    relaxed

    strict

    设置连接到管理服务器所需的 TLS 支持级别;relaxedstrict 之一。relaxed(默认值)表示将尝试建立 TLS 连接,但不强制成功;strict 表示连接需要 TLS。

  • --ndb-mgmd-host

    命令行格式 --ndb-mgmd-host=connection_string
    类型 字符串
    默认值 [无]

    --ndb-connectstring 相同。

  • --ndb-nodeid

    命令行格式 --ndb-nodeid=#
    类型 整数
    默认值 [无]

    设置此节点的节点 ID,覆盖由 --ndb-connectstring 设置的任何 ID。

  • --ndb-optimized-node-selection

    命令行格式 --ndb-optimized-node-selection

    启用用于选择事务节点的优化。默认情况下启用;使用 --skip-ndb-optimized-node-selection 禁用。

  • --ndb-tls-search-path

    命令行格式 --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-defaults

    不要从除登录文件以外的任何选项文件读取默认选项。

  • --no-login-paths

    命令行格式 --no-login-paths

    跳过从登录路径文件读取选项。

  • --nodeid=node_id

    命令行格式 --ndb-nodeid=#
    类型 整数
    默认值 [无]

    指定要获取配置信息的节点的节点 ID。

  • --nodes

    命令行格式 --nodes

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

    此选项与 --connections--system 相互排斥;只能使用这 3 个选项中的一个。

  • --print-defaults

    命令行格式 --print-defaults

    打印程序参数列表并退出。

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

    命令行格式 --query=string
    类型 字符串
    默认值

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

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

    注意

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

  • --query-all, -a

    命令行格式 --query-all
    类型 字符串
    默认值

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

  • --rows=separator, -r separator

    命令行格式 --rows=string
    类型 字符串
    默认值

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

    注意

    如果 separator 包含空格或转义符(如 \n 用于换行符),则必须将其引用。

  • --system

    命令行格式 --system

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

    此选项与 --nodes--connections 相互排斥;只能使用这 3 个选项中的一个。

  • --type=node_type

    命令行格式 --type=name
    类型 枚举
    默认值 [无]
    有效值

    ndbd

    mysqld

    ndb_mgmd

    筛选结果,以便仅返回适用于指定 node_typendbdmysqldndb_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" 属性来表示。此外,还显示了重启类型(systemnode);如果给定参数需要系统重启,则由相应 <param> 元素中存在 restart="system" 属性来表示。例如,更改为 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 属性。

    已弃用的参数在 XML 输出中由 deprecated 属性表示,如下所示

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

    在这种情况下,comment 指的是一个或多个取代已弃用参数的参数。与 initial 类似,仅当参数已弃用时才显示 deprecated 属性,其中 deprecated="true",而对于未弃用的参数则根本不显示该属性。(错误 #21127135)

    必需的参数用 mandatory="true" 表示,如下所示

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

    initialdeprecated 属性仅在参数需要初始重启或已弃用时显示类似,mandatory 属性仅在给定参数实际上是必需时才包含。

    重要

    --xml 选项只能与 --configinfo 选项一起使用。在没有 --configinfo 的情况下使用 --xml 会导致错误。

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

将其他 ndb_config 选项(例如 --query--type)与 --configinfo(无论是否包含 --xml 选项)结合使用是不支持的。目前,如果您尝试这样做,通常的结果是除了 --configinfo--xml 之外的所有其他选项都会被忽略。 但是,此行为并非保证,并且随时可能发生变化。此外,由于 ndb_config 在使用 --configinfo 选项时不访问 NDB Cluster 也不读取任何文件,因此尝试使用 --configinfo 指定其他选项(如 --ndb-connectstring--config-file)毫无意义。

示例

  1. 要获取群集中每个节点的节点 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 选项将每个节点的值放在输出中的新行上。

  2. 要生成一个数据、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
  3. ndb_config 调用仅检查数据节点(使用 --type 选项),并显示每个节点的 ID 和主机名的值,以及为其 DataMemoryDataDir 参数设置的值

    $> ./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 传递要获取的参数列表。

  4. 要排除来自除特定主机以外的任何主机的结果,请使用 --host 选项

    $> ./ndb_config --host=198.51.100.176 -f : -r '\n' -q id,type
    3:ndbd
    5:ndb_mgmd

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

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