MySQL8-中文参考-四十一-

MySQL8 中文参考(四十一)

原文:docs.oracle.com/javase/tutorial/reallybigindex.html

25.5.6 ndb_blob_tool — 检查和修复 NDB Cluster 表的 BLOB 和 TEXT 列

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-blob-tool.html

这个工具可用于检查和删除NDB表中的孤立的 BLOB 列部分,以及生成列出任何孤立部分的文件。在诊断和修复包含 BLOBTEXT 列的损坏或受损 NDB 表时,有时会很有用。

ndb_blob_tool 的基本语法如下所示:

ndb_blob_tool [*options*] *table* [*column*, ...]

除非使用 --help 选项,否则必须指定要执行的操作,包括一个或多个选项 --check-orphans--delete-orphans--dump-file。这些选项会导致 ndb_blob_tool 检查孤立��� BLOB 部分、删除任何孤立的 BLOB 部分,并生成列出孤立的 BLOB 部分的转储文件,分别在本节后面有更详细的描述。

在调用 ndb_blob_tool 时,您还必须指定表的名称。此外,您还可以选择在表名后面(逗号分隔)跟随该表的一个或多个 BLOBTEXT 列的名称。如果未列出列,则该工具将处理表的所有 BLOBTEXT 列。如果需要指定数据库,请使用 --database (-d) 选项。

--verbose 选项在输出中提供有关工具进度的附加信息。

所有可与 ndb_mgmd 一起使用的选项都显示在下表中。表后面会有附加描述。

表 25.28 与程序 ndb_blob_tool 一起使用的命令行选项

格式 描述 添加、弃用或删除
--add-missing 写入虚拟 blob 部分以取代缺失的部分 添加: NDB 8.0.20
--character-sets-dir=path 包含字符集的目录 移除: 8.0.31
--check-missing 检查具有内联部分但从部分表中缺少一个或多个部分的 blob 添加: NDB 8.0.20
--check-orphans 检查没有对应内联部分的 blob 部分 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--connect-retries=# 放弃之前重试连接的次数 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--connect-retry-delay=# 重试联系管理服务器之间等待的秒数 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--connect-string=connection_string,-c connection_string 与 --ndb-connectstring 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--core-file 在错误时写入核心文件;用于调试 移除: 8.0.31
--database=name,-d name 要在其中查找表的数据库 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--defaults-extra-file=path 在全局文件读取后读取给定文件 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--defaults-file=path 仅从给定文件中读取默认选项 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--defaults-group-suffix=string 也读取具有 concat(group, suffix) 的组 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--delete-orphans 删除没有对应内联部分的 blob 部分 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--dump-file=file 将孤立键写入指定文件 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--help,-? 显示帮助文本并退出 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--login-path=path 从登录文件中读取给定路径 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-connectstring=connection_string,-c connection_string 设置用于连接到 ndb_mgmd 的连接字符串。语法: "[nodeid=id;][host=]hostname[:port]"。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-mgmd-host=connection_string,-c connection_string 与 --ndb-connectstring 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-nodeid=# 为此节点设置节点 ID,覆盖 --ndb-connectstring 设置的任何 ID (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-optimized-node-selection 启用用于事务节点选择的优化。默认启用;使用 --skip-ndb-optimized-node-selection 来禁用 已移除: 8.0.31
--no-defaults 不从除登录文件之外的任何选项文件中读取默认选项 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--print-defaults 打印程序参数列表并退出 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--usage,-? 显示帮助文本并退出;与 --help 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--verbose,-v 详细输出 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--version,-V 显示版本信息并退出 (支持所有基于 MySQL 8.0 的 NDB 版本)
格式 描述 添加、弃用或移除
  • --add-missing

    命令行格式 --add-missing
    引入版本 8.0.20-ndb-8.0.20

    对于 NDB Cluster 表中没有对应 BLOB 部分的每个内联部分,写入所需长度的虚拟 BLOB 部分,由空格组成。

  • --character-sets-dir

    命令行格式 --character-sets-dir=path
    移除版本 8.0.31

    包含字符集的目录。

  • --check-missing

    命令行格式 --check-missing
    引入版本 8.0.20-ndb-8.0.20

    检查 NDB Cluster 表中没有对应 BLOB 部分的内联部分。

  • --check-orphans

    命令行格式 --check-orphans

    检查 NDB Cluster 表中没有对应内联部分的 BLOB 部分。

  • --connect-retries

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

    放弃之前重试连接的次数。

  • --connect-retry-delay

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

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

  • --connect-string

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

    --ndb-connectstring 相同。

  • --core-file

    命令行格式 --core-file
    移除版本 8.0.31

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

  • --database=*db_name*, -d

    命令行格式 --database=name
    类型 字符串
    默认值 [none]

    指定要在其中查找表的数据库。

  • --defaults-extra-file

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

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

  • --defaults-file

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

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

  • --defaults-group-suffix

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

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

  • --delete-orphans

    命令行格式 --delete-orphans

    从 NDB Cluster 表中删除没有对应内联部分的 BLOB 部分。

  • --dump-file=*file*

    命令行格式 --dump-file=file
    类型 文件名
    默认数值 [none]

    将孤立的 BLOB 列部分的列表写入 file。写入文件的信息包括每个孤立的 BLOB 部分的表键和部分编号。

  • --help

    命令行格式 --help

    显示帮助文本并退出。

  • --login-path

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

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

  • --ndb-connectstring

    命令行格式 --ndb-connectstring=connection_string
    类型 字符串
    ��认数值 [none]

    设置连接字符串以连接到 ndb_mgmd。语法:"[nodeid=id;][host=]hostname[:port]"。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目。

  • --ndb-mgmd-host

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

    --ndb-connectstring 相同。

  • --ndb-nodeid

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

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

  • --ndb-optimized-node-selection

    命令行格式 --ndb-optimized-node-selection
    已移除 8.0.31

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

  • --no-defaults

    命令行格式 --no-defaults

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

  • --print-defaults

    命令行格式 --print-defaults

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

  • --usage

    命令行格式 --usage

    显示帮助文本并退出;与--help 相同。

  • --verbose

    命令行格式 --verbose

    在工具的输出中提供关于其进度的额外信息。

  • --version

    命令行格式 --version

    显示版本信息并退出。

示例

首先,我们在test数据库中创建一个NDB表,使用这里显示的CREATE TABLE语句:

USE test;

CREATE TABLE btest (
    c0 BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    c1 TEXT,
    c2 BLOB
)   ENGINE=NDB;

然后,我们向这个表中插入几行数据,使用类似于这个语句的一系列语句:

INSERT INTO btest VALUES (NULL, 'x', REPEAT('x', 1000));

当针对这个表运行--check-orphans时,ndb_blob_tool 生成以下输出:

$> ndb_blob_tool --check-orphans --verbose -d test btest
connected
processing 2 blobs
processing blob #0 c1 NDB$BLOB_19_1
NDB$BLOB_19_1: nextResult: res=1
total parts: 0
orphan parts: 0
processing blob #1 c2 NDB$BLOB_19_2
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=1
total parts: 10
orphan parts: 0
disconnected

该工具报告称,与列c1关联的NDB BLOB 列部分不存在,即使c1是一个TEXT列。 这是因为,在NDB表中,只有BLOBTEXT列值的前 256 个字节被内联存储,多余的部分(如果有的话)被单独存储;因此,如果给定类型的列中没有使用超过 256 字节的值,则NDB不会为此列创建BLOB列部分。 更多信息请参见第 13.7 节,“数据类型存储要求”。

25.5.7 ndb_config — 提取 NDB 集群配置信息

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-config.html

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

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

你可以通过选项--nodes--system,或--connections来按部分(DBSYSTEMCONNECTIONS)过滤结果。

所有可与ndb_config一起使用的选项都显示在下表中。表后面会有额外的描述。

表 25.29 与程序 ndb_config 一起使用的命令行选项

格式 描述 添加、弃用或移除
--character-sets-dir=path 包含字符集的目录 移除:8.0.31
--cluster-config-suffix=name 在读取my.cnf文件中的 cluster_config 部分时覆盖默认组后缀;用于测试 添加:NDB 8.0.24
--config-binary-file=path/to/file 读取此二进制配置文件 添加:NDB 8.0.32
--config-file=file_name 设置到 config.ini 文件的路径 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--config-from-node=# 从具有此 ID 的节点(必须是数据节点)获取配置数据 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--configinfo 以文本格式转储所有 NDB 配置参数的信息,包括默认值、最大值和最小值。与--xml 一起使用以获取 XML 输出 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--connections 仅打印有关集群配置文件的[tcp]、[tcp default]、[sci]、[sci default]、[shm]或[shm default]部分指定的连接的信息。不能与--system 或--nodes 一起使用 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--connect-retries=# 在放弃之前重试连接的次数 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--connect-retry-delay=# 尝试联系管理服务器之间等待的秒数 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--connect-string=connection_string,-c connection_string 与--ndb-connectstring 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--core-file 在错误时写入核心文件;用于调试 已移除:8.0.31
--defaults-extra-file=path 在全局文件读取后读取给定文件 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--defaults-file=path 仅从给定文件中读取默认选项 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--defaults-group-suffix=string 还读取具有 concat(group, suffix)的组 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--diff-default 仅打印具有非默认值的配置参数 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--fields=string,-f 字段分隔符 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--help,-? 显示帮助文本并退出 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--host=name 指定主机 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--login-path=path 从登录文件中读取给定路径 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--mycnf 从 my.cnf 文件中读取配置数据 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-connectstring=connection_string,-c connection_string 设置连接到 ndb_mgmd 的连接字符串。语法:"[nodeid=id;][host=]hostname[:port]"。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-mgmd-host=connection_string,-c connection_string 与--ndb-connectstring 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-nodeid=# 为此节点设置节点 ID,覆盖--ndb-connectstring 设置的任何 ID 移除:8.0.31
--ndb-optimized-node-selection 启用优化以选择事务节点。默认启用;使用--skip-ndb-optimized-node-selection 来禁用 移除:8.0.31
--no-defaults 不要从登录文件以外的任何选项文件中读取默认选项 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--nodeid=# 获取具有此 ID 的节点配置 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--nodes 仅打印节点信息(集群配置文件的[ndbd]或[ndbd default]部分)。不能与--system 或--connections 一起使用 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--query=string,-q string 一个或多个查询选项(属性) (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--query-all,-a 将所有参数和值转储到单个逗号分隔的字符串中 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--print-defaults 打印程序参数列表并退出 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--rows=string,-r string 行分隔符 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--system 仅打印 SYSTEM 部分信息(请参阅 ndb_config --configinfo 输出)。不能与 --nodes 或 --connections 一起使用 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--type=name 指定节点类型 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--usage,-? 显示帮助文本并退出;与 --help 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--version,-V 显示版本信息并退出 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--configinfo --xml 使用 --xml ��� --configinfo 以 XML 格式获取所有 NDB 配置参数的转储,包括默认、最大和最小值 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
格式 描述 添加、弃用或移除
  • cluster-config-suffix

    命令行格式 --cluster-config-suffix=name
    引入 8.0.24-ndb-8.0.24
    类型 字符串
    默认值 [none]

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

  • --configinfo

    --configinfo选项导致ndb_config列出了 NDB 集群配置参数的列表,这些参数受 NDB 集群分发的支持,其中ndb_config是其中的一部分,包括以下信息:

    • 每个参数的目的、效果和用法的简要描述

    • 参数可能在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
    引入版本 8.0.32-ndb-8.0.32
    类型 文件名
    默认值

    给出管理服务器缓存的二进制配置文件(ndb_*nodeID*_config.bin.*seqno*)的路径。这可以是相对路径或绝对路径。如果管理服务器和使用的ndb_config二进制文件位于不同主机上,则必须使用绝对路径。

    这个示例演示了将--config-binary-file与其他ndb_config选项结合使用以获得有用的输出:

    > ndb_config --config-binary-file=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,/home/jon/data/8.0,(null) 
    DataDir,/home/jon/data/8.0,. 
    DataMemory,2G,98M 
    FileSystemPath,/home/jon/data/8.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,/home/jon/data/8.0,(null) 
    DataDir,/home/jon/data/8.0,. 
    DataMemory,2G,98M 
    FileSystemPath,/home/jon/data/8.0,(null) 
    HostName,127.0.0.1,localhost 
    Nodegroup,0,(null) 
    ThreadConfig,,(null)
    
    > ndb_config --config-binary-file=ndb_50_config.bin.1 --diff-default --system
    config of [SYSTEM] system 
    CONFIG_PARAMETER,ACTUAL_VALUE,DEFAULT_VALUE 
    Name,MC_20220216092809,(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= /home/jon/data/8.0
    
    [ndbd]
    NodeId= 6
    HostName= 127.0.0.1
    DataDir= /home/jon/data/8.0
    

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

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

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

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

  • --config_from_node=#

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

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

    如果具有此 ID 的节点不是数据节点,则ndb_config将失败并显示错误。(要从管理节点而不是数据节点获取配置数据,只需省略此选项。)

  • --connections

    命令行格式 --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”)。

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

  • --diff-default

    命令行格式 --diff-default

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

  • --fields=*delimiter*, -f delimiter

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

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

    注意

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

  • --host=*hostname*

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

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

    注意

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

  • --mycnf

    命令行格式 --mycnf

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

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

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

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

  • --no-defaults

    命令行格式 --no-defaults

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

  • --nodeid=*node_id*

    命令行格式 --ndb-nodeid=#
    已移除 8.0.31
    类型 整数
    默认值 [none]

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

  • --nodes

    命令行格式 --nodes

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

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

  • --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
    类型 枚举
    默认值 [none]
    有效值 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.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>
    

    注意

    通常,由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",对于未被弃用的参数根本不显示。 (Bug #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_config 时从 NDB Cluster 源获取的信息。因此,这两个选项不需要连接到运行中的 NDB Cluster 或访问 config.inimy.cnf 文件。

  • --print-defaults

    命令行格式 --print-defaults

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

  • --defaults-file

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

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

  • --defaults-extra-file

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

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

  • --defaults-group-suffix

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

    同时读取带有 concat(group, suffix) 的组。

  • --login-path

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

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

  • --help

    命令行格式 --help

    显示帮助文本并退出。

  • --connect-string

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

    --ndb-connectstring 相同。

  • --ndb-mgmd-host

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

    --ndb-connectstring 相同。

  • --ndb-nodeid

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

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

  • --core-file

    命令行格式 --core-file
    已移除 8.0.31

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

  • --character-sets-dir

    命令行格式 --character-sets-dir=path
    移除 8.0.31

    包含字符集的目录。

  • --connect-retries

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

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

  • --connect-retry-delay

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

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

  • --ndb-optimized-node-selection

    命令行格式 --ndb-optimized-node-selection
    移除 8.0.31

    启用优化以选择事务节点。默认启用;使用--skip-ndb-optimized-node-selection来禁用。

结合其他ndb_config选项(如--query--type)与--configinfo(带有或不带有--xml选项)不受支持。当前,如果尝试这样做,通常的结果是除了--configinfo--xml之外的所有其他选项都会被简单忽略。但是,此行为不能保证且随时可能更改。此外,由于ndb_config在使用--configinfo选项时不访问 NDB 集群或读取任何文件,因此尝试使用--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 的节点。

25.5.8 ndb_delete_all — 从 NDB 表中删除所有行

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-delete-all.html

ndb_delete_all 会删除给定 NDB 表中的所有行。在某些情况下,这比 DELETE 甚至 TRUNCATE TABLE 要快得多。

用法

ndb_delete_all -c *connection_string* *tbl_name* -d *db_name*

这将从名为 tbl_name 的表中删除所有行,该表位于名为 db_name 的数据库中。这与在 MySQL 中执行 TRUNCATE *db_name*.*tbl_name* 是完全等效的。

可与 ndb_delete_all 一起使用的选项显示在以下表中。表后面会有额外的描述。

表 25.30 与���序 ndb_delete_all 一起使用的命令行选项

格式 描述 添加、弃用或移除
--character-sets-dir=path 包含字符集的目录 移除:8.0.31
--connect-retries=# 放弃之前重试连接的次数 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--connect-retry-delay=# 尝试联系管理服务器之间等待的秒数 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--connect-string=connection_string,-c connection_string 与 --ndb-connectstring 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--core-file 在错误时写入核心文件;用于调试 移除:8.0.31
--database=name,-d name 表所在数据库的名称 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--defaults-extra-file=path 在全局文件读取后读取给定文件 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--defaults-file=path 仅从给定文件中读取默认选项 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--defaults-group-suffix=string 也读取具有 concat(group, suffix) 的组 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--diskscan 执行磁盘扫描 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--help,-? 显示帮助文本并退出 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--login-path=path 从登录文件中读取给定路径 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-connectstring=connection_string,-c connection_string 设置用于连接到 ndb_mgmd 的连接字符串。语法:"[nodeid=id;][host=]hostname[:port]"。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-mgmd-host=connection_string,-c connection_string 与 --ndb-connectstring 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-nodeid=# 为此节点设置节点 ID,覆盖由 --ndb-connectstring 设置的任何 ID (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-optimized-node-selection 启用用于事务节点选择的优化。默认启用;使用 --skip-ndb-optimized-node-selection 来禁用 已移除: 8.0.31
--no-defaults 不从登录文件以外的任何选项文件中读取默认选项 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--print-defaults 打印程序参数列表并退出 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--transactional,-t 在一个单一事务中执行删除操作;在使用时可能会用完操作 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--tupscan 执行元组扫描 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--usage,-? 显示帮助文本并退出;与 --help 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--version,-V 显示版本信息并退出 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
格式 描述 添加、弃用或移除
  • --character-sets-dir

    命令行格式 --character-sets-dir=path
    移除 8.0.31

    包含字符集的目录。

  • --connect-retries

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

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

  • --connect-retry-delay

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

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

  • --connect-string

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

    --ndb-connectstring相同。

  • --core-file

    命令行格式 --core-file
    移除 8.0.31

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

  • --database, -d

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

    包含要从中删除表的数据库的名称。

  • --defaults-extra-file

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

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

  • --defaults-file

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

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

  • --defaults-group-suffix

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

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

  • --diskscan

    命令行格式 --diskscan

    运行磁盘扫描。

  • --help

    命令行格式 --help

    显示帮助文本并退出。

  • --login-path

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

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

  • --ndb-connectstring

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

    设置用于连接到 ndb_mgmd 的连接字符串。语法:"[nodeid=id;][host=]hostname[:port]"。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目。

  • --ndb-mgmd-host

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

    --ndb-connectstring相同。

  • --ndb-nodeid

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

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

  • --ndb-optimized-node-selection

    命令行格式 --ndb-optimized-node-selection
    移除 8.0.31

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

  • --no-defaults

    命令行格式 --no-defaults

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

  • --print-defaults

    命令行格式 --print-defaults

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

  • --transactional, -t

    使用此选项会导致删除操作作为单个事务执行。

    警告

    对于非常大的表,使用此选项可能导致集群可用的操作数量超出限制。

  • --tupscan

    运行元组扫描。

  • --usage

    命令行格式 --usage

    显示帮助文本并退出;与--help相同。

  • --version

    命令行格式 --version

    显示版本信息并退出。

在 NDB 7.6 及更早版本中,由于对 NDBT 测试库的不必要依赖,该程序在运行完成时打印 NDBT_ProgramExit - *status*,在 NDB 8.0 中已移除此依赖,消除了多余的输出。

25.5.9 ndb_desc — 描述 NDB 表

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-desc.html

ndb_desc提供了一个或多个NDB表的详细描述。

用法

ndb_desc -c *connection_string* *tbl_name* -d *db_name* [*options*]

ndb_desc -c *connection_string* *index_name* -d *db_name* -t *tbl_name*

可以在本节后面列出可与ndb_desc一起使用的其他选项。

示例输出

创建和填充 MySQL 表的语句:

USE test;

CREATE TABLE fish (
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(20) NOT NULL,
    length_mm INT NOT NULL,
    weight_gm INT NOT NULL,

    PRIMARY KEY pk (id),
    UNIQUE KEY uk (name)
) ENGINE=NDB;

INSERT INTO fish VALUES
    (NULL, 'guppy', 35, 2), (NULL, 'tuna', 2500, 150000),
    (NULL, 'shark', 3000, 110000), (NULL, 'manta ray', 1500, 50000),
    (NULL, 'grouper', 900, 125000), (NULL ,'puffer', 250, 2500);

ndb_desc的输出:

$> ./ndb_desc -c localhost fish -d test -p
-- fish --
Version: 2
Fragment type: HashMapPartition
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 4
Number of primary keys: 1
Length of frm data: 337
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
PartitionCount: 2
FragmentCount: 2
PartitionBalance: FOR_RP_BY_LDM
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options:
HashMap: DEFAULT-HASHMAP-3840-2
-- Attributes --
id Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY AUTO_INCR
name Varchar(20;latin1_swedish_ci) NOT NULL AT=SHORT_VAR ST=MEMORY DYNAMIC
length_mm Int NOT NULL AT=FIXED ST=MEMORY DYNAMIC
weight_gm Int NOT NULL AT=FIXED ST=MEMORY DYNAMIC
-- Indexes --
PRIMARY KEY(id) - UniqueHashIndex
PRIMARY(id) - OrderedIndex
uk(name) - OrderedIndex
uk$unique(name) - UniqueHashIndex
-- Per partition info --
Partition       Row count       Commit count    Frag fixed memory       Frag varsized memory    Extent_space    Free extent_space
0               2               2               32768                   32768                   0               0
1               4               4               32768                   32768                   0               0

可以通过使用它们的名称(用空格分隔)在单个调用中获取多个表的信息ndb_desc。所有表必须在同一个数据库中。

您可以使用--table(简写形式:-t)选项并将索引名称作为ndb_desc的第一个参数来获取有关特定索引的其他信息,如下所示:

$> ./ndb_desc uk -d test -t fish
-- uk --
Version: 2
Base table: fish
Number of attributes: 1
Logging: 0
Index type: OrderedIndex
Index status: Retrieved
-- Attributes --
name Varchar(20;latin1_swedish_ci) NOT NULL AT=SHORT_VAR ST=MEMORY
-- IndexTable 10/uk --
Version: 2
Fragment type: FragUndefined
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: yes
Number of attributes: 2
Number of primary keys: 1
Length of frm data: 0
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 2
ForceVarPart: 0
PartitionCount: 2
FragmentCount: 2
FragmentCountType: ONE_PER_LDM_PER_NODE
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options:
-- Attributes --
name Varchar(20;latin1_swedish_ci) NOT NULL AT=SHORT_VAR ST=MEMORY
NDB$TNODE Unsigned [64] PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
-- Indexes --
PRIMARY KEY(NDB$TNODE) - UniqueHashIndex

当以这种方式指定索引时,--extra-partition-info--extra-node-info选项不起作用。

输出中的Version列包含表的模式对象版本。有关解释此值的信息,请参阅 NDB ��式对象版本。

可以使用嵌入在CREATE TABLEALTER TABLE语句中的NDB_TABLE注释设置的三个表属性也可在ndb_desc输出中看到。表的FRAGMENT_COUNT_TYPE始终显示在FragmentCountType列中。如果将READ_ONLYFULLY_REPLICATED设置为 1,则会显示在Table options列中。您可以在mysql客户端中执行以下ALTER TABLE语句后查看此信息:

mysql> ALTER TABLE fish COMMENT='NDB_TABLE=READ_ONLY=1,FULLY_REPLICATED=1';
1 row in set, 1 warning (0.00 sec)

mysql> SHOW WARNINGS\G
+---------+------+---------------------------------------------------------------------------------------------------------+
| Level   | Code | Message                                                                                                 |
+---------+------+---------------------------------------------------------------------------------------------------------+
| Warning | 1296 | Got error 4503 'Table property is FRAGMENT_COUNT_TYPE=ONE_PER_LDM_PER_NODE but not in comment' from NDB |
+---------+------+---------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

发出警告是因为READ_ONLY=1要求表的片段计数类型为(或设置为)ONE_PER_LDM_PER_NODE_GROUP;在这种情况下,NDB会自动设置这一点。您可以使用SHOW CREATE TABLE检查ALTER TABLE语句是否产生了预期效果:

mysql> SHOW CREATE TABLE fish\G
*************************** 1\. row ***************************
       Table: fish
Create Table: CREATE TABLE `fish` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `length_mm` int(11) NOT NULL,
  `weight_gm` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk` (`name`)
) ENGINE=ndbcluster DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
COMMENT='NDB_TABLE=READ_BACKUP=1,FULLY_REPLICATED=1' 1 row in set (0.01 sec)

因为FRAGMENT_COUNT_TYPE没有被显式设置,所以在SHOW CREATE TABLE打印的注释文本中不显示其值。然而,ndb_desc显示了此属性的更新值。Table options列显示了刚刚启用的二进制属性。您可以在这里显示的输出中看到这一点(加粗的文本):

$> ./ndb_desc -c localhost fish -d test -p
-- fish --
Version: 4
Fragment type: HashMapPartition
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 4
Number of primary keys: 1
Length of frm data: 380
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
PartitionCount: 1
FragmentCount: 1
*FragmentCountType: ONE_PER_LDM_PER_NODE_GROUP*
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
*Table options: readbackup, fullyreplicated*
HashMap: DEFAULT-HASHMAP-3840-1
-- Attributes --
id Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY AUTO_INCR
name Varchar(20;latin1_swedish_ci) NOT NULL AT=SHORT_VAR ST=MEMORY DYNAMIC
length_mm Int NOT NULL AT=FIXED ST=MEMORY DYNAMIC
weight_gm Int NOT NULL AT=FIXED ST=MEMORY DYNAMIC
-- Indexes --
PRIMARY KEY(id) - UniqueHashIndex
PRIMARY(id) - OrderedIndex
uk(name) - OrderedIndex
uk$unique(name) - UniqueHashIndex
-- Per partition info --
Partition       Row count       Commit count    Frag fixed memory       Frag varsized memory    Extent_space    Free extent_space

有关这些表属性的更多信息,请参见第 15.1.20.12 节,“设置 NDB 注释选项”。

Extent_spaceFree extent_space列仅适用于具有磁盘列的NDB表;对于仅具有内存列的表,这些列始终包含值0

为了说明它们的用途,我们修改了上一个示例。首先,我们必须创建必要的磁盘数据对象,如下所示:

CREATE LOGFILE GROUP lg_1
    ADD UNDOFILE 'undo_1.log'
    INITIAL_SIZE 16M
    UNDO_BUFFER_SIZE 2M
    ENGINE NDB;

ALTER LOGFILE GROUP lg_1
    ADD UNDOFILE 'undo_2.log'
    INITIAL_SIZE 12M
    ENGINE NDB;

CREATE TABLESPACE ts_1
    ADD DATAFILE 'data_1.dat'
    USE LOGFILE GROUP lg_1
    INITIAL_SIZE 32M
    ENGINE NDB;

ALTER TABLESPACE ts_1
    ADD DATAFILE 'data_2.dat'
    INITIAL_SIZE 48M
    ENGINE NDB;

(有关刚刚显示的语句和由它们创建的对象的更多信息,请参见第 25.6.11.1 节,“NDB 集群磁盘数据对象”,以及第 15.1.16 节,“CREATE LOGFILE GROUP 语句”和第 15.1.21 节,“CREATE TABLESPACE 语句”。)

现在我们可以创建并填充一个存储了fish表中 2 列在磁盘上的版本(如果该表已存在,则首先删除之前的版本):

DROP TABLE IF EXISTS fish;

CREATE TABLE fish (
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(20) NOT NULL,
    length_mm INT NOT NULL,
    weight_gm INT NOT NULL,

    PRIMARY KEY pk (id),
    UNIQUE KEY uk (name)
) TABLESPACE ts_1 STORAGE DISK
ENGINE=NDB;

INSERT INTO fish VALUES
    (NULL, 'guppy', 35, 2), (NULL, 'tuna', 2500, 150000),
    (NULL, 'shark', 3000, 110000), (NULL, 'manta ray', 1500, 50000),
    (NULL, 'grouper', 900, 125000), (NULL ,'puffer', 250, 2500);

当针对该表的此版本运行时,ndb_desc显示以下输出:

$> ./ndb_desc -c localhost fish -d test -p
-- fish --
Version: 1
Fragment type: HashMapPartition
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 4
Number of primary keys: 1
Length of frm data: 1001
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
PartitionCount: 2
FragmentCount: 2
PartitionBalance: FOR_RP_BY_LDM
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options: readbackup
HashMap: DEFAULT-HASHMAP-3840-2
Tablespace id: 16
Tablespace: ts_1
-- Attributes --
id Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY AUTO_INCR
name Varchar(80;utf8mb4_0900_ai_ci) NOT NULL AT=SHORT_VAR ST=MEMORY
length_mm Int NOT NULL AT=FIXED ST=DISK
weight_gm Int NOT NULL AT=FIXED ST=DISK
-- Indexes --
PRIMARY KEY(id) - UniqueHashIndex
PRIMARY(id) - OrderedIndex
uk(name) - OrderedIndex
uk$unique(name) - UniqueHashIndex
-- Per partition info --
Partition       Row count       Commit count    Frag fixed memory       Frag varsized memory    Extent_space    Free extent_space
0               2               2               32768                   32768                   1048576         1044440
1               4               4               32768                   32768                   1048576         1044400

这意味着每个分区为该表从表空间分配了 1048576 字节,其中有 1044440 字节可用于额外的存储空间。换句话说,每个分区当前使用 4136 字节来存储来自该表的磁盘列的数据。Free extent_space显示的字节数仅用于存储fish表的磁盘列数据;因此,在从 Information Schema FILES表中进行选择时,它是不可见的。

从 NDB 8.0.21 开始,对于具有磁盘数据的表,Tablespace idTablespace将被显示。

对于完全复制的表,ndb_desc仅显示持有主分区片段副本的节点;仅具有副本分区副本的节点将被忽略。您可以使用mysql客户端从table_distribution_statustable_fragmentstable_infotable_replicas表中的信息来获取这样的信息,这些表位于ndbinfo数据库中。

所有可以与ndb_desc一起使用的选项都显示在下表中。表后面还有附加描述。

表 25.31 与程序 ndb_desc 一起使用的命令行选项

格式 描述 新增、弃用或移除
--auto-inc,-a 如果表有 AUTO_INCREMENT 列,则显示下一个值 新增:NDB 8.0.21
--blob-info,-b 在输出中包含 BLOB 表的分区信息。需要同时使用-p 选项 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--character-sets-dir=path 包含字符集的目录 移除:8.0.31
--connect-retries=# 放弃之前重试连接的次数 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--connect-retry-delay=# 尝试联系管理服务器之间等待的秒数 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--connect-string=connection_string,-c connection_string 与--ndb-connectstring 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--context,-x 显示表的额外信息,如数据库、模式、名称和内部 ID 新增:NDB 8.0.21
--core-file 在错误时写入核心文件;用于调试 已移除:8.0.31
--database=name,-d name 包含表的数据库名称 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--defaults-extra-file=path 在全局文件读取后读取给定文件 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--defaults-file=path 仅从给定文件中读取默认选项 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--defaults-group-suffix=string 也读取连接组与后缀连接 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--extra-node-info,-n 在输出中包含分区到数据节点的映射;需要 --extra-partition-info (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--extra-partition-info,-p 显示有关分区的信息 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--help,-? 显示帮助文本并退出 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--login-path=path 从登录文件中读取给定路径 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-connectstring=connection_string,-c connection_string 设置连接到 ndb_mgmd 的连接字符串。语法:"[nodeid=id;][host=]hostname[:port]"。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-mgmd-host=connection_string,-c connection_string 与 --ndb-connectstring 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-nodeid=# 为此节点设置节点 ID,覆盖 --ndb-connectstring 设置的任何 ID (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-optimized-node-selection 启用优化以选择事务节点。默认启用;使用 --skip-ndb-optimized-node-selection 来禁用 移除: 8.0.31
--no-defaults 不从登录文件以外的任何选项文件中读取默认选项 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--print-defaults 打印程序参数列表并退出 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--retries=#,-r # 重试连接的次数(每秒一次) (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--table=name,-t name 指定要查找索引的表。使用此选项时,-p 和 -n 没有效果且被忽略 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--unqualified,-u 使用未限定的表名 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--usage,-? 显示帮助文本并退出;与 --help 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--version,-V 显示版本信息并退出 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
格式 描述 添加、弃用或移除
  • --auto-inc, -a

    显示表的 AUTO_INCREMENT 列的下一个值,如果有的话。

  • --blob-info, -b

    包括有关从属 BLOBTEXT 列的信息。

    使用此选项还需要使用 --extra-partition-info (-p) 选项。

  • --character-sets-dir

    命令行格式 --character-sets-dir=path
    移除 8.0.31

    包含字符集的目录。

  • --connect-retries

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

    放弃之前重试连接的次数。

  • --connect-retry-delay

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

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

  • --connect-string

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

    --ndb-connectstring相同。

  • --context, -x

    显示有关表的其他上下文信息,例如模式、数据库名称、表名称和表的内部 ID。

  • --core-file

    命令行格式 --core-file
    已移除 8.0.31

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

  • --database=*db_name*, -d

    指定应在其中找到表的数据库。

  • --defaults-extra-file

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

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

  • --defaults-file

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

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

  • --defaults-group-suffix

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

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

  • --extra-node-info, -n

    包括有关表分区与它们所驻留的数据节点之间映射的信息。此信息对于验证分布感知机制和支持更有效的应用程序访问存储在 NDB 集群中的数据非常有用。

    使用此选项还需要使用--extra-partition-info (-p) 选项。

  • --extra-partition-info, -p

    打印有关表分区的附加信息。

  • --help

    命令行格式 --help

    显示帮助文本并退出。

  • --login-path

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

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

  • --ndb-connectstring

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

    设置用于连接到 ndb_mgmd 的连接字符串。语法:“[nodeid=id;][host=]hostname[:port]”。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目。

  • --ndb-mgmd-host

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

    --ndb-connectstring相同。

  • --ndb-nodeid

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

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

  • --ndb-optimized-node-selection

    命令行格式 --ndb-optimized-node-selection
    已移除 8.0.31

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

  • --no-defaults

    命令行格式 --no-defaults

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

  • --print-defaults

    命令行格式 --print-defaults

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

  • --retries=*#*, -r

    在放弃之前尝试连接这么多次。每秒进行一次连接尝试。

  • --table=*tbl_name*, -t

    指定要查找索引的表。

  • --unqualified, -u

    使用未限定的表名。

  • --usage

    命令行格式 --usage

    显示帮助文本并退出;与--help相同。

  • --version

    命令行格式 --version

    显示版本信息并退出。

输出中列出的表索引按 ID 排序。

25.5.10 ndb_drop_index — 从 NDB 表中删除索引

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-drop-index.html

ndb_drop_indexNDB表中删除指定的索引。建议您仅将此实用程序用作编写 NDB API 应用程序的示例—有关详细信息,请参见本节后面的警告。

用法

ndb_drop_index -c *connection_string* *table_name* *index* -d *db_name*

上面显示的语句从database中的table中删除名为index的索引。

可与ndb_drop_index一起使用的选项如下表所示。表后面会有附加描述。

表 25.32 与程序 ndb_drop_index 一起使用的命令行选项

格式 描述 添加、弃用或移除
[--character-sets-dir=path](https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-drop-index.html#option_ndb_drop_index_character-sets-dir) 包含字符集的目录 已移除:8.0.31
[--connect-retries=#](https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-drop-index.html#option_ndb_drop_index_connect-retries) 放弃之前重试连接的次数 (在基于 MySQL 8.0 的所有 NDB 发行版中支持)
[--connect-retry-delay=#](https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-drop-index.html#option_ndb_drop_index_connect-retry-delay) 尝试联系管理服务器之间等待的秒数 (在基于 MySQL 8.0 的所有 NDB 发行版中支持)
[--connect-string=connection_string](https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-drop-index.html#option_ndb_drop_index_connect-string),[-c connection_string](https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-drop-index.html#option_ndb_drop_index_connect-string) 与 --ndb-connectstring 相同 (在基于 MySQL 8.0 的所有 NDB 发行版中支持)
[--core-file](https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-drop-index.html#option_ndb_drop_index_core-file) 在错误时写入核心文件;用于调试 已移除:8.0.31
--database=name,-d name 表所在数据库的名称 (在基于 MySQL 8.0 的所有 NDB 发行版中支持)
[--defaults-extra-file=path](https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-drop-index.html#option_ndb_drop_index_defaults-extra-file) 在读取全局文件后读取给定文件 (在基于 MySQL 8.0 的所有 NDB 发行版中支持)
[--defaults-file=path](https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-drop-index.html#option_ndb_drop_index_defaults-file) 仅从给定文件中读取默认选项 (在基于 MySQL 8.0 的所有 NDB 发行版中支持)
[--defaults-group-suffix=string](https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-drop-index.html#option_ndb_drop_index_defaults-group-suffix) 还读取连接组与连接后缀的连接 (在基于 MySQL 8.0 的所有 NDB 发行版中支持)
--help,-? 显示帮助文本并退出 (支持基于 MySQL 8.0 的所有 NDB 版本)
--login-path=path 从登录文件中读取给定路径 (支持基于 MySQL 8.0 的所有 NDB 版本)
--ndb-connectstring=connection_string,-c connection_string 设置用于连接到 ndb_mgmd 的连接字符串。语法:“[nodeid=id;][host=]hostname[:port]”。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目 (支持基于 MySQL 8.0 的所有 NDB 版本)
--ndb-mgmd-host=connection_string,-c connection_string 与--ndb-connectstring 相同 (支持基于 MySQL 8.0 的所有 NDB 版本)
--ndb-nodeid=# 设置此节点的节点 ID,覆盖--ndb-connectstring 设置的任何 ID (支持基于 MySQL 8.0 的所有 NDB 版本)
--ndb-optimized-node-selection 启用节点选择优化以进行事务。默认启用;使用--skip-ndb-optimized-node-selection 来禁用 移除:8.0.31
--no-defaults 不要从除登录文件之外的任何选项文件中读取默认选项 (支持基于 MySQL 8.0 的所有 NDB 版本)
--print-defaults 打印程序参数列表并退出 (支持基于 MySQL 8.0 的所有 NDB 版本)
--usage,-? 显示帮助文本并退出;与--help 相同 (支持基于 MySQL 8.0 的所有 NDB 版本)
--version,-V 显示版本信息并退出 (支持基于 MySQL 8.0 的所有 NDB 版本)
格式 描述 添加、弃用或移除
  • --character-sets-dir

    命令行格式 --character-sets-dir=path
    移除 8.0.31

    包含字符集的目录。

  • --connect-retries

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

    重试连���之前放弃的次数。

  • --connect-retry-delay

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

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

  • --connect-string

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

    --ndb-connectstring相同。

  • --core-file

    命令行格式 --core-file
    已移除 8.0.31

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

  • --database, -d

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

    表所在的数据库的名称。

  • --defaults-extra-file

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

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

  • --defaults-file

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

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

  • --defaults-group-suffix

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

    也读取具有连接组的组合(group, suffix)。

  • --help

    命令行格式 --help

    显示帮助文本并退出。

  • --login-path

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

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

  • --ndb-connectstring

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

    设置连接到 ndb_mgmd 的连接字符串。语法:“[nodeid=id;][host=]hostname[:port]”。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目。

  • --ndb-mgmd-host

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

    --ndb-connectstring相同。

  • --ndb-nodeid

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

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

  • --ndb-optimized-node-selection

    命令行格式 --ndb-optimized-node-selection
    已移除 8.0.31

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

  • --no-defaults

    命令行格式 --no-defaults

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

  • --print-defaults

    命令行格式 --print-defaults

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

  • --usage

    命令行格式 --usage

    显示帮助文本并退出;与--help相同。

  • --version

    命令行格式 --version

    显示版本信息并退出。

警告

使用 NDB API 对集群表索引执行的操作对 MySQL 不可见,并使 MySQL 服务器无法使用该表。如果您使用此程序删除索引,然后尝试从 SQL 节点访问表,将会出现错误,如下所示:

$> ./ndb_drop_index -c localhost dogs ix -d ctest1
Dropping index dogs/idx...OK

$> ./mysql -u jon -p ctest1
Enter password: *******
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7 to server version: 5.7.44-ndb-7.5.32

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> SHOW TABLES;
+------------------+
| Tables_in_ctest1 |
+------------------+
| a                |
| bt1              |
| bt2              |
| dogs             |
| employees        |
| fish             |
+------------------+
6 rows in set (0.00 sec)

mysql> SELECT * FROM dogs;
ERROR 1296 (HY000): Got error 4243 'Index not found' from NDBCLUSTER

在这种情况下,使表再次对 MySQL 可用的唯一选项是删除表并重新创建它。您可以使用 SQL 语句DROP TABLEndb_drop_table实用程序(请参阅 Section 25.5.11, “ndb_drop_table — Drop an NDB Table”)来删除表。

25.5.11 ndb_drop_table — 删除 NDB 表

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-drop-table.html

ndb_drop_table 删除指定的 NDB 表。(如果尝试在使用其他存储引擎创建的表上使用此操作,会出现错误 723:表不存在。)此操作非常快速;在某些情况下,比在 NDB 表上使用 MySQL 的 DROP TABLE 语句快一个数量级。

用法

ndb_drop_table -c *connection_string* *tbl_name* -d *db_name*

可用于 ndb_drop_table 的选项显示在下表中。表后面会有额外的描述。

表 25.33 与程序 ndb_drop_table 一起使用的命令行选项

格式 描述 添加、弃用或移除
--character-sets-dir=path 包含字符集的目录 移除:8.0.31
--connect-retries=# 在放弃之前重试连接的次数 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--connect-retry-delay=# 尝试联系管理服务器之间等待的秒数 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--connect-string=connection_string,-c connection_string 与 --ndb-connectstring 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--core-file 在错误时写入核心文件;用于调试 移除:8.0.31
--database=name,-d name 表所在数据库的名称 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--defaults-extra-file=path 在全局文件读取后读取给定文件 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--defaults-file=path 仅从给定文件中读取默认选项 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--defaults-group-suffix=string 还读取 concat(group, suffix) 的组 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--help,-? 显示帮助文本并退出 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--login-path=path 从登录文件中读取给定路径 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-connectstring=connection_string,-c connection_string 设置连接到 ndb_mgmd 的连接字符串。语法:“[nodeid=id;][host=]hostname[:port]”。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-mgmd-host=connection_string,-c connection_string 与 --ndb-connectstring 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-nodeid=# 设置此节点的节点 ID,覆盖 --ndb-connectstring 设置的任何 ID (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-optimized-node-selection 启用用于事务节点选择的优化。默认情况下启用;使用 --skip-ndb-optimized-node-selection 来禁用 移除:8.0.31
--no-defaults 不从登录文件以外的任何选项文件中读取默认选项 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--print-defaults 打印程序参数列表并退出 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--usage,-? 显示帮助文本并退出;与 --help 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--version,-V 显示版本信息并退出 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
格式 描述 添加、弃用或移除
  • --character-sets-dir

    命令行格式 --character-sets-dir=path
    移除 8.0.31

    包含字符集的目录。

  • --connect-retries

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

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

  • --connect-retry-delay

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

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

  • --connect-string

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

    --ndb-connectstring 相同。

  • --core-file

    命令行格式 --core-file
    移除 8.0.31

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

  • --database, -d

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

    表所在的数据库的名称。

  • --defaults-extra-file

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

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

  • --defaults-file

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

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

  • --defaults-group-suffix

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

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

  • --help

    命令行格式 --help

    显示帮助文本并退出。

  • --login-path

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

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

  • --ndb-connectstring

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

    设置用于连接到 ndb_mgmd 的连接字符串。语法:"[nodeid=id;][host=]hostname[:port]"。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目。

  • --ndb-mgmd-host

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

    --ndb-connectstring相同。

  • --ndb-nodeid

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

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

  • --ndb-optimized-node-selection

    命令行格式 --ndb-optimized-node-selection
    已移除 8.0.31

    启用优化以选择事务节点。默认启用;使用--skip-ndb-optimized-node-selection来禁用。

  • --no-defaults

    命令行格式 --no-defaults

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

  • --print-defaults

    命令行格式 --print-defaults

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

  • --usage

    命令行格式 --usage

    显示帮助文本并退出;与--help相同。

  • --version

    命令行格式 --version

    显示版本信息并退出。

25.5.12 ndb_error_reporter — NDB Error-Reporting Utility

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-error-reporter.html

ndb_error_reporter 从数据节点和管理节点日志文件创建一个归档,可用于帮助诊断集群中的错误或其他问题。强烈建议在提交 NDB Cluster 错误报告时使用此实用程序

可用于ndb_error_reporter的选项如下表所示。表后面是附加描述。

表 25.34 与程序 ndb_error_reporter 一起使用的命令行选项

格式 描述 添加、弃用或移除
--connection-timeout=# 连接到节点时等待的秒数,超时前 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--dry-scp 禁用与远程主机的 scp;仅用于测试 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--fs 在错误报告中包含文件系统数据;可能使用大量磁盘空间 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--help,-? 显示帮助文本并退出 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--skip-nodegroup=# 跳过具有此 ID 的节点组中的所有节点 (在基于 MySQL 8.0 的所有 NDB 版本中支持)

用法

ndb_error_reporter *path/to/config-file* [*username*] [*options*]

此实用程序旨在在管理节点主机上使用,并需要管理主机配置文件的路径(通常命名为config.ini)。可选地,您可以提供能够使用 SSH 访问集群数据节点的用户的名称,以复制数据节点日志文件。ndb_error_reporter 然后将所有这些文件包含在创建的归档中,该归档位于运行它的相同目录中。归档的名称为ndb_error_report_*YYYYMMDDhhmmss*.tar.bz2,其中YYYYMMDDhhmmss是日期时间字符串。

ndb_error_reporter 还接受以下列出的选项:

  • --connection-timeout=*timeout*

    命令行格式 --connection-timeout=#
    类型 整数
    默认值 0

    在尝试连接节点时等待这么多秒,然后超时。

  • --dry-scp

    命令行格式 --dry-scp

    运行ndb_error_reporter,不使用 scp 从远程主机。仅用于测试。

  • --help

    命令行格式 --help

    显示帮助文本并退出。

  • --fs

    命令行格式 --fs

    将数据节点文件系统复制到管理主机并包含在归档中。

    因为数据节点文件系统可能非常庞大,即使经过压缩,我们要求您请不要将使用此选项创建的归档发送给 Oracle,除非有明确要求。

  • --skip-nodegroup=*nodegroup_id*

    命令行格式 --connection-timeout=#
    类型 整数
    默认值 0

    跳过所有属于具有提供的节点组 ID 的节点组的节点。

25.5.13 ndb_import — 将 CSV 数据导入到 NDB 中

dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-import.html

ndb_import是通过 NDB API 直接将 CSV 格式的数据导入到NDB中的工具,例如由mysqldump --tab生成的数据。ndb_import需要连接到 NDB 管理服务器(ndb_mgmd)才能正常工作;它不需要连接到 MySQL 服务器。

用法

ndb_import *db_name* *file_name* *options*

ndb_import需要两个参数。db_name是要导入数据的表所在的数据库的名称;file_name是要读取数据的 CSV 文件的名称;如果文件不在当前目录中,则必须包含该文件的路径。文件的名称必须与表的名称匹配;文件的扩展名(如果有)不会被考虑。ndb_import支持的选项包括用于指定字段分隔符、转义符和行终止符的选项,在本节的后续部分中进行了描述。

在 NDB 8.0.30 之前,ndb_import会拒绝从 CSV 文件中读取的任何空行。从 NDB 8.0.30 开始,当导入单列时,可以用作列值的空值,ndb_import 会像LOAD DATA语句一样处理。

ndb_import必须能够连接到 NDB 集群管理服务器;因此,在集群config.ini文件中必须有一个未使用的[api]插槽。

要复制使用不同存储引擎(如InnoDB)的现有表作为NDB表,可以使用mysql客户端执行SELECT INTO OUTFILE语句将现有表导出为 CSV 文件,然后执行CREATE TABLE LIKE语句创建具有与现有表相同结构的新表,然后在新表上执行ALTER TABLE ... ENGINE=NDB;之后,从系统 shell 中调用ndb_import将数据加载到新的NDB表中。例如,假设您已经以具有适当权限的 MySQL 用户登录,可以将名为myinnodb_table的现有InnoDB表从名为myinnodb的数据库导出到名为myndb_tableNDB表中,如下所示:

  1. mysql客户端中:

    mysql> USE myinnodb;
    
    mysql> SELECT * INTO OUTFILE '/tmp/myndb_table.csv'
         >  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\'
         >  LINES TERMINATED BY '\n'
         >  FROM myinnodbtable;
    
    mysql> CREATE DATABASE myndb;
    
    mysql> USE myndb;
    
    mysql> CREATE TABLE myndb_table LIKE myinnodb.myinnodb_table;
    
    mysql> ALTER TABLE myndb_table ENGINE=NDB;
    
    mysql> EXIT;
    Bye
    $>
    

    一旦目标数据库和表已创建,运行中的mysqld不再需要。如果愿意,可以在继续之前使用mysqladmin shutdown或其他方法停止它。

  2. 在系统 shell 中:

    # if you are not already in the MySQL bin directory:
    $> cd *path-to-mysql-bin-dir*
    
    $> ndb_import myndb /tmp/myndb_table.csv --fields-optionally-enclosed-by='"' \
        --fields-terminated-by="," --fields-escaped-by='\\'
    

    输出应类似于此处所示:

    job-1 import myndb.myndb_table from /tmp/myndb_table.csv
    job-1 [running] import myndb.myndb_table from /tmp/myndb_table.csv
    job-1 [success] import myndb.myndb_table from /tmp/myndb_table.csv
    job-1 imported 19984 rows in 0h0m9s at 2277 rows/s
    jobs summary: defined: 1 run: 1 with success: 1 with failure: 0
    $>
    

所有可与ndb_import一起使用的选项均显示在以下表中。表后面是附加描述。

表 25.35 与程序 ndb_import 一起使用的命令行选项

格式 描述 添加、弃用或移除
--abort-on-error 在任何致命错误时转储核心;用于调试 (在基于 MySQL 8.0 的所有 NDB 版本中���持)
--ai-increment=# 对于具有隐藏 PK 的表,指定自增增量。参见 mysqld (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ai-offset=# 对于具有隐藏 PK 的表,指定自增偏移量。参见 mysqld (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ai-prefetch-sz=# 对于具有隐藏 PK 的表,指定预取的自增值数量。参见 mysqld (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--character-sets-dir=path 包含字符集的目录 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--connect-retries=# 放弃之前尝试连接的次数 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--connect-retry-delay=# 尝试联系管理服务器之间等待的秒数 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--connect-string=connection_string,-c connection_string 与 --ndb-connectstring 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--connections=# 要创建的集群连接数 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--continue 作业失败时,继续下一个作业 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--core-file 在错误时编写核心文件;用于调试 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--csvopt=opts 设置典型 CSV 选项值的简写选项。请参阅语法和其他信息的文档 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--db-workers=# 每个数据节点执行数据库操作的线程数 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--defaults-extra-file=path 在读取全局文件后读取给定文件 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--defaults-file=path 仅从给定文件中读取默认选项 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--defaults-group-suffix=string 也读取连接组与连接后缀的连接 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--errins-type=name 错误插入类型,用于测试目的;使用 "list" 获取所有可能的值 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--errins-delay=# 错误插入延迟(毫秒);添加随机变化 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--fields-enclosed-by=char 与 LOAD DATA 语句的 FIELDS ENCLOSED BY 选项相同。对于 CSV 输入,这与使用--fields-optionally-enclosed-by 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--fields-escaped-by=char 与 LOAD DATA 语句的 FIELDS ESCAPED BY 选项相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--fields-optionally-enclosed-by=char 与 LOAD DATA 语句的 FIELDS OPTIONALLY ENCLOSED BY 选项相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--fields-terminated-by=char 与 LOAD DATA 语句的 FIELDS TERMINATED BY 选项相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--help,-? 显示帮助文本并退出 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--idlesleep=# 等待更多工作的毫秒数 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--idlespin=# 在 idlesleep 之前重试的次数 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ignore-lines=# 忽略输入文件中的前#行。用于跳过非数据标题 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--input-type=name 输入类型:random 或 csv (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--input-workers=# 处理输入的线程数。如果--input-type 是 csv,则必须是 2 或更多 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--keep-state 通常在作业完成时删除状态文件(除非是非空的*.rej 文件)。使用此选项会导致保留所有状态文件 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--lines-terminated-by=char 与 LOAD DATA 语句的 LINES TERMINATED BY 选项相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--login-path=path 从登录文件中读取给定路径 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--max-rows=# 仅导入此数量的输入数据行;默认为 0,即导入所有行 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--missing-ai-column='name' 表示要导入的 CSV 文件中缺少自增值。 新增:NDB 8.0.30
--monitor=# 如果有变化(状态、拒绝行、临时错误),定期打印正在运行作业的状态。值 0 禁用。值 1 打印任何看到的变化。较高的值按指数方式减少状态打印,直到达到某个预定义限制 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-connectstring=connection_string,-c connection_string 设置用于连接到 ndb_mgmd 的连接字符串。���法:“[nodeid=id;][host=]hostname[:port]”。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-mgmd-host=connection_string,-c connection_string 与--ndb-connectstring 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-nodeid=# 为此节点设置节点 ID,覆盖--ndb-connectstring 设置的任何 ID (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-optimized-node-selection 启用用于事务节点选择的优化。默认启用;使用--skip-ndb-optimized-node-selection 来禁用 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--no-asynch 将数据库操作作为批处理,在单个事务中运行 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--no-defaults 不从登录文件以外的任何选项文件中读取默认选项 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--no-hint 告诉事务协调器在选择数据节点时不要使用分发键提示 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--opbatch=# 数据库执行批处理是一组事务和操作发送到 NDB 内核。此选项限制了数据库执行批处理中的 NDB 操作(包括 blob 操作)。因此,它还限制了异步事务的数量。值 0 无效 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--opbytes=# 限制执行批处理中的字节数(默认值 0 = 无限制) (适用于基于 MySQL 8.0 的所有 NDB 版本)
--output-type=name 输出类型:ndb 为默认值,null 用于测试 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--output-workers=# 处理输出或中继数据库操作的线程数 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--pagesize=# 将 I/O 缓冲区对齐到给定大小 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--pagecnt=# I/O 缓冲区大小,以页面大小的倍数计算。CSV 输入工作程序分配双倍大小的缓冲区 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--polltimeout=# 每个轮询的超时时间用于已完成的异步事务;轮询将继续进行,直到所有轮询完成或发生错误 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--print-defaults 打印程序参数列表并退出 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--rejects=# 限制数据加载中被拒绝的行数(具有永久错误的行)。默认值为 0,表示任何被拒绝的行都会导致致命错误。超过限制的行也会添加到*.rej 文件中 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--resume 如果作业中止(临时错误,用户中断),则恢复尚未处理的行 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--rowbatch=# 限制行队列中的行数(默认值 0 = 无限制);如果--input-type 为 random,则必须为 1 或更多 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--rowbytes=# 限制行队列中的字节数(0 = 无限制) (适用于基于 MySQL 8.0 的所有 NDB 版本)
--state-dir=path 写入状态文件的位置;默认为当前目录 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--stats 将性能相关选项和内部统计信息保存在 *.sto 和 *.stt 文件中。即使未使用 --keep-state,这些文件在成功完成后也会保留 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--table=name,-t name 导入数据的目标名称;默认为输入文件的基本名称 新增:NDB 8.0.28
--tempdelay=# 在临时错误之间休眠的毫秒数 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--temperrors=# 每个执行批次中事务由于临时错误而失败的次数;0 表示任何临时错误都是致命的。这些错误不会导致任何行被写入 .rej 文件 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--usage,-? 显示帮助文本并退出;与 --help 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
[--verbose[=#]](mysql-cluster-programs-ndb-import.html#option_ndb_import_verbose),[-v [#]](mysql-cluster-programs-ndb-import.html#option_ndb_import_verbose) 启用详细输出 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--version,-V 显示版本信息并退出 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
格式 描述 添加、弃用或移除
  • --abort-on-error

    命令行格式 --abort-on-error

    在任何致命错误时转储核心;仅用于调试目的。

  • --ai-increment=#

    命令行格式 --ai-increment=#
    类型 整数
    默认值 1
    最小值 1
    最大值 4294967295

    对于具有隐藏主键的表,指定自增增量,就像 MySQL Server 中的 auto_increment_increment 系统变量一样。

  • --ai-offset=#

    命令行格式 --ai-offset=#
    类型 整数
    默认值 1
    最小值 1
    最大值 4294967295

    对于具有隐藏主键的表,指定自增偏移量。类似于auto_increment_offset系统变量。

  • --ai-prefetch-sz=#

    命令行格式 --ai-prefetch-sz=#
    类型 整数
    默认值 1024
    最小值 1
    最大值 4294967295

    对于具有隐藏主键的表,指定预取的自增值数量。类似于 MySQL 服务器中的ndb_autoincrement_prefetch_sz系统变量的行为。

  • --character-sets-dir

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

    包含字符集的目录。

  • --connections=#

    命令行格式 --connections=#
    类型 整数
    默认值 1
    最小值 1
    最大值 4294967295

    创建的集群连接数。

  • --connect-retries

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

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

  • --connect-retry-delay

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

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

  • --connect-string

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

    --ndb-connectstring相同。

  • --continue

    命令行格式 --continue

    当作业失败时,继续下一个作业。

  • --core-file

    命令行格式 --core-file

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

  • --csvopt=string

    命令行格式 --csvopt=opts
    类型 字符串
    默认值 [none]

    提供了一种设置典型 CSV 导入选项的快捷方法。此选项的参数是一个由以下一个或多个参数组成的字符串:

    • c: 字段以逗号终止

    • d: 使用默认值,除非被另一个参数覆盖

    • n: 行以\n终止

    • q: 字段可选地由双引号字符(")包围

    • r: 行以\r终止

    在 NDB 8.0.28 及更高版本中,处理此选项参数中使用的参数顺序,使得最右边的参数始终优先于已在同一参数值中使用的可能冲突的参数。这也适用于给定参数的任何重复实例。在 NDB 8.0.28 之前,参数的顺序没有任何区别,除了当同时指定 nr 时,最后出现的(最右边的)参数实际上生效。

    此选项旨在用于在难以传输转义符或引号的条件下进行测试。

  • --db-workers=#

    命令行格式 --db-workers=#
    类型 整数
    默认值 4
    最小值 1
    最大值 4294967295

    每个数据节点执行数据库操作的线程数。

  • --defaults-file

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

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

  • --defaults-extra-file

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

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

  • --defaults-group-suffix

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

    还读取连接(group,suffix)的组。

  • --errins-type=name

    命令行格式 --errins-type=name
    类型 枚举
    默认值 [none]
    有效值 stopjob``stopall``sighup``sigint``list

    错误插入类型;使用 list 作为 name 值以获取所有可能的值。此选项仅用于测试目的。

  • --errins-delay=#

    命令行格式 --errins-delay=#
    类型 整数
    默认值 1000
    最小值 0
    最大值 4294967295
    单位 毫秒

    错误插入延迟(毫秒);添加随机变化。此选项仅用于测试目的。

  • --fields-enclosed-by=char

    命令行格式 --fields-enclosed-by=char
    类型 字符串
    默认值 [none]

    这与LOAD DATA语句中的FIELDS ENCLOSED BY选项的工作方式相同,指定一个字符作为引用字段值的解释。对于 CSV 输入,这与--fields-optionally-enclosed-by相同。

  • --fields-escaped-by=name

    命令行格式 --fields-escaped-by=char
    类型 字符串
    默认值 \

    指定一个转义字符,与 SQL LOAD DATA语句中的FIELDS ESCAPED BY选项的工作方式相同。

  • --fields-optionally-enclosed-by=char

    命令行格式 --fields-optionally-enclosed-by=char
    类型 字符串
    默认值 [none]

    这与LOAD DATA语句中的FIELDS OPTIONALLY ENCLOSED BY选项的工作方式相同,指定一个字符作为可选引用字段值的解释。对于 CSV 输入,这与--fields-enclosed-by相同。

  • --fields-terminated-by=char

    命令行格式 --fields-terminated-by=char
    类型 字符串
    默认值 \t

    这与LOAD DATA语句中的FIELDS TERMINATED BY选项的工作方式相同,指定一个字符作为字段分隔符的解释。

  • --help

    命令行格式 --help

    显示帮助文本并退出。

  • --idlesleep=#

    命令行格式 --idlesleep=#
    类型 整数
    默认值 1
    最小值 1
    最大值 4294967295
    单位 毫秒

    等待更多工作执行的毫秒数。

  • --idlespin=#

    命令行格式 --idlespin=#
    类型 整数
    默认值 0
    最小值 0
    最大值 4294967295

    重试之前睡眠的次数。

  • --ignore-lines=#

    命令行格式 --ignore-lines=#
    类型 整数
    默认值 0
    最小值 0
    最大值 4294967295

    使 ndb_import 忽略输入文件的前#行。这可用于跳过不包含任何数据的文件头。

  • --input-type=name

    命令行格式 --input-type=name
    类型 枚举
    默认值 csv
    有效值 random``csv

    设置输入类型的类型。默认为 csvrandom 仅用于测试目的。

  • --input-workers=#

    命令行格式 --input-workers=#
    类型 整数
    默认值 4
    最小值 1
    最大值 4294967295

    设置处理输入的线程数。

  • --keep-state

    命令行格式 --keep-state

    默认情况下,ndb_import 在完成作业时会删除所有状态文件(除非是非空的 *.rej 文件)。指定此选项(不需要参数)可以强制程序保留所有状态文件。

  • --lines-terminated-by=name

    命令行格式 --lines-terminated-by=char
    类型 字符串
    默认值 \n

    这与 LOAD DATA 语句的 LINES TERMINATED BY 选项的工作方式相同,指定要解释为行尾的字符。

  • --log-level=#

    命令行格式 --log-level=#
    类型 整数
    默认值 0
    最小值 0
    最大值 2

    在给定级别执行内部日志记录。此选项主要用于内部和开发目的。

    在 NDB 的调试版本中,可以使用此选项将日志级别设置为最大值 4。

  • --login-path

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

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

  • --max-rows=#

    命令行格式 --max-rows=#
    类型 整数
    默认值 0
    最小值 0
    最大值 4294967295
    单位 字节

    仅导入此数量的输入数据行;默认值为 0,表示导入所有行。

  • --missing-ai-column

    命令行格式 --missing-ai-column='name'
    引入版本 8.0.30-ndb-8.0.30
    类型 布尔值
    默认值 FALSE

    当导入单个表或多个表时,可以使用此选项。使用时,表示要导入的 CSV 文件不包含任何 AUTO_INCREMENT 列的值,并且 ndb_import 应该提供这些值;如果使用了该选项且 AUTO_INCREMENT 列包含任何值,则无法继续导入操作。

  • --monitor=#

    命令行格式 --monitor=#
    类型 整数
    默认值 2
    最小值 0
    最大值 4294967295
    单位 字节

    定期打印正在运行的作业的状态,如果有变化(状态、拒绝行、临时错误)。设置为 0 以禁用此报告。设置为 1 会打印任何看到的变化。较高的值会减少此状态报告的频率。

  • --ndb-connectstring

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

    设置连接到 ndb_mgmd 的连接字符串。语法:"[nodeid=id;][host=]hostname[:port]"。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目。

  • --ndb-mgmd-host

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

    --ndb-connectstring相同。

  • --ndb-nodeid

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

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

  • --ndb-optimized-node-selection

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

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

  • --no-asynch

    命令行格式 --no-asynch

    将数据库操作作为批处理,在单个事务中运行。

  • --no-defaults

    命令行格式 --no-defaults

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

  • --no-hint

    命令行格式 --no-hint

    不要使用分布键提示来选择数据节点。

  • --opbatch=#

    命令行格式 --opbatch=#
    类型 整数
    默认值 256
    最小值 1
    最大值 4294967295
    单位 字节

    设置每个执行批次的操作数限制(包括 blob 操作),从而限制异步事务��数量。

  • --opbytes=#

    命令行格式 --opbytes=#
    类型 整数
    默认值 0
    最小值 0
    最大值 4294967295
    单位 字节

    设置每次执行批处理的字节数限制。使用 0 表示无限制。

  • --output-type=name

    命令行格式 --output-type=name
    类型 枚举
    默认值 ndb
    有效值 null

    设置输出类型。ndb是默认值。null仅用于测试。

  • --output-workers=#

    命令行格式 --output-workers=#
    类型 整数
    默认值 2
    最小值 1
    最大值 4294967295

    设置处理输出或中继数据库操作的线程数。

  • --pagesize=#

    命令行格式 --pagesize=#
    类型 整数
    默认值 4096
    最小值 1
    最大值 4294967295
    单位 字节

    对齐 I/O 缓冲区到指定大小。

  • --pagecnt=#

    命令行格式 --pagecnt=#
    类型 整数
    默认值 64
    最小值 1
    最大值 4294967295

    设置 I/O 缓冲区的大小,以页大小的倍数计算。CSV 输入工作程序分配的缓冲区大小加倍。

  • --polltimeout=#

    命令行格式 --polltimeout=#
    类型 整数
    默认值 1000
    最小值 1
    最大值 4294967295
    单位 毫秒

    设置每次轮询已完成的异步事务的超时时间;轮询将继续直到所有轮询完成,或发生错误。

  • --print-defaults

    命令行格式 --print-defaults

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

  • --rejects=#

    命令行格式 --rejects=#
    类型 整数
    默认值 0
    最小值 0
    最大值 4294967295

    限制数据加载中被拒绝的行数(具有永久错误的行)。默认值为 0,这意味着任何被拒绝的行都会导致致命错误。导致超出限制的行��添加到.rej文件中。

    此选项设置的限制在当前运行期间有效。使用--resume重新启动的运行被视为此目的上的“新”运行。

  • --resume

    命令行格式 --resume

    如果作业中止(由于临时数据库错误或用户中断),则恢复尚未处理的任何行。

  • --rowbatch=#

    命令行格式 --rowbatch=#
    类型 整数
    默认值 0
    最小值 0
    最大值 4294967295
    单位

    设置每个行队列的行数限制。使用 0 表示无限制。

  • --rowbytes=#

    命令行格式 --rowbytes=#
    类型 整数
    默认值 262144
    最小值 0
    最大值 4294967295
    单位 字节

    设置每个行队列的字节限制。使用 0 表示无限制。

  • --stats

    命令行格式 --stats

    保存与性能和其他内部统计信息相关的选项信息在名为 *.sto*.stt 的文件中。这些文件始终在成功完成时保留(即使未指定 --keep-state)。

  • --state-dir=name

    命令行格式 --state-dir=path
    类型 字符串
    默认值 .

    写入程序运行产生的状态文件(*tbl_name*.map*tbl_name*.rej*tbl_name*.res*tbl_name*.stt)的位置;默认为当前目录。

  • --table=*name*

    命令行格式 --table=name
    引入版本 8.0.28-ndb-8.0.28
    类型 字符串
    默认值 [输入文件基本名称]

    默认情况下,ndb_import 尝试将数据导入到与正在读取数据的 CSV 文件的基本名称相同的表中。从 NDB 8.0.28 开始,您可以通过使用 --table 选项(简写 -t)来覆盖表名的选择。

  • --tempdelay=#

    命令行格式 --tempdelay=#
    类型 整数
    默认值 10
    最小值 0
    最大值 4294967295
    单位 毫秒

    临时错误之间休眠的毫秒数。

  • --temperrors=#

    命令行格式 --temperrors=#
    类型 整数
    默认值 0
    最小值 0
    最大值 4294967295

    每个执行批次中由于临时错误而导致事务失败的次数。默认值为 0,这意味着任何临时错误都是致命的。临时错误不会导致任何行被添加到 .rej 文件中。

  • --verbose, -v

    命令行格式 --verbose[=#]
    类型 布尔值
    默认值 false

    启用详细输出。

  • --usage

    命令行格式 --usage

    显示帮助文本并退出;与--help相同。

  • --version

    命令行格式 --version

    显示版本信息并退出。

LOAD DATA一样,用于字段和行格式化的选项必须与用于创建 CSV 文件的选项相匹配,无论是使用SELECT INTO ... OUTFILE还是其他方式完成的。没有相当于LOAD DATA语句的STARTING WITH选项。

25.5.14 ndb_index_stat — NDB 索引统计实用程序

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-index-stat.html

ndb_index_stat提供了关于NDB表上索引的每个片段的统计信息。这包括缓存版本和年龄,每个分区的索引条目数,以及索引的内存消耗。

用法

要获取关于给定NDB表的基本索引统计信息,请按照这里显示的方式调用ndb_index_stat,将表名作为第一个参数,并紧接着指定包含此表的数据库的名称,使用--database-d)选项:

ndb_index_stat *table* -d *database*

在这个例子中,我们使用ndb_index_stat来获取关于test数据库中名为mytableNDB表的信息:

$> ndb_index_stat -d test mytable
table:City index:PRIMARY fragCount:2
sampleVersion:3 loadTime:1399585986 sampleCount:1994 keyBytes:7976
query cache: valid:1 sampleCount:1994 totalBytes:27916
times in ms: save: 7.133 sort: 1.974 sort per sample: 0.000

sampleVersion是取得统计数据的缓存的版本号。使用--update选项运行ndb_index_stat会导致 sampleVersion 递增。

loadTime显示了缓存上次更新的时间。这是自 Unix 纪元以来的秒数。

sampleCount是每个分区找到的索引条目数。您可以通过将此乘以片段数(显示为fragCount)来估算总条目数。

sampleCount可以与SHOW INDEXINFORMATION_SCHEMA.STATISTICS的基数进行比较,尽管后两者提供了整个表的视图,而ndb_index_stat提供了每个片段的平均值。

keyBytes是索引使用的字节数。在这个例子中,主键是一个整数,每个索引需要四个字节,所以在这种情况下可以按照这里显示的方式计算keyBytes

 keyBytes = sampleCount * (4 bytes per index) = 1994 * 4 = 7976

这些信息也可以使用INFORMATION_SCHEMA.COLUMNS中的相应列定义来获取(这需要一个 MySQL 服务器和一个 MySQL 客户端应用程序)。

totalBytes是表上所有索引消耗的总内存,以字节为单位。

前面示例中显示的时间是每次调用ndb_index_stat的特定时间。

--verbose选项提供一些额外的输出,如下所示:

$> ndb_index_stat -d test mytable --verbose
random seed 1337010518
connected
loop 1 of 1
table:mytable index:PRIMARY fragCount:4
sampleVersion:2 loadTime:1336751773 sampleCount:0 keyBytes:0
read stats
query cache created
query cache: valid:1 sampleCount:0 totalBytes:0
times in ms: save: 20.766 sort: 0.001
disconnected

$>

如果程序的输出为空,这可能表示尚无统计数据。要强制创建它们(或更新如果它们已经存在),请使用--update选项调用ndb_index_stat,或在mysql客户端中对表执行ANALYZE TABLE

选项

以下表格包括特定于 NDB Cluster ndb_index_stat 实用程序的选项。表后列出了附加描述。

表 25.36 与程序 ndb_index_stat 一起使用的命令行选项

格式 描述 添加、弃用���移除
--character-sets-dir=path 包含字符集的目录 移除:8.0.31
--connect-retries=# 放弃之前重试连接的次数 (支持所有基于 MySQL 8.0 的 NDB 版本)
--connect-retry-delay=# 尝试联系管理服务器之间等待的秒数 (支持所有基于 MySQL 8.0 的 NDB 版本)
--connect-string=connection_string,-c connection_string 与--ndb-connectstring 相同 (支持所有基于 MySQL 8.0 的 NDB 版本)
--core-file 在错误时写入核心文件;用于调试 移除:8.0.31
--database=name,-d name 包含表的数据库名称 (支持所有基于 MySQL 8.0 的 NDB 版本)
--defaults-extra-file=path 在全局文件读取后读取给定文件 (支持所有基于 MySQL 8.0 的 NDB 版本)
--defaults-file=path 仅从给定文件中读取默认选项 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--defaults-group-suffix=string 也读取 concat(group, suffix) 组 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--delete 删除表的索引统计信息,停止之前配置的任何自动更新 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--dump 打印查询缓存 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--help,-? 显示帮助文本并退出 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--login-path=path 从登录文件中读取给定路径 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--loops=# 设置执行给定命令的次数;默认为 0 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-connectstring=connection_string,-c connection_string 设置连接到 ndb_mgmd 的��接字符串。语法:"[nodeid=id;][host=]hostname[:port]"。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-mgmd-host=connection_string,-c connection_string 与 --ndb-connectstring 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-nodeid=# 为此节点设置节点 ID,覆盖 --ndb-connectstring 设置的任何 ID (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-optimized-node-selection 启用对事务节点选择的优化。默认启用;使用 --skip-ndb-optimized-node-selection 来禁用 移除:8.0.31
--no-defaults 不从登录文件以外的任何选项文件中读取默认选项 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--print-defaults 打印程序参数列表并退出 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--query=# 在第一个键属性上执行随机范围查询(必须为无符号整数) (适用于基于 MySQL 8.0 的所有 NDB 版本)
--sys-drop 删除 NDB 内核中的所有统计表和事件(所有统计数据都将丢失) (适用于基于 MySQL 8.0 的所有 NDB 版本)
--sys-create 在 NDB 内核中创建所有统计表和事件,如果它们尚不存在 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--sys-create-if-not-exist 在 NDB 内核中创建任何尚不存在的统计表和事件 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--sys-create-if-not-valid 在 NDB 内核中创建任何尚不存在的统计表或事件,之前会删除任何无效的表或事件 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--sys-check 验证 NDB 系统索引统计和事件表是否存在 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--sys-skip-tables 不对表应用 sys-* 选项 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--sys-skip-events 不对事件应用 sys-* 选项 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--update 更新表的索引统计信息,重新启动之前配置的任何自动更新 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--usage,-? 显示帮助文本并退出;与 --help 相同 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--verbose,-v 打开详细输出 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--version,-V 显示版本信息并退出 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
格式 描述 添加、弃用或移除
  • --character-sets-dir

    命令行格式 --character-sets-dir=path
    移除 8.0.31

    包含字符集的目录。

  • --connect-retries

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

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

  • --connect-retry-delay

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

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

  • --connect-string

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

    --ndb-connectstring 相同。

  • --core-file

    命令行格式 --core-file
    移除 8.0.31

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

  • --database=*name*, -d *name*

    命令行格式 --database=name
    类型 字符串
    默认值 [none]
    最小值
    最大值

    包含被查询表的数据库的名称。

  • --defaults-extra-file

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

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

  • --defaults-file

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

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

  • --defaults-group-suffix

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

    还读取连接组与连接后缀的连接。

  • --delete

    命令行格式 --delete

    删除给定表的索引统计信息,停止先前配置的任何自动更新。

  • --dump

    命令行格式 --dump

    转储查询缓存的内容。

  • --help

    命令行格式 --help

    显示帮助文本并退出。

  • --login-path

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

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

  • --loops=*#*

    命令行格式 --loops=#
    类型 数字
    默认值 0
    最小值 0
    最大值 MAX_INT

    重复命令此次数(用于测试)。

  • --ndb-connectstring

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

    设置用于连接到 ndb_mgmd 的连接字符串。语法:"[nodeid=id;][host=]hostname[:port]"。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目。

  • --ndb-mgmd-host

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

    --ndb-connectstring相同。

  • --ndb-nodeid

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

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

  • --ndb-optimized-node-selection

    命令行格式 --ndb-optimized-node-selection
    已移除 8.0.31

    启用优化以选择事务节点。默认启用;使用--skip-ndb-optimized-node-selection来禁用。

  • --no-defaults

    命令��格式 --no-defaults

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

  • --print-defaults

    命令行格式 --print-defaults

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

  • --query=*#*

    命令行格式 --query=#
    类型 数字
    默认值 0
    最小值 0
    最大值 MAX_INT

    对第一个键属性执行随机范围查询(必须为 int unsigned)。

  • --sys-drop

    命令行格式 --sys-drop

    删除 NDB 内核中的所有统计表和事件。这将导致所有统计数据丢失

  • --sys-create

    命令行格式 --sys-create

    在 NDB 内核中创建所有统计表和事件。仅当它们之前不存在时才有效。

  • --sys-create-if-not-exist

    命令行格式 --sys-create-if-not-exist

    在调用程序时创建任何尚不存在的 NDB 系统统计表或事件(或两者)。

  • --sys-create-if-not-valid

    命令行格式 --sys-create-if-not-valid

    在删除任何无效的统计表后,创建任何尚不存在的 NDB 系统统计表或事件。

  • --sys-check

    命令行格式 --sys-check

    验证 NDB 内核中是否存在所有必需的系统统计表和事件。

  • --sys-skip-tables

    命令行格式 --sys-skip-tables

    不要将任何--sys-*选项应用于任何统计表。

  • --sys-skip-events

    命令行格式 --sys-skip-events

    不要将任何--sys-*选项应用于任何事件。

  • --update

    命令行格式 --update

    更新给定表的索引统计信息,并重新启动先前配置的任何自动更新。

  • --usage

    命令行格式 --usage

    显示帮助文本并退出;与--help相同。

  • --verbose

    命令行格式 --verbose

    打开详细输出。

  • --version

    命令行格式 --version

    显示版本信息并退出。

ndb_index_stat 系统选项。 以下选项用于在 NDB 内核中生成和更新统计表。这些选项中的任何一个都不能与统计选项混合使用(参见 ndb_index_stat 统计选项)。

  • --sys-drop

  • --sys-create

  • --sys-create-if-not-exist

  • --sys-create-if-not-valid

  • --sys-check

  • --sys-skip-tables

  • --sys-skip-events

ndb_index_stat 统计选项。 这里列出的选项用于生成索引统计信息。它们与给定的表和数据库一起工作。它们不能与系统选项混合使用(参见 ndb_index_stat 系统选项)。

  • --database

  • --delete

  • --update

  • --dump

  • --query

25.5.15 ndb_move_data — NDB 数据复制实用程序

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-move-data.html

ndb_move_data将数据从一个 NDB 表复制到另一个。

用法

通过指定源表和目标表的名称来调用该程序;这两个表中的任何一个或两者都可以选择性地带有数据库名称。这两个表都必须使用 NDB 存储引擎。

ndb_move_data *options* *source* *target*

可与ndb_move_data一起使用的选项显示在下表中。表后面会有附加描述。

表 25.37 与程序 ndb_move_data 一起使用的命令行选项

格式 描述 添加、弃用或移除
--abort-on-error 在永久错误时转储核心(调试选项) (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--character-sets-dir=path 字符集所在目录 移除:8.0.31
--connect-retries=# 在放弃之前重试连接的次数 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--connect-retry-delay=# 尝试联系管理服务器之间等待的秒数 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--connect-string=connection_string,-c connection_string 与 --ndb-connectstring 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--core-file 在错误时写入核心文件;用于调试 移除:8.0.31
--database=name,-d name 表所在数据库的名称 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--defaults-extra-file=path 在全局文件读取后读取给定文件 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--defaults-file=path 仅从给定文件中读取默认选项 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--defaults-group-suffix=string 还读取具有 concat(group, suffix) 的组 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--drop-source 在移动所有行后删除源表 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--error-insert 插入随机临时错误(用于测试) (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--exclude-missing-columns 忽略源表或目标表中的额外列 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--help,-? 显示帮助文本并退出 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--login-path=path 从登录文件中读取给定路径 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--lossy-conversions,-l 允许属性数据在转换为较小类型时被截断 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-connectstring=connection_string,-c connection_string 设置用于连接到 ndb_mgmd 的连接字符串。语法:"[nodeid=id;][host=]hostname[:port]"。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-mgmd-host=connection_string,-c connection_string 与 --ndb-connectstring 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-nodeid=# 为此节点设置节点 ID,覆盖由 --ndb-connectstring 设置的任何 ID (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-optimized-node-selection 启用用于事务节点选择的优化。默认启用;使用 --skip-ndb-optimized-node-selection 来禁用 已移除:8.0.31
--no-defaults 不从登录文件以外的任何选项文件中读取默认选项 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--print-defaults 打印程序参数列表并退出 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--promote-attributes,-A 允许将属性数据转换为更大类型 (适用于基于 MySQL 8.0 的所有 NDB 版本)
[--staging-tries=x[,y[,z]]](mysql-cluster-programs-ndb-move-data.html#option_ndb_move_data_staging-tries) 指定临时错误的尝试次数;格式为 x[,y[,z]],其中 x=最大尝试次数(0=无限制),y=最小延迟(毫秒),z=最大延迟(毫秒) (适用于基于 MySQL 8.0 的所有 NDB 版本)
--usage,-? 显示帮助文本并退出;与 --help 相同 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--verbose 启用详细消息 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--version,-V 显示版本信息并退出 (适用于基于 MySQL 8.0 的所有 NDB 版本)
格式 描述 添加、弃用或移除
  • --abort-on-error

    命令行格式 --abort-on-error

    在永久错误时转储核心(调试选项)。

  • --character-sets-dir=name

    命令行格式 --character-sets-dir=path
    移除 8.0.31
    类型 字符串
    默认值 [none]

    存放字符集的目录。

  • --connect-retry-delay

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

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

  • --connect-retries

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

    连接失败前重试的次数。

  • --connect-string

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

    --ndb-connectstring相同。

  • --core-file

    命令行格式 --core-file
    已移除 8.0.31

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

  • --database=dbname, -d

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

    表所在的数据库名称。

  • --defaults-extra-file

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

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

  • --defaults-file

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

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

  • --defaults-group-suffix

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

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

  • --drop-source

    命令行格式 --drop-source

    在移动所有行后删除源表。

  • --error-insert

    命令行格式 --error-insert

    插入随机临时错误(测试选项)。

  • --exclude-missing-columns

    命令行格式 --exclude-missing-columns

    忽略源表或目标表中的额外列。

  • --help

    命令行格式 --help

    显示帮助文本并退出。

  • --login-path

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

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

  • --lossy-conversions, -l

    命令行格式 --lossy-conversions

    允许属性数据在转换为较小类型时被截断。

  • --ndb-connectstring

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

    设置用于连接到 ndb_mgmd 的连接字符串。语法:“[nodeid=id;][host=]hostname[:port]”。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目。

  • --ndb-mgmd-host

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

    --ndb-connectstring相同。

  • --ndb-nodeid

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

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

  • --ndb-optimized-node-selection

    命令行格式 --ndb-optimized-node-selection
    已移除 8.0.31

    启用优化以选择事务节点。默认启用;使用--skip-ndb-optimized-node-selection来禁用。

  • --no-defaults

    命令行格式 --no-defaults

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

  • --print-defaults

    命令行格式 --print-defaults

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

  • --promote-attributes, -A

    命令行格式 --promote-attributes

    允许将属性数据转换为更大的类型。

  • --staging-tries=x[,y[,z]]

    命令行格式 --staging-tries=x[,y[,z]]
    类型 字符串
    默认值 0,1000,60000

    指定在临时错误上的尝试次数。格式为 x[,y[,z]],其中 x=最大尝试次数(0=无限制),y=最小延迟(毫秒),z=最大延迟(毫秒)。

  • --usage

    命令行格式 --usage

    显示帮助文本并退出;与--help相同。

  • --verbose

    命令行格式 --verbose

    启用详细消息。

  • --version

    命令行格式 --version

    显示版本信息并退出。

25.5.16 ndb_perror — Obtain NDB Error Message Information

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-perror.html

ndb_perror显示有关 NDB 错误的信息,给定其错误代码。这包括错误消息、错误类型以及错误是永久的还是临时的。这旨在作为perror --ndb的替代品,后者不再受支持。

用法

ndb_perror [*options*] *error_code*

ndb_perror不需要访问运行中的 NDB 集群或任何节点(包括 SQL 节点)。要查看有关给定 NDB 错误的信息,请调用该程序,并将错误代码作为参数,如下所示:

$> ndb_perror 323
NDB error code 323: Invalid nodegroup id, nodegroup already existing: Permanent error: Application error

为了仅显示错误消息,请使用带有--silent选项(简写为-s)调用ndb_perror,如下所示:

$> ndb_perror -s 323
Invalid nodegroup id, nodegroup already existing: Permanent error: Application error

perror类似,ndb_perror接受多个错误代码:

$> ndb_perror 321 1001
NDB error code 321: Invalid nodegroup id: Permanent error: Application error
NDB error code 1001: Illegal connect string

ndb_perror的其他程序选项将在本节后面描述。

ndb_perror替换了不再受 NDB Cluster 支持的perror --ndb。为了在脚本和其他可能依赖于perror获取 NDB 错误信息的应用程序中更容易进行替换,ndb_perror支持自己的“虚拟”--ndb选项,不执行任何操作。

以下表格包括所有特定于 NDB Cluster 程序ndb_perror的选项。表格后面是附加描述。

表 25.38 与程序 ndb_perror 一起使用的命令行选项

格式 描述 添加、弃用或移除
--defaults-extra-file=path 在读取全局文件后读取给定文件 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--defaults-file=path 仅从给定文件中读取默认选项 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--defaults-group-suffix=string 也读取带有连接(group, suffix)的组 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--help,-? 显示帮助文本 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--login-path=path 从登录文件中读取给定路径 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--ndb 为依赖于旧版本 perror 的应用程序兼容性而存在;无任何作用 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--no-defaults 除登录文件外不从任何选项文件中读取默认选项 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--print-defaults 打印程序参数列表并退出 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--silent,-s 仅显示错误消息 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--version,-V 打印程序版本信息并退出 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--verbose,-v 冗长输出;使用 --silent 禁用 (适用于基于 MySQL 8.0 的所有 NDB 版本)
格式 描述 添加、弃用或移除

附加选项

  • --defaults-extra-file

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

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

  • --defaults-file

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

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

  • --defaults-group-suffix

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

    还读取连接(group, suffix)的组。

  • --help, -?

    命令行格式 --help

    显示程序帮助文本并退出。

  • --login-path

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

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

  • --ndb

    命令行格式 --ndb

    为了与依赖于旧版本perror的应用程序兼容,该程序使用了该程序的--ndb选项。当与ndb_perror一起使用时,该选项不起作用,并被忽略。

  • --no-defaults

    命令行格式 --no-defaults

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

  • --print-defaults

    命令行格式 --print-defaults

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

  • --silent, -s

    命令行格式 --silent

    仅显示错误消息。

  • --version, -V

    命令行格式 --version

    打印程序版本信息并退出。

  • --verbose, -v

    命令行格式 --verbose

    冗长输出;使用--silent禁用。

25.5.17 ndb_print_backup_file — 打印 NDB 备份文件内容

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-print-backup-file.html

ndb_print_backup_file 从集群备份文件中获取诊断信息。

表 25.39 与程序 ndb_print_backup_file 一起使用的命令行选项

格式 描述 新增、弃用或移除
--backup-key=key,-K password 使用此密码解密文件 新增: NDB 8.0.31
--backup-key-from-stdin 从 STDIN 安全获取解密密钥 新增: NDB 8.0.31
--backup-password=password,-P password 使用此密码解密文件 新增: NDB 8.0.22
--backup-password-from-stdin 从 STDIN 安全获取解密密码 新增: NDB 8.0.24
--control-directory-number=#,-c # 控制目录编号 新增: NDB 8.0.24
--defaults-extra-file=path 在全局文件读取后读取给定文件 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--defaults-file=path 仅从给定文件中读取默认选项 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--defaults-group-suffix=string 也读取 concat(group, suffix) 组 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--fragment-id=#,-f # 片段 ID 新增: NDB 8.0.24
--help,--usage,-h,-? 打印使用信息 新增:NDB 8.0.24
--login-path=path 从登录文件中读取给定路径 (所有基于 MySQL 8.0 的 NDB 版本都支持)
--no-defaults 不从登录文件以外的任何选项文件中读取默认选项 (所有基于 MySQL 8.0 的 NDB 版本都支持)
--no-print-rows,-u 不打印行 新增:NDB 8.0.24
--print-defaults 打印程序参数列表并退出 (所有基于 MySQL 8.0 的 NDB 版本都支持)
--print-header-words,-h 打印标题词 新增:NDB 8.0.24
--print-restored-rows 打印恢复的行 新增:NDB 8.0.24
--print-rows,-U 打印行。默认启用;使用 --no-print-rows 禁用 新增:NDB 8.0.24
--print-rows-per-page 每页打印行数 新增:NDB 8.0.24
--rowid-file=path,-n path 包含要检查的行 ID 的文件 新增:NDB 8.0.24
--show-ignored-rows,-i 显示被忽略的行 新增:NDB 8.0.24
--table-id=#,-t # 表 ID;与--print-restored rows 一起使用 添加:NDB 8.0.24
--usage,-? 显示帮助文本并退出;与--help 相同 (基于 MySQL 8.0 的所有 NDB 版本都支持)
[--verbose[=#]](mysql-cluster-programs-ndb-print-backup-file.html#option_ndb_print_backup_file_verbose),-v 详细级别 添加:NDB 8.0.24
--version,-V 显示版本信息并退出 (基于 MySQL 8.0 的所有 NDB 版本都支持)
格式 描述 添加、弃用或移除

用法

ndb_print_backup_file [-P *password*] *file_name*

file_name 是集群备份文件的名称。这可以是集群备份目录中找到的任何文件(.Data.ctl.log文件)。这些文件位于数据节点的备份目录中的子目录BACKUP-*#*下,其中#是备份的序列号。有关集群备份文件及其内容的更多信息,请参见第 25.6.8.1 节,“NDB 集群备份概念”。

ndb_print_schema_filendb_print_sys_file(以及大多数旨在在管理服务器主机上运行或连接到管理服务器的其他NDB实用程序不同)ndb_print_backup_file必须在集群数据节点上运行,因为它直接访问数据节点文件系统。由于它不使用管理服务器,因此即使管理服务器未运行,甚至当集群完全关闭时,也可以使用此实用程序。

在 NDB 8.0 中,此程序还可用于读取撤销日志文件。

选项

在 NDB 8.0.24 之前,ndb_print_backup_file仅支持-P选项。从 NDB 8.0.24���始,该程序支持许多选项,这些选项在以下列表中描述。

  • --backup-key, -K

    命令行格式 --backup-key=key
    引入版本 8.0.31-ndb-8.0.31

    指定解密加密备份所需的密钥。

  • --backup-key-from-stdin

    命令行格式 --backup-key-from-stdin
    引入版本 8.0.31-ndb-8.0.31

    允许从标准输入输入解密密钥,类似于在调用mysql时不提供密码后输入密码。

  • --backup-password

    命令行格式 --backup-password=password
    引入版本 8.0.22-ndb-8.0.22
    类型 字符串
    默认值 [无]

    指定解密加密备份所需的密码。

    从 NDB 8.0.24 开始提供此选项的长格式。

  • --backup-password-from-stdin

    命令行格式 --backup-password-from-stdin
    引入版本 8.0.24-ndb-8.0.24

    允许从标准输入输入密码,类似于在调用mysql时不提供密码后输入密码。

  • --control-directory-number

    命令行格式 --control-directory-number=#
    引入版本 8.0.24-ndb-8.0.24
    类型 整数
    默认值 0

    控制文件目录编号。与--print-restored-rows一起使用。

  • --defaults-extra-file

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

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

  • --defaults-file

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

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

  • --defaults-group-suffix

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

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

  • --fragment-id

    命令行格式 --fragment-id=#
    引入版本 8.0.24-ndb-8.0.24
    类型 整数
    默认值 0

    片段 ID。与--print-restored-rows一起使用。

  • --help

    命令行格式 --help``--usage
    引入版本 8.0.24-ndb-8.0.24

    打印程序使用信息。

  • --login-path

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

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

  • --no-defaults

    命令行格式 --no-defaults

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

  • --no-print-rows

    命令行格式 --no-print-rows
    引入版本 8.0.24-ndb-8.0.24

    不在输出中包含行。

  • --print-defaults

    命令行格式 --print-defaults

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

  • --print-header-words

    命令行格式 --print-header-words
    引入版本 8.0.24-ndb-8.0.24

    在输出中包含标题词。

  • --print-restored-rows

    命令行格式 --print-restored-rows
    引入版本 8.0.24-ndb-8.0.24

    在输出中包含恢复的行,使用文件 LCP/*c*/T*t*F*f*.ctl,其值设置如下:

    • c 是使用--control-directory-number设置的控制文件编号。

    • t 是使用--table-id设置的表 ID。

    • f 是使用--fragment-id设置的片段 ID。

  • --print-rows

    命令行格式 --print-rows
    引入版本 8.0.24-ndb-8.0.24

    打印行。此选项默认启用;要禁用它,请使用--no-print-rows

  • --print-rows-per-page

    命令行格式 --print-rows-per-page
    引入版本 8.0.24-ndb-8.0.24

    打印每页行数。

  • --rowid-file

    命令行格式 --rowid-file=path
    引入版本 8.0.24-ndb-8.0.24
    类型 文件名
    默认值 [none]

    用于检查行 ID 的文件。

  • --show-ignored-rows

    命令行格式 --show-ignored-rows
    引入版本 8.0.24-ndb-8.0.24

    显示被忽略的行。

  • --table-id

    命令行格式 --table-id=#
    引入版本 8.0.24-ndb-8.0.24
    类型 整数
    默认值 [none]

    表 ID。与--print-restored-rows一起使用。

  • --usage

    命令行格式 --usage

    显示帮助文本并退出;与--help相同。

  • --verbose

    命令行格式 --verbose[=#]
    引入版本 8.0.24-ndb-8.0.24
    类型 整数
    默认值 0

    输出的详细程度。较大的值表示增加的详细程度。

  • --version

    命令行格式 --version

    显示版本信息并退出。

25.5.18 ndb_print_file — 打印 NDB 磁盘数据文件内容

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-print-file.html

ndb_print_file 从 NDB Cluster 磁盘数据文件中获取信息。

用法

ndb_print_file [-v] [-q] *file_name*+

file_name 是 NDB Cluster 磁盘数据文件的名称。可以接受多个文件名,用空格分隔。

ndb_print_schema_filendb_print_sys_file(与大多数旨在在管理服务器主机上运行或连接到管理服务器的其他NDB实用程序不同)不同,ndb_print_file必须在 NDB Cluster 数据节点上运行,因为它直接访问数据节点文件系统。由于它不使用管理服务器,因此即使管理服务器未运行,甚至集群已完全关闭,也可以使用此实用程序。

选项

表 25.40 与程序 ndb_print_file 一起使用的命令行选项

格式 描述 新增、弃用或移除
--file-key=hex_data,-K hex_data 通过标准输入、tty 或 my.cnf 文件提供加密密钥 新增:NDB 8.0.31
--file-key-from-stdin 通过标准输入提供加密密钥 新增:NDB 8.0.31
--help,-? 显示帮助文本并退出;与--usage 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--quiet,-q 减少输出的冗长性 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--usage,-? 显示帮助文本并退出;与--help 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--verbose,-v 增加输出的详细程度 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--version,-V 显示版本信息并退出 (适用于基于 MySQL 8.0 的所有 NDB 版本)

ndb_print_file 支持以下选项:

  • --file-key, -K

    命令行格式 --file-key=hex_data
    引入版本 8.0.31-ndb-8.0.31

    stdin, tty, 或 my.cnf 文件提供文件系统加密或解密密钥。

  • --file-key-from-stdin

    命令行格式 --file-key-from-stdin
    引入版本 8.0.31-ndb-8.0.31
    类型 布尔值
    默认数值 FALSE
    有效数值 TRUE

    stdin 提供文件系统加密或解密密钥。

  • --help, -h, -?

    命令行格式 --help

    打印帮助信息并退出。

  • --quiet, -q

    命令行格式 --quiet

    抑制输出 (静默模式)。

  • --usage, -?

    命令行格式 --usage

    打印帮助信息并退出。

  • --verbose, -v

    命令行格式 --verbose

    使输出详细。

  • --version, -v

    命令行格式 --version

    打印版本信息并退出。

更多信息,请参见 第 25.6.11 节, “NDB 集群磁盘数据表”。

25.5.19 ndb_print_frag_file — 打印 NDB 片段列表文件内容

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-print-frag-file.html

ndb_print_frag_file 从集群片段列表文件中获取信息。它旨在帮助诊断数据节点重新启动时出现的问题。

用法

ndb_print_frag_file *file_name*

file_name 是集群片段列表文件的名称,与模式 S*X*.FragList 匹配,其中 X 是范围在 2-9 之间的数字,并且位于具有节点 ID nodeid 的数据节点文件系统中,位于名为 ndb_*nodeid*_fs/D*N*/DBDIH/ 的目录中,其中 N12。每个片段文件包含属于每个 NDB 表的片段记录。有关集群片段文件的更多信息,请参见 NDB 集群数据节点文件系统目录。

ndb_print_backup_file, ndb_print_sys_file, 以及 ndb_print_schema_file(与大多数旨在在管理服务器主机上运行或连接到管理服务器的其他 NDB 实用程序不同),ndb_print_frag_file 必须在集群数据节点上运行,因为它直接访问数据节点文件系统。由于它不使用管理服务器,因此此实用程序可在管理服务器未运行时使用,甚至在集群完全关闭时使用。

附加选项

无。

示例输出

$> ndb_print_frag_file /usr/local/mysqld/data/ndb_3_fs/D1/DBDIH/S2.FragList
Filename: /usr/local/mysqld/data/ndb_3_fs/D1/DBDIH/S2.FragList with size 8192
noOfPages = 1 noOfWords = 182
Table Data
----------
Num Frags: 2 NoOfReplicas: 2 hashpointer: 4294967040
kvalue: 6 mask: 0x00000000 method: HashMap
Storage is on Logged and checkpointed, survives SR
------ Fragment with FragId: 0 --------
Preferred Primary: 2 numStoredReplicas: 2 numOldStoredReplicas: 0 distKey: 0 LogPartId: 0
-------Stored Replica----------
Replica node is: 2 initialGci: 2 numCrashedReplicas = 0 nextLcpNo = 1
LcpNo[0]: maxGciCompleted: 1 maxGciStarted: 2 lcpId: 1 lcpStatus: valid
LcpNo[1]: maxGciCompleted: 0 maxGciStarted: 0 lcpId: 0 lcpStatus: invalid
-------Stored Replica----------
Replica node is: 3 initialGci: 2 numCrashedReplicas = 0 nextLcpNo = 1
LcpNo[0]: maxGciCompleted: 1 maxGciStarted: 2 lcpId: 1 lcpStatus: valid
LcpNo[1]: maxGciCompleted: 0 maxGciStarted: 0 lcpId: 0 lcpStatus: invalid
------ Fragment with FragId: 1 --------
Preferred Primary: 3 numStoredReplicas: 2 numOldStoredReplicas: 0 distKey: 0 LogPartId: 1
-------Stored Replica----------
Replica node is: 3 initialGci: 2 numCrashedReplicas = 0 nextLcpNo = 1
LcpNo[0]: maxGciCompleted: 1 maxGciStarted: 2 lcpId: 1 lcpStatus: valid
LcpNo[1]: maxGciCompleted: 0 maxGciStarted: 0 lcpId: 0 lcpStatus: invalid
-------Stored Replica----------
Replica node is: 2 initialGci: 2 numCrashedReplicas = 0 nextLcpNo = 1
LcpNo[0]: maxGciCompleted: 1 maxGciStarted: 2 lcpId: 1 lcpStatus: valid
LcpNo[1]: maxGciCompleted: 0 maxGciStarted: 0 lcpId: 0 lcpStatus: invalid

25.5.20 ndb_print_schema_file — 打印 NDB 模式文件内容

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-print-schema-file.html

ndb_print_schema_file从集群模式文件获取诊断信息。

用法

ndb_print_schema_file *file_name*

file_name 是一个集群模式文件的名称。有关集群模式文件的更多信息,请参阅 NDB Cluster Data Node File System Directory。

ndb_print_backup_filendb_print_sys_file(与大多数旨在在管理服务器主机上运行或连接到管理服务器的其他NDB实用程序不同)ndb_print_schema_file必须在集群数据节点上运行,因为它直接访问数据节点文件系统。由于它不使用管理服务器,因此此实用程序可在管理服务器未运行时使用,甚至在集群完全关闭时也可使用。

附加选项

无。

25.5.21 ndb_print_sys_file — 打印 NDB 系统文件内容

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-print-sys-file.html

ndb_print_sys_file从 NDB 集群系统文件中获取诊断信息。

用法

ndb_print_sys_file *file_name*

file_name是集群系统文件(sysfile)的名称。集群系统文件位于数据节点的数据目录(DataDir)中;此目录下系统文件的路径与模式ndb_*#*_fs/D*#*/DBDIH/P*#*.sysfile匹配。在每种情况下,#代表一个数字(不一定是相同的数字)。有关更多信息,请参见 NDB 集群数据节点文件系统目录。

ndb_print_backup_filendb_print_schema_file(与大多数旨在在管理服务器主机上运行或连接到管理服务器的其他NDB实用程序不同)ndb_print_backup_file必须在集群数据节点上运行,因为它直接访问数据节点文件系统。由于它不使用管理服务器,因此此实用程序可在管理服务器未运行时使用,甚至在集群完全关闭时也可使用。

附加选项

无。

25.5.22 ndb_redo_log_reader — 检查和打印集群重做日志的内容

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-redo-log-reader.html

读取重做日志文件,检查其中是否有错误,以人类可读的格式打印其内容,或两者兼而有之。ndb_redo_log_reader主要供 NDB Cluster 开发人员和支持人员在调试和诊断问题时使用。

该实用程序仍在开发中,其语法和行为可能会在未来的 NDB Cluster 版本中发生变化。

ndb_redo_log_reader的 C++源文件可以在目录/storage/ndb/src/kernel/blocks/dblqh/redoLogReader中找到。

可用于ndb_redo_log_reader的选项如下表所示。表后附有附加描述。

表 25.41 与程序 ndb_redo_log_reader 一起使用的命令行选项

格式 描述 新增、弃用或移除
-dump 打印转储信息 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--file-key=key,-K key 提供解密密钥 新增:NDB 8.0.31
--file-key-from-stdin 使用 stdin 提供解密密钥 新增:NDB 8.0.31
-filedescriptors 仅打印文件描述符 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--help 打印使用信息(无简短形式) (在基于 MySQL 8.0 的所有 NDB 版本中支持)
-lap 提供 lap 信息,包括最大 GCI 的开始和完成 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
-mbyte # 起始兆字节 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
-mbyteheaders 仅显示文件中每兆字节的第一页标题 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
-nocheck 不检查记录错误 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
-noprint 不打印记录 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
-page # 从此页开始 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
-pageheaders 仅显示页头 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
-pageindex # 从此页索引开始 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
-twiddle 位移转储 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
格式 描述 添加、弃用或移除

用法

ndb_redo_log_reader *file_name* [*options*]

file_name 是集群重做日志文件的名称。重做日志文件位于数据节点数据目录(DataDir)下的编号目录中;在此目录下到重做日志文件的路径与模式匹配为 ndb_*nodeid*_fs/D*#*/DBLQH/S*#*.FragLognodeid 是数据节点的节点 ID。# 的两个实例分别代表一个数字(不一定相同的数字);D 后面的数字范围为 8-39 包括 8 和 39;S 后面的数字范围根据 NoOfFragmentLogFiles 配置参数的值而变化,其默认值为 16;因此,文件名中数字的默认范围为 0-15 包括 0 和 15。更多信息,请参阅 NDB Cluster Data Node File System Directory。

要读取的文件名后面可以跟随此处列出的一个或多个选项:

  • -dump

    命令行格式 -dump

    打印转储信息。

  • --file-key, -K

    命令行格式 --file-key=key
    引入版本 8.0.31-ndb-8.0.31

    使用stdinttymy.cnf文件提供文件解密密钥。

  • --file-key-from-stdin

    命令行格式 --file-key-from-stdin
    引入版本 8.0.31-ndb-8.0.31

    使用stdin提供文件解密密钥。

  • | 命令行格式 | -filedescriptors |

  • | --- | --- |

    -filedescriptors: 仅打印文件描述符。

  • | 命令行格式 | --help |

  • | --- | --- |

    --help: 打印使用信息。

  • -lap

    命令行格式 -lap

    提供 lap 信息,包括最大 GCI 的开始和完成。

  • | 命令行格式 | -mbyte # |

  • | --- | --- |
    | 类型 | 数值型 |
    | 默认值 | 0 |
    | 最小值 | 0 |
    | 最大值 | 15 |

    -mbyte *#*: 起始兆字节。

    # 是一个范围在 0 到 15 之间的整数。

  • | 命令行格式 | -mbyteheaders |

  • | --- | --- |

    -mbyteheaders: 仅显示文件中每个兆字节的第一页页眉。

  • | 命令行格式 | -noprint |

  • | --- | --- |

    -noprint: 不打印日志文件的内容。

  • | 命令行格式 | -nocheck |

  • | --- | --- |

    -nocheck: 不检查日志文件中的错误。

  • | 命令行格式 | -page # |

  • | --- | --- |
    | 类型 | 整数型 |
    | 默认值 | 0 |
    | 最小值 | 0 |
    | 最大值 | 31 |

    -page *#*: 从这一页开始。

    # 是一个范围在 0 到 31 之间的整数。

  • | 命令行格式 | -pageheaders |

  • | --- | --- |

    -pageheaders: 仅显示页眉。

  • | 命令行格式 | -pageindex # |

  • | --- | --- |
    | 类型 | 整数型 |
    | 默认值 | 12 |
    | 最小值 | 12 |
    | 最大值 | 8191 |

    -pageindex *#*: 从这个页面索引开始。

    # 是一个范围在 12 到 8191 之间的整数。

  • -twiddle

    命令行格式 -twiddle

    位移转储。

ndb_print_backup_filendb_print_schema_file(与大多数NDB实用程序不同,这些实用程序旨在在管理服务器主机上运行或连接到管理服务器)ndb_redo_log_reader必须在集群数据节点上运行,因为它直接访问数据节点文件系统。由于它不使用管理服务器,因此即使管理服务器未运行,甚至在集群完全关闭时也可以使用此实用程序。

25.5.23 ndb_restore — 恢复 NDB 集群备份

原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-restore.html

25.5.23.1 将 NDB 备份恢复到不同版本的 NDB 集群

25.5.23.2 恢复到不同数量的数据节点

25.5.23.3 从并行备份中恢复

NDB 集群恢复程序实现为一个独立的命令行实用程序ndb_restore,通常可以在 MySQL bin 目录中找到。该程序读取备份生成的文件,并将存储的信息插入数据库。

在 NDB 7.6 及更早版本中,由于对 NDBT 测试库的不必要依赖,该程序在运行完成时打印了 NDBT_ProgramExit - *status*,在 NDB 8.0 中已经移除了这个依赖,消除了多余的输出。

ndb_restore必须针对每个由 START BACKUP 命令创建的备份文件执行一次。这等于在创建备份时集群中的数据节点数量。

注意

在使用ndb_restore之前,建议集群在单用户模式下运行,除非您要并行恢复多个数据节点。有关更多信息,请参见第 25.6.6 节,“NDB 集群单用户模式”。

可与ndb_restore一起使用的选项显示在下表中。表后面会有额外的描述。

表 25.42 与程序 ndb_restore 一起使用的命令行选项

格式 描述 添加、弃用或移除
[--allow-pk-changes[=0&#124;1]](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_allow-pk-changes) 允许更改构成表主键的列集 添加:NDB 8.0.21
--append 追加数据到制表符文件 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--backup-password=password 为使用--decrypt 解密的加密备份提供密码; 请参阅允许的值的文档 新增: NDB 8.0.22
--backup-password-from-stdin 从 STDIN 安全获取解密密码; 与--decrypt 选项一起使用 新增: NDB 8.0.24
--backup-path=path 备份文件目录的路径 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--backupid=#,-b # 恢复具有此 ID 的备份 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--character-sets-dir=path 包含字符集的目录 移除: 8.0.31
--connect=connection_string,-c connection_string --connectstring 的别名 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--connect-retries=# 放弃之前重试连接的次数 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--connect-retry-delay=# 尝试联系管理服务器之间等待的秒数 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--connect-string=connection_string,-c connection_string 与--ndb-connectstring 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--core-file 在错误时写入核心文件; 用于调试 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--decrypt 解密加密备份; 需要--backup-password 新增: NDB 8.0.22
--defaults-extra-file=path 在读取全局文件后读取给定文件 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--defaults-file=path 仅从给定文件中读取默认选项 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--defaults-group-suffix=string 还读取具有 concat(group, suffix) 的组 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--disable-indexes 导致备份中的索引被忽略;可能减少恢复数据所需的时间 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--dont-ignore-systab-0,-f 在恢复过程中不要忽略系统表;仅用于实验;不适用于生产环境 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--exclude-databases=list 要排除的一个或多个数据库的列表(包括未命名的数据库) (在基于 MySQL 8.0 的所有 NDB 版本中支持)
[--exclude-intermediate-sql-tables[=TRUE&#124;FALSE]](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_exclude-intermediate-sql-tables) 不恢复任何中间表(名称以'#sql-'为前缀);这些表是从复制 ALTER TABLE 操作中留下的;指定 FALSE 来恢复这些表 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--exclude-missing-columns 导致备份版本中缺失于数据库中表版本的列被忽略 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--exclude-missing-tables 导致备份中缺失于数据库中的表被忽略 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--exclude-tables=list 要排除的一个或多个表的列表(包括未命名的同一数据库中的表);每个表引用必须包括数据库名称 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--fields-enclosed-by=char 字段由此字符包围 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--fields-optionally-enclosed-by 字段可选择由此字符包围 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--fields-terminated-by=char 字段由此字符终止 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--help,-? 显示帮助文本并退出 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--hex 以十六进制格式打印二进制类型 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
[--ignore-extended-pk-updates[=0&#124;1]](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_ignore-extended-pk-updates) 忽略包含对现在包含在扩展主键中的列的更新的日志条目 新增:NDB 8.0.21
--include-databases=list 要恢复的一个或多个数据库的列表(排除未命名的数据库) (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--include-stored-grants 将共享用户和授权恢复到 ndb_sql_metadata 表 新增:NDB 8.0.19
--include-tables=list 要恢复的一个或多个表的列表(排除同一数据库中未命名的表);每个表引用必须包括数据库名称 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--lines-terminated-by=char 行以此字符结尾 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--login-path=path 从登录文件中读取给定路径 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--lossy-conversions,-L 在从备份中恢复数据时允许���值的有损转换(类型降级或符号更改) (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--no-binlog 如果 mysqld 已连接并使用二进制日志记录,则不记录恢复的数据 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--no-defaults 不从登录文件以外的任何选项文件中读取默认选项 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--no-restore-disk-objects,-d 不恢复与磁盘数据相关的对象 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--no-upgrade,-u 不升级尚未调整 VAR 数据大小的 varsize 属性的数组类型,并且不更改列属性 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-connectstring=connection_string,-c connection_string 设置用于连接到 ndb_mgmd 的连接字符串。语法:"[nodeid=id;][host=]hostname[:port]"。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-mgmd-host=connection_string,-c connection_string 与 --ndb-connectstring 相同 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-nodegroup-map=map,-z 指定节点组映射;未使用,不支持 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-nodeid=# 为此节点设置节点 ID,覆盖 --ndb-connectstring 设置的任何 ID (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--ndb-optimized-node-selection 启用节点选择优化以进行事务。默认启用;使用 --skip-ndb-optimized-node-selection 来禁用 移除:8.0.31
--nodeid=#,-n # 备份所在节点的 ID (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--num-slices=# 恢复时应用的切片数量 添加:NDB 8.0.20
--parallelism=#,-p # 并行事务的数量,用于恢复数据 (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--preserve-trailing-spaces,-P 允许在将固定宽度字符串类型提升为可变宽度类型时保留尾随空格(包括填充) (在基于 MySQL 8.0 的所有 NDB 版本中支持)
--print 将元数据、数据和日志打印到标准输出(等同于 --print-meta --print-data --print-log) (支持所有基于 MySQL 8.0 的 NDB 版本)
--print-data 将数据打印到标准输出 (支持所有基于 MySQL 8.0 的 NDB 版本)
--print-defaults 打印程序参数列表并退出 (支持所有基于 MySQL 8.0 的 NDB 版本)
--print-log 将日志打印到标准输出 (支持所有基于 MySQL 8.0 的 NDB 版本)
--print-meta 将元数据打印到��准输出 (支持所有基于 MySQL 8.0 的 NDB 版本)
--print-sql-log 将 SQL 日志写入标准输出 (支持所有基于 MySQL 8.0 的 NDB 版本)
--progress-frequency=# 每隔指定秒数打印还原进度状态 (支持所有基于 MySQL 8.0 的 NDB 版本)
--promote-attributes,-A 在从备份还原数据时允许属性提升 (支持所有基于 MySQL 8.0 的 NDB 版本)
--rebuild-indexes 导致在备份中找到的有序索引进行多线程重建;使用的线程数由设置 BuildIndexThreads 决定 (支持所有基于 MySQL 8.0 的 NDB 版本)
--remap-column=string 对指定列的值应用偏移量,使用指定的函数和参数。格式为[db].[tbl].[col]:[fn]:[args];详细信息请参阅文档 新增功能:NDB 8.0.21
--restore-data,-r 使用 NDB API 将表数据和日志还原到 NDB 集群 (支持所有基于 MySQL 8.0 的 NDB 版本)
--restore-epoch,-e 将 epoch 信息还原到状态表;在副本集群上用于启动复制;更新或插入具有 ID 0 的行到 mysql.ndb_apply_status (支持所有基于 MySQL 8.0 的 NDB 版本)
--restore-meta,-m 使用 NDB API 将元数据恢复到 NDB 集群 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--restore-privilege-tables 恢复之前移至 NDB 的 MySQL 权限表 废弃:NDB 8.0.16
--rewrite-database=string 恢复到不同命名的数据库;格式为 olddb,newdb (适用于基于 MySQL 8.0 的所有 NDB 版本)
--skip-broken-objects 忽略备份文件中缺失的 blob 表 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--skip-table-check,-s 在恢复过程中跳过表结构检查 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--skip-unknown-objects 导致 ndb_restore 不识别的模式对象在从较新 NDB 版本备份恢复到较旧版本时被忽略 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--slice-id=# 在按片段恢复时的片段 ID 新增:NDB 8.0.20
--tab=path,-T path 为提供的路径中的每个表创建一个制表符分隔的.txt 文件 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--timestamp-printouts{=true&#124;false} 在所有信息、错误和调试日志消息前加上时间戳 新增:NDB 8.0.33
--usage,-? 显示帮助文本并退出;与--help 相同 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--verbose=# 输出中的详细程度 (适用于基于 MySQL 8.0 的所有 NDB 版本)
--version,-V 显示版本信息并退出 (适用于基于 MySQL 8.0 的所有 NDB 版本)
[--with-apply-status](https://wiki.example.org/mysql-cluster-programs-ndb-restore.html#option_ndb_restore_with-apply-status) 还原 ndb_apply_status 表。需要--restore-data 新增:NDB 8.0.29
格式 描述 添加、弃用或移除
  • --allow-pk-changes

    命令行格式 --allow-pk-changes[=0&#124;1]
    引入版本 8.0.21-ndb-8.0.21
    类型 整数
    默认值 0
    最小值 0
    最大值 1

    当此选项设置为1时,ndb_restore允许表定义中的主键与备份中相同表的主键不同。当在不同模式版本之间备份和还原时,可能希望在一个或多个表上进行主键更改,而且执行还原操作使用 ndb_restore 比在还原表模式和数据后发出许多ALTER TABLE语句更简单或更有效。

    --allow-pk-changes支持以下主键定义的更改:

    • 扩展主键:备份中表模式中存在的非空列将成为数据库中表的主键的一部分。

      重要提示

      在扩展表的主键时,任何成为主键一部分的列在备份时不能被更新;任何由ndb_restore发现的此类更新会导致还原操作失败,即使值没有发生变化。在某些情况下,可能可以使用--ignore-extended-pk-updates选项覆盖此行为;有关此选项的更多信息,请参阅该选项的描述。

    • 缩小主键(1):备份模式中已经是表主键一部分的列不再是主键的一部分,但仍然保留在表中。

    • 缩小主键(2):备份模式中已经是表主键一部分的列将被完全从表中移除。

    这些差异可以与ndb_restore支持的其他模式差异结合使用,包括需要使用分段表的 blob 和 text 列的更改。

    典型情景中使用主键模式更改的基本步骤如下:

    1. 使用ndb_restore还原表模式--restore-meta

    2. 更改模式为所需的模式,或创建它

    3. 备份所需的模式

    4. 运行ndb_restore --disable-indexes使用上一步的备份,以删除索引和约束

    5. 运行ndb_restore --allow-pk-changes(可能还包括--ignore-extended-pk-updates--disable-indexes以及可能需要的其他选项)以恢复所有数据

    6. 运行ndb_restore --rebuild-indexes使用具有所需模式的备份,以重建索引和约束

    在扩展主键时,可能需要ndb_restore在恢复操作期间使用临时的次要唯一索引,以将旧主键映射到新主键。只有在需要将备份日志中的事件应用于具有扩展主键的表时,才会创建这样的索引。此索引命名为NDB$RESTORE_PK_MAPPING,并且在每个需要它的表上创建;如果需要,多个运行在并行的ndb_restore实例可以共享它。(在恢复过程结束时运行ndb_restore --rebuild-indexes会导致此索引被删除。)

  • --append

    命令行格式 --append

    当与--tab--print-data选项一起使用时,这会导致数据附加到具有相同名称的任何现有文件中。

  • --backup-path=dir_name

    命令行格式 --backup-path=path
    类型 目录名称
    默认值 ./

    必须提供备份目录的路径;这通过 --backup-path 选项提供给ndb_restore,并且必须包括与要恢复的备份的 ID 相对应的子目录。例如,如果数据节点的 DataDir/var/lib/mysql-cluster,那么备份目录是 /var/lib/mysql-cluster/BACKUP,备份 ID 为 3 的备份文件可以在 /var/lib/mysql-cluster/BACKUP/BACKUP-3 中找到。路径可以是绝对路径,也可以是相对于ndb_restore可执行文件所在目录的路径,并且可以选择性地加上 backup-path= 前缀。

    可以将备份恢复到与创建时不同配置的数据库。例如,假设在具有节点 ID 23 的两个存储节点的集群中创建的备份 ID 为 12 的备份,需要恢复到具有四个节点的集群中。那么必须分别在备份所在集群的每个存储节点上运行ndb_restore两次。然而,ndb_restore 不能总是将从运行不同 MySQL 版本的集群中制作的备份恢复到运行不同 MySQL 版本的集群中。有关更多信息,请参见第 25.3.7 节,“NDB 集群升级和降级”。

    重要

    无法使用较旧版本的ndb_restore恢复从较新版本的 NDB Cluster 制作的备份。可以将从较新版本的 MySQL 制作的备份恢复到较旧的集群,但必须使用较新 NDB Cluster 版本的ndb_restore的副本来执行此操作。

    例如,要将从运行 NDB Cluster 8.0.35 的集群中获取的集群备份恢复到运行 NDB Cluster 7.6.28 的集群中,必须使用随 NDB Cluster 7.6.28 发行的ndb_restore

    为了更快地恢复,可以并行恢复数据,前提是有足够数量的集群连接可用。也就是说,当并行恢复到多个节点时,必须为每个并发的ndb_restore进程在集群config.ini文件中有一个[api][mysqld]部分可用。但是,数据文件必须始终先于日志应用。

  • --backup-password=*password*

    命令行格式 --backup-password=password
    引入版本 8.0.22-ndb-8.0.22
    类型 字符串
    默认值 [none]

    此选项指定在使用--decrypt选项解密加密备份时要使用的密码。这必须是用于加密备份的相同密码。

    密码必须为 1 到 256 个字符,并且必须用单引号或双引号括起来。它可以包含 ASCII 字符代码为 32、35、38、40-91、93、95 和 97-126 的任何 ASCII 字符;换句话说,它可以使用除了!'"$%\^之外的任何可打印 ASCII 字符。

    在 MySQL 8.0.24 及更高版本中,可以省略密码,此时ndb_restore将等待从stdin提供密码,就像在使用--backup-password-from-stdin时一样。

  • --backup-password-from-stdin[=TRUE|FALSE]

    命令行格式 --backup-password-from-stdin
    引入版本 8.0.24-ndb-8.0.24

    当用于替代--backup-password时,此选项允许从系统 shell(stdin)输入备份密码,类似于在使用--password时交互地向mysql提供密码而不在命令行上提供密码时的操作。

  • --backupid=#, -b

    命令行格式 --backupid=#
    类型 数字
    默认值 none

    此选项用于指定备份的 ID 或序列号,与管理客户端在完成备份时显示的Backup *backup_id* completed消息中显示的数字相同(请参阅第 25.6.8.2 节,“使用 NDB 集群管理客户端创建备份”)。

    重要

    在恢复集群备份时,必须确保从具有相同备份 ID 的备份中恢复所有数据节点。使用来自不同备份的文件最多会导致将集群恢复到不一致状态,并且很可能完全失败。

    在 NDB 8.0 中,此选项是必需的。

  • --character-sets-dir

    命令行格式 --character-sets-dir=path
    已移除 8.0.31

    包含字符集的目录。

  • --connect, -c

    命令行格式 --connect=connection_string
    类型 字符串
    默认值 localhost:1186

    --ndb-connectstring 的别名。

  • --connect-retries

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

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

  • --connect-retry-delay

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

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

  • --connect-string

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

    --ndb-connectstring 相同。

  • --core-file

    命令行格式 --core-file

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

  • --decrypt

    命令行格式 --decrypt
    引入 8.0.22-ndb-8.0.22

    使用由 --backup-password 选项提供的密码解密加密备份。

  • --defaults-extra-file

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

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

  • --defaults-file

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

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

  • --defaults-group-suffix

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

    也读取带有 concat(group, suffix) 的组。

  • --disable-indexes

    命令行格式 --disable-indexes

    在从本机NDB备份中恢复数据时禁用索引的恢复。之后,您可以使用多线程构建索引一次性为所有表恢复索引,使用--rebuild-indexes,这应该比为非常大的表同时重建索引更快。

    在 NDB 8.0.27 及更高版本中,此选项还会删除备份中指定的任何外键。

    在 NDB 8.0.29 之前,尝试从 MySQL 访问一个NDB表,其中一个或多个索引找不到时,总是会被拒绝并显示错误4243 索引未找到。从 NDB 8.0.29 开始,MySQL 可以打开这样的表,前提是查询不使用任何受影响的索引;否则查询将被拒绝并显示ER_NOT_KEYFILE。在后一种情况下,您可以通过执行类似于以下语句的ALTER TABLE语句来暂时解决问题:

    ALTER TABLE tbl ALTER INDEX idx INVISIBLE;
    

    这会导致 MySQL 忽略表tbl上的索引idx。有关更多信息,请参阅主键和索引。

  • --dont-ignore-systab-0, -f

    命令行格式 --dont-ignore-systab-0

    通常,在恢复表数据和元数据时,ndb_restore会忽略备份中存在的NDB系统表的副本。--dont-ignore-systab-0会导致系统表被恢复。此选项仅供实验和开发使用,不建议在生产环境中使用

  • --exclude-databases=db-list

    命令行格式 --exclude-databases=list
    类型 字符串
    默认值

    逗号分隔的一个或多个不应恢复的数据库列表。

    这个选项通常与--exclude-tables结合使用;请参阅该选项的描述以获取更多信息和示例。

  • --exclude-intermediate-sql-tables[=TRUE|FALSE]

    命令行格式 --exclude-intermediate-sql-tables[=TRUE&#124;FALSE]
    类型 布尔值
    默认值 TRUE

    在执行复制ALTER TABLE操作时,mysqld会创建中间表(其名称以#sql-为前缀)。当为TRUE时,--exclude-intermediate-sql-tables选项会阻止ndb_restore从恢复这些可能残留的表。此选项默认为TRUE

  • --exclude-missing-columns

    命令行格式 --exclude-missing-columns

    可以使用此选项仅恢复选定的表列,这会导致ndb_restore忽略备份中与正在恢复的表版本中缺失的任何列。此选项适用于所有正在恢复的表。如果希望仅将此选项应用于选定的表或数据库,可以将其与本节其他地方描述的一个或多个--include-*--exclude-*选项结合使用,然后使用一组补充选项将数据恢复到其余表中。

  • --exclude-missing-tables

    命令行格式 --exclude-missing-tables

    可以使用此选项仅恢复选定的表,这会导致ndb_restore忽略备份中未在目标数据库中找到的任何表。

  • --exclude-tables=table-list

    命令行格式 --exclude-tables=list
    类型 字符串
    默认值

    列出一个或多个要排除的表;每个表引用必须包括数据库名称。通常与--exclude-databases一起使用。

    当使用--exclude-databases--exclude-tables时,仅排除选项命名的那些数据库或表;所有其他数据库和表都会被ndb_restore恢复。

    本表显示了使用--exclude-*选项(为清晰起见,可能需要的其他选项已被省略)调用ndb_restore的几种情况,以及这些选项对从 NDB Cluster 备份中恢复的影响:

    表 25.43 使用--exclude-*选项进行多次调用 ndb_restore,并这些选项对从 NDB Cluster 备份中恢复的影响。

    选项 结果
    --exclude-databases=db1 所有数据库中除了db1的所有表都会被恢复;db1中的表不会被恢复
    --exclude-databases=db1,db2(或--exclude-databases=db1 --exclude-databases=db2 所有数据库中除了db1db2的所有表都会被恢复;db1db2中的表不会被恢复
    --exclude-tables=db1.t1 除了db1中的t1之外的所有表都会被恢复;db1中的所有其他表都会被恢复;所有其他数据库中的表都会被恢复
    --exclude-tables=db1.t2,db2.t1(或--exclude-tables=db1.t2 --exclude-tables=db2.t1) 除了数据库db1中的t2和数据库db2中的表t1之外的所有表都会被恢复;db1db2中的其他表不会被恢复;所有其他数据库中的表都会被恢复

    您可以一起使用这两个选项。例如,以下操作会导致所有数据库中的所有表除了数据库db1db2以及数据库db3中的表t1t2被恢复:

    $> ndb_restore [...] --exclude-databases=db1,db2 --exclude-tables=db3.t1,db3.t2
    

    (同样,为了清晰和简洁起见,我们已经省略了示例中可能需要的其他选项。)

    您可以一起使用--include-*--exclude-*选项,但必须遵守以下规则:

    • 所有--include-*--exclude-*选项的操作是累积的。

    • 所有--include-*--exclude-*选项都按照传递给 ndb_restore 的顺序从右到左进行评估。

    • 在存在冲突选项的情况下,第一个(最右侧)选项优先。换句话说,从右到左的第一个选项(匹配给定数据库或表)“获胜”。

    例如,以下选项集导致ndb_restore从数据库db1中恢复所有表,除了db1.t1,同时不恢复来自任何其他数据库的表:

    --include-databases=db1 --exclude-tables=db1.t1
    

    然而,简单地颠倒给定选项的顺序会导致所有来自数据库db1的表被恢复(包括db1.t1,但不包括来自任何其他数据库的表),因为--include-databases选项位于最右侧,首先匹配数据库db1,因此优先于匹配db1db1中任何表的任何其他选项:

    --exclude-tables=db1.t1 --include-databases=db1
    
  • --fields-enclosed-by=char

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

    每个列值都由传递给此选项的字符串括起来(不管数据类型如何;请参阅--fields-optionally-enclosed-by的描述)。

  • --fields-optionally-enclosed-by

    命令行格式 --fields-optionally-enclosed-by
    类型 字符串
    默认值

    传递给此选项的字符串用于包含包含字符数据(如CHARVARCHARBINARYTEXTENUM)的列值。

  • --fields-terminated-by=char

    命令行格式 --fields-terminated-by=char
    类型 字符串
    默认值 \t (制表符)

    传递给此选项的字符串用于分隔列值。默认值是制表符(\t)。

  • --help

    命令行格式 --help

    显示帮助文本并退出。

  • --hex

    命令行格式 --hex

    如果使用了此选项,则所有二进制值都以十六进制格式输出。

  • --ignore-extended-pk-updates

    命令行格式 --ignore-extended-pk-updates[=0&#124;1]
    引入版本 8.0.21-ndb-8.0.21
    类型 整数
    默认值 0
    最小值 0
    最大值 1

    在使用--allow-pk-changes时,成为表主键一部分的列在备份过程中不能被更新;这些列应该保持与插入值相同的值,直到包含这些值的行被删除。如果ndb_restore在恢复备份时遇到这些列的更新,恢复将失败。因为一些应用程序在更新行时可能为所有列设置值,即使有些列的值没有改变,备份可能包含看似更新未实际修改的列的日志事件。在这种情况下,您可以将--ignore-extended-pk-updates设置为1,强制ndb_restore忽略这样的更新。

    重要

    当导致这些更新被忽略时,用户有责任确保任何成为主键一部分的列的值没有更新。

    更多信息,请参阅--allow-pk-changes的描述。

  • --include-databases=db-list

    命令行格式 --include-databases=list
    类型 字符串
    默认值

    逗号分隔的一个或多个要恢复的数据库列表。通常与--include-tables一起使用;有关更多信息和示例,请参阅该选项的描述。

  • --include-stored-grants

    命令行格式 --include-stored-grants
    引入版本 8.0.19-ndb-8.0.19

    在 NDB 8.0 中,ndb_restore默认不恢复共享用户和授权(请参阅第 25.6.13 节,“权限同步和 NDB_STORED_USER”)到ndb_sql_metadata表。指定此选项会导致它执行此操作。

  • --include-tables=table-list

    命令行格式 --include-tables=list
    类型 字符串
    默认值

    逗号分隔的要恢复的表列表;每个表引用必须包括数据库名称。

    当使用--include-databases--include-tables时,只有由该选项命名的数据库或表会被恢复;所有其他数据库和表都会被ndb_restore排除,并且不会被恢复。

    以下表显示了使用--include-*选项调用ndb_restore的几种情况(为清晰起见,省略了可能需要的其他选项),以及这些选项对从 NDB Cluster 备份中恢复的影响:

    表 25.44 使用--include-*选项调用 ndb_restore 的几种情况,以及它们对从 NDB Cluster 备份中恢复的影响。

    选项 结果
    --include-databases=db1 仅恢复数据库db1中的表;忽略所有其他数据库中的所有表
    --include-databases=db1,db2(或--include-databases=db1 --include-databases=db2 仅恢复数据库db1db2中的表;忽略所有其他数据库中的所有表
    --include-tables=db1.t1 仅恢复数据库db1中的表t1;不恢复db1中的其他表或任何其他数据库中的表
    --include-tables=db1.t2,db2.t1(或--include-tables=db1.t2 --include-tables=db2.t1 仅恢复数据库db1中的表t2和数据库db2中的表t1;不恢复db1db2或任何其他数据库中的其他表

    您还可以同时使用这两个选项。例如,以下内容将导致恢复数据库 db1db2 中的所有表,以及数据库 db3 中的表 t1t2(而不���其他数据库或表):

    $> ndb_restore [...] --include-databases=db1,db2 --include-tables=db3.t1,db3.t2
    

    (在刚刚显示的示例中,我们再次省略了其他可能需要的选项。)

    也可以仅恢复选定的数据库或来自单个数据库的选定表,而不使用任何 --include-*(或 --exclude-*)选项,使用此处显示的语法:

    ndb_restore *other_options* *db_name*,[*db_name*[,...] | *tbl_name*[,*tbl_name*][,...]]
    

    换句话说,您可以指定要恢复的以下内容之一:

    • 一个或多个数据库的所有表

    • 来自单个数据库的一个或多个表

  • --lines-terminated-by=char

    命令行格式 --lines-terminated-by=char
    类型 字符串
    默认值 \n (换行)

    指定用于结束每行输出的字符串。默认值是换行符 (\n)。

  • --login-path

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

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

  • --lossy-conversions, -L

    命令行格式 --lossy-conversions

    此选项旨在补充 --promote-attributes 选项。使用 --lossy-conversions 允许在从备份恢复数据时进行列值的有损转换(类型降级或符号更改)。除了一些例外情况外,规定降级的规则与 MySQL 复制相同;有关当前受支持的属性降级的具体类型转换信息,请参见 Section 19.5.1.9.2, “Replication of Columns Having Different Data Types”。

    从 NDB 8.0.26 开始,此选项还使得将 NULL 列恢复为 NOT NULL 成为可能。该列不得包含任何 NULL 条目;否则 ndb_restore 将停止并显示错误。

    ndb_restore 在进行有损转换期间执行的任何数据截断都会报告一次,每个属性和列一次。

  • --no-binlog

    命令行格式 --no-binlog

    此选项防止任何连接的 SQL 节点将由 ndb_restore 恢复的数据写入其二进制日志。

  • --no-restore-disk-objects, -d

    命令行格式 --no-restore-disk-objects

    此选项阻止ndb_restore恢复任何 NDB 集群磁盘数据对象,如表空间和日志文件组;有关这些内容的更多信息,请参见第 25.6.11 节,“NDB 集群磁盘数据表”。

  • --no-upgrade, -u

    命令行格式 --no-upgrade

    使用ndb_restore恢复备份时,使用旧的固定格式创建的VARCHAR列将被调整大小并重新创建为现在使用的可变宽度格式。可以通过指定--no-upgrade来覆盖此行为。

  • --ndb-connectstring

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

    为连接到 ndb_mgmd 设置连接字符串。语法:“[nodeid=id;][host=]hostname[:port]”。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目。

  • --ndb-mgmd-host

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

    --ndb-connectstring相同。

  • --ndb-nodegroup-map=map, -z

    命令行格式 --ndb-nodegroup-map=map

    用于将从一个节点组获取的备份还原到另一个节点组,但从未完全实现;不受支持。

    所有支持此选项的代码在 NDB 8.0.27 中已删除;在此版本及更高版本中,对其设置的任何值都将被忽略,该选项本身不起作用。

  • --ndb-nodeid

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

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

  • --ndb-optimized-node-selection

    命令行格式 --ndb-optimized-node-selection
    已移除 8.0.31

    启用优化以选择事务节点。默认启用;使用--skip-ndb-optimized-node-selection来禁用。

  • --no-defaults

    命令行格式 --no-defaults

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

  • --nodeid=#, -n

    命令行格式 --nodeid=#
    类型 数字
    默认值 none

    指定取备份的数据节点的节点 ID。

    在将备份恢复到数据节点数量与取备份的节点不同的集群时,此信息有助于识别要恢复到给定节点的正确文件集或文件集。 (在这种情况下,通常需要将多个文件恢复到单个数据节点。)有关更多信息和示例,请参见 Section 25.5.23.2, “Restoring to a different number of data nodes”。

    在 NDB 8.0 中,此选项是必需的。

  • --num-slices=#

    命令行格式 --num-slices=#
    引入版本 8.0.20-ndb-8.0.20
    类型 整数
    默认值 1
    最小值 1
    最大值 1024

    在按片段恢复备份时,此选项设置备份分成的片段数。这允许多个ndb_restore实例并行恢复不相交的子集,可能减少执行恢复操作所需的时间。

    片段 是给定备份中数据的子集;也就是说,它是具有相同片段 ID 的一组片段,使用 --slice-id 选项指定。这两个选项必须始终一起使用,并且由 --slice-id 设置的值必须始终小于片段数。

    ndb_restore 遇到片段并为每个片段分配一个片段计数器。在按片段恢复时,每个片段被分配一个片段 ID;此片段 ID 在 0 到片段数减 1 的范围内。对于不是BLOB表的表,确定给定片段属于哪个片段的公式如下:

    [*slice_ID*] = [*fragment_counter*] % [*number_of_slices*]
    

    对于BLOB表,不使用片段计数器;而是使用片段号,以及BLOB表的主表 ID(回想一下,NDB在内部将 BLOB 值存储在单独的表中)。在这种情况下,给定片段的片段 ID 计算如下:

    [*slice_ID*] =
    ([*main_table_ID*] + [*fragment_ID*]) % [*number_of_slices*]
    

    因此,通过N切片进行恢复意味着运行Nndb_restore实例,每个实例都带有--num-slices=*N*(以及任何其他必要选项),并且每个实例分别带有--slice-id=1--slice-id=2--slice-id=3,依此类推直到slice-id=*N*-1

    示例。 假设您想要恢复名为BACKUP-1的备份,在每个数据节点的默认目录/var/lib/mysql-cluster/BACKUP/BACKUP-3中找到,到具有节点 ID 为 1、2、3 和 4 的四个数据节点的集群。要使用五个切片执行此操作,请执行以下列表中显示的命令集:

    1. 使用ndb_restore恢复集群元数据如下所示:

      $> ndb_restore -b 1 -n 1 -m --disable-indexes --backup-path=/home/ndbuser/backups
      
    2. 恢复集群数据到数据节点,调用ndb_restore如下所示:

      $> ndb_restore -b 1 -n 1 -r --num-slices=5 --slice-id=0 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 1 -r --num-slices=5 --slice-id=1 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 1 -r --num-slices=5 --slice-id=2 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 1 -r --num-slices=5 --slice-id=3 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 1 -r --num-slices=5 --slice-id=4 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      
      $> ndb_restore -b 1 -n 2 -r --num-slices=5 --slice-id=0 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 2 -r --num-slices=5 --slice-id=1 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 2 -r --num-slices=5 --slice-id=2 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 2 -r --num-slices=5 --slice-id=3 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 2 -r --num-slices=5 --slice-id=4 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      
      $> ndb_restore -b 1 -n 3 -r --num-slices=5 --slice-id=0 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 3 -r --num-slices=5 --slice-id=1 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 3 -r --num-slices=5 --slice-id=2 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 3 -r --num-slices=5 --slice-id=3 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 3 -r --num-slices=5 --slice-id=4 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      
      $> ndb_restore -b 1 -n 4 -r --num-slices=5 --slice-id=0 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 4 -r --num-slices=5 --slice-id=1 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 4 -r --num-slices=5 --slice-id=2 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 4 -r --num-slices=5 --slice-id=3 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      $> ndb_restore -b 1 -n 4 -r --num-slices=5 --slice-id=4 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      

      所有刚刚在这一步中展示的命令可以并行执行,只要集群中有足够的连接槽位(参见--backup-path选项的描述)。

    3. 恢复索引如常,如下所示:

      $> ndb_restore -b 1 -n 1 --rebuild-indexes --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      
    4. 最后,使用以下命令恢复时代:

      $> ndb_restore -b 1 -n 1 --restore-epoch --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
      

    恢复集群数据时应使用切片,只需恢复集群数据,不需要在恢复元数据、索引或时代信息时使用--num-slices--slice-id。如果这两个选项中的任何一个或两个与控制这些内容恢复的ndb_restore选项一起使用,程序会忽略它们。

    使用--parallelism选项对恢复速度的影响与使用切片或使用多个ndb_restore实例进行并行恢复(--parallelism指定单个ndb_restore线程执行的并行事务数)是独立的,但可以与其中一个或两者一起使用。您应该注意增加--parallelism会导致ndb_restore��集群施加更大的负载;如果系统可以处理这一点,恢复应该会更快完成。

    --num-slices的值不直接取决于与硬件相关的值,如 CPU 数量或 CPU 核心数,RAM 容量等,也不取决于 LDM 的数量。

    可以在同一恢复过程中在不同的数据节点上使用不同的值来使用此选项;这样做本身不会产生任何不良影响。

  • --parallelism=#, -p

    命令行格式 --parallelism=#
    类型 数值
    默认值 128
    最小值 1
    最大值 1024

    ndb_restore使用单行事务并发应用多行。此参数确定ndb_restore实例尝试使用的并行事务(并发行数)的数量。默认值为 128;最小值为 1,最大值为 1024。

    执行插入操作的工作在涉及的数据节点的线程之间并行化。这种机制用于从.Data文件中恢复大量数据,即数据的模糊快照;它不用于构建或重建索引。更改日志是串行应用的;索引删除和构建是 DDL 操作,单独处理。在恢复的客户端端没有线程级并行性。

  • --preserve-trailing-spaces, -P

    命令行格式 --preserve-trailing-spaces

    当将固定宽度字符数据类型提升为其可变宽度等效类型时,即将CHAR列值提升为VARCHAR,或将BINARY列值提升为VARBINARY时,导致尾随空格被保留。否则,当将这些列值插入新列时,任何尾随空格都将从这些列值中删除。

    注意

    虽然你可以将CHAR列提升为VARCHAR,将BINARY列提升为VARBINARY,但不能将VARCHAR列提升为CHARVARBINARY列提升为BINARY

  • --print

    命令行格式 --print

    使ndb_restore打印所有数据、元数据和日志到stdout。等同于同时使用--print-data--print-meta--print-log选项。

    注意

    使用--print或任何--print_*选项都是执行干预运行。包括其中一个或多个这些选项会导致任何输出重定向到stdout;在这种情况下,ndb_restore 不会尝试将数据或元数据恢复到 NDB Cluster。

  • --print-data

    命令行格式 --print-data

    使ndb_restore将其输出定向到stdout。通常与--tab--fields-enclosed-by--fields-optionally-enclosed-by--fields-terminated-by--hex--append中的一个或多个一起使用。

    TEXTBLOB列值总是被截断。���些值在输出中被截断为前 256 个字节。目前在使用--print-data时无法覆盖此行为。

  • --print-defaults

    命令行格式 --print-defaults

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

  • --print-log

    命令行格式 --print-log

    使ndb_restore将其日志输出到stdout

  • --print-meta

    命令行格式 --print-meta

    将所有元数据打印到stdout

  • print-sql-log

    命令行格式 --print-sql-log

    将 SQL 语句记录到 stdout。使用该选项启用;通常此行为已禁用。在尝试记录之前,该选项会检查是否所有正在恢复的表都有明确定义的主键;只有具有 NDB 实现的��藏主键的表上的查询无法转换为有效的 SQL。

    此选项不适用于具有 BLOB 列的表。

  • --progress-frequency=N

    命令行格式 --progress-frequency=#
    类型 数值
    默认值 0
    最小值 0
    最大值 65535

    在备份进行中每 N 秒打印一次状态报告。0(默认值)不会打印任何状态报告。最大值为 65535。

  • --promote-attributes, -A

    命令行格式 --promote-attributes

    ndb_restore 支持有限的属性提升,方式与 MySQL 复制支持的方式类似;也就是说,从给定类型的列备份的数据通常可以恢复到使用“更大、类似”的类型的列。例如,从 CHAR(20) 列的数据可以恢复到声明为 VARCHAR(20)VARCHAR(30)CHAR(30) 的列;从 MEDIUMINT 列的数据可以恢复到类型为 INTBIGINT 的列。请参阅 19.5.1.9.2 节,“具有不同数据类型的列的复制”,了解目前由属性提升支持的类型转换表。

    从 NDB 8.0.26 开始,此选项还可以将 NOT NULL 列恢复为 NULL

    ndb_restore 的属性提升必须显式启用,如下所示:

    1. 准备要恢复备份的表。ndb_restore 不能用于使用与原始表定义不同的定义重新创建表;这意味着您必须手动创建表,或在恢复表元数据后但在恢复数据之前使用 ALTER TABLE 修改要提升的列。

    2. 在恢复表数据时,使用--promote-attributes选项(简写为-A)调用ndb_restore。如果不使用此选项,则不会发生属性提升;相反,恢复操作将失败并显示错误。

    在字符数据类型和TEXTBLOB之间进行转换时,只能同时执行字符类型(CHARVARCHAR)和二进制类型(BINARYVARBINARY)之间的转换。例如,你不能在同一次调用ndb_restore时将一个INT列提升为BIGINT同时将一个VARCHAR列提升为TEXT

    不支持在不同字符集之间转换TEXT列,并且明确禁止。

    在使用ndb_restore进行字符或二进制类型到TEXTBLOB的转换时,你可能会注意到它创建并使用一个或多个名为*table_name*$ST*node_id*的临时表。这些表在之后不再需要,并且通常在成功恢复后由ndb_restore删除。

  • --rebuild-indexes

    命令行格式 --rebuild-indexes

    在恢复本地NDB备份时启用有序索引的多线程重建。使用此选项由ndb_restore用于构建有序索引的线程数受BuildIndexThreads数据节点配置参数和 LDM 数的控制。

    只有在首次运行ndb_restore时才需要使用此选项;这将导致所有有序索引在恢复后续节点时重新构建,而无需再次使用--rebuild-indexes。在向数据库插入新行之前,应使用此选项;否则,在尝试重建索引时可能会插入导致唯一约束冲突的行。

    默认情况下,有序索引的构建与 LDM 的数量并行进行。在节点和系统重新启动期间执行的离线索引构建可以通过BuildIndexThreads数据节点配置参数加快速度;此参数对由ndb_restore在线执行的索引删除和重建没有影响。

    唯一索引的重建使用磁盘写入带宽进行重做日志记录和本地检查点。带宽不足可能导致重做缓冲区超载或日志超载错误。在这种情况下,您可以再次运行ndb_restore --rebuild-indexes;进程将在发生错误的地方恢复。在遇到临时错误时,也可以这样做。您可以无限次重复执行ndb_restore --rebuild-indexes;通过减少--parallelism的值,您可能能够停止此类错误。如果问题是空间不足,您可以增加重做日志的大小(FragmentLogFileSize节点配置参数),或者增加执行 LCP 的速度(MaxDiskWriteSpeed和相关参数),以便更快地释放空间。

  • --remap-column=*db*.*tbl*.*col*:*fn*:*args*

    命令行格式 --remap-column=string
    引入版本 8.0.21-ndb-8.0.21
    类型 字符串
    默认值 [none]

    --restore-data一起使用时,此选项将对指定列的值应用函数。参数字符串中的值在此处列出:

    • db: 数据库名称,在--rewrite-database执行的任何重命名之后。

    • tbl: 表名。

    • col: 要更新的列的名称。此列必须是INTBIGINT类型。该列也可以是但不需要是UNSIGNED

    • fn: 函数名称;目前,唯一支持的名称是offset

    • args: 提供给函数的参数。目前,仅支持一个参数,即offset函数要添加的偏移量的大小。支持负值。参数的大小不能超过列类型的有符号变体;例如,如果col是一个INT列,则传递给offset函数的参数的允许范围为-21474836482147483647(参见第 13.1.2 节,“整数类型(精确值) - INTEGER、INT、SMALLINT、TINYINT、MEDIUMINT、BIGINT”)。

      如果将偏移值应用于列会导致溢出或下溢,则恢复操作将失败。例如,如果列是BIGINT,并且选项尝试在列值为 4294967291 的行上应用偏移值 8,则会发生这种情况,因为4294967291 + 8 = 4294967299 > 4294967295

    当您希望将存储在多个 NDB Cluster 源实例中的数据(均使用相同模式)合并到单个目标 NDB Cluster 中时,可以使用此选项,使用 NDB 本机备份(参见第 25.6.8.2 节,“使用 NDB Cluster 管理客户端创建备份”)和ndb_restore来合并数据,其中源集群之间的主键和唯一键值重叠,并且在过程中有必要将这些值重新映射到不重叠的范围。可能还需要保留表之间的其他关系。为了满足这些要求,可以在同一次调用ndb_restore中多次使用该选项来重新映射不同表的列,如下所示:

    $> ndb_restore --restore-data --remap-column=hr.employee.id:offset:1000 \
        --remap-column=hr.manager.id:offset:1000 --remap-column=hr.firstaiders.id:offset:1000
    

    (此处未显示其他选项也可以使用。)

    --remap-column也可用于更新同一表的多个列。可以组合多个表和列。不同的偏移值也可以用于同一表的不同列,如下所示:

    $> ndb_restore --restore-data --remap-column=hr.employee.salary:offset:10000 \
        --remap-column=hr.employee.hours:offset:-10
    

    当源备份包含不应合并的重复表时,您可以通过使用--exclude-tables--exclude-databases,或者通过应用程序中的其他方式来处理这个问题。

    可以使用SHOW CREATE TABLEndb_desc工具;以及MAX()MIN()LAST_INSERT_ID()和其他 MySQL 函数来获取要合并的表的结构和其他特征的信息。

    不支持在 NDB Cluster 的不同实例之间从合并到未合并表或从未合并到合并表的更改复制。

  • --restore-data, -r

    命令行格式 --restore-data

    输出NDB表数据和日志。

  • --restore-epoch, -e

    命令行格式 --restore-epoch

    向集群复制状态表添加(或恢复)时代信息。这对于在 NDB Cluster 副本上启动复制非常有用。当使用此选项时,如果mysql.ndb_apply_status中具有id列中的0已经存在,则更新该行;如果尚不存在,则插入这样的行。(参见第 25.7.9 节,“带有 NDB Cluster 复制的 NDB Cluster 备份”。)

  • --restore-meta, -m

    命令行格式 --restore-meta

    此选项导致ndb_restore打印NDB表元数据。

    第一次运行ndb_restore恢复程序时,您还需要恢复元数据。换句话说,您必须重新创建数据库表 - 这可以通过使用--restore-meta-m)选项来完成。只需要在单个数据节点上恢复元数据;这就足以将其恢复到整个集群。

    在旧版本的 NDB 集群中,使用此选项恢复模式的表使用与新集群中的数据节点数量不同的情况下,仍然使用与原始集群相同数量的分区。在 NDB 8.0 中,当恢复元数据时,这不再是一个问题;ndb_restore现在使用目标集群的默认分区数,除非本地数据管理器线程的数量也与原始集群中的数据节点不同。

    在 NDB 8.0 中使用此选项时,建议通过设置ndb_metadata_check=OFF来禁用自动同步,直到ndb_restore完成恢复元数据,然后可以再次打开以同步在 NDB 字典中新创建的对象。

    注意

    在开始恢复备份时,集群应该有一个空数据库。(换句话说,在执行恢复操作之前,应该使用--initial启动数据节点。)

  • --restore-privilege-tables

    命令行格式 --restore-privilege-tables
    已弃用 8.0.16-ndb-8.0.16

    ndb_restore默认情况下不会恢复在 NDB 集群版本 8.0 之前创建的分布式 MySQL 权限表,该版本不支持 NDB 7.6 及更早版本中实现的分布式权限。此选项导致ndb_restore恢复这些表。

    在 NDB 8.0 中,这些表不用于访问控制;作为 MySQL 服务器升级过程的一部分,服务器在本地创建InnoDB表的副本。有关更多信息,请参阅 Section 25.3.7, “Upgrading and Downgrading NDB Cluster”以及 Section 8.2.3, “Grant Tables”。

  • --rewrite-database=olddb,newdb

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

    此选项使得可以将数据恢复到与备份中使用的名称不同的数据库。例如,如果备份的数据库名为products,则可以将其包含的数据恢复到名为inventory的数据库中,使用如下所示的选项(省略可能需要的其他选项):

    $> ndb_restore --rewrite-database=product,inventory
    

    可以在单个ndb_restore调用中多次使用该选项。因此,可以同时从名为db1的数据库恢复到名为db2的数据库,以及从名为db3的数据库恢复到名为db4的数据库,使用--rewrite-database=db1,db2 --rewrite-database=db3,db4。在多次出现--rewrite-database之间可以使用其他ndb_restore选项。

    在多个--rewrite-database选项之间发生冲突时,从左到右读取的最后一个--rewrite-database选项生效。例如,如果使用--rewrite-database=db1,db2 --rewrite-database=db1,db3,只有--rewrite-database=db1,db3会被采纳,而--rewrite-database=db1,db2会被忽略。也可以从多个数据库恢复到单个数据库,因此--rewrite-database=db1,db3 --rewrite-database=db2,db3会将数据库db1db2的所有表和数据恢复到数据库db3中。

    重要

    使用--rewrite-database从多个备份数据库恢复到单个目标数据库时,不会检查表或其他对象名称之间的冲突,并且不保证恢复行的顺序。这意味着在这种情况下,可能会覆盖行并丢失更新。

  • --skip-broken-objects

    命令行格式 --skip-broken-objects

    此选项导致ndb_restore在读取本地NDB备份时忽略损坏的表,并继续恢复任何剩余的表(未损坏的)。目前,--skip-broken-objects选项仅在缺少 blob 部分表的情况下有效。

  • --skip-table-check, -s

    命令行格式 --skip-table-check

    可以在不恢复表元数据的情况下恢复数据。默认情况下,当这样做时,ndb_restore在表数据和表模式之间发现不匹配时会失败并显示错误;此选项覆盖了该行为。

    在使用ndb_restore还原数据时,对列定义不匹配的限制有所放宽;当遇到这些类型的不匹配时,ndb_restore不像以前那样停止并报错,而是接受数据并将其插入目标表中,同时向用户发出警告,说明正在执行此操作。无论是否使用选项--skip-table-check--promote-attributes,这种列定义的差异都是以下类型:

    • 不同的COLUMN_FORMAT设置(FIXEDDYNAMICDEFAULT

    • 不同的STORAGE设置(MEMORYDISK

    • 不同的默认值

    • 不同的分发键设置

  • --skip-unknown-objects

    命令行格式 --skip-unknown-objects

    此选项导致ndb_restore在读取本地NDB备份时忽略任何它不认识的模式对象。这可用于将从运行(例如)NDB 7.6 的集群制作的备份还原到运行 NDB Cluster 7.5 的集群。

  • --slice-id=#

    命令行格式 --slice-id=#
    引入版本 8.0.20-ndb-8.0.20
    类型 整数
    默认值 0
    最小值 0
    最大值 1023

    在按片还原时,这是要还原的片的 ID。此选项始终与--num-slices一起使用,其值必须始终小于--num-slices的值。

    更多信息,请参阅本节其他地方的--num-slices的描述。

  • --tab=dir_name, -T dir_name

    命令行格式 --tab=path
    类型 目录名称

    导致--print-data创建转储文件,每个表一个文件,每个文件名为*tbl_name*.txt。它需要作为参数的是文件应该保存的目录路径;对于当前目录使用.

  • --timestamp-printouts

    命令行格式 --timestamp-printouts{=true&#124;false}
    引入版本 8.0.33-ndb-8.0.33
    类型 布尔值
    默认值 true

    导致信息、错误和调试日志消息以时间戳为前缀。

    在 NDB 8.0 中默认启用此选项。使用--timestamp-printouts=false 禁用它。

  • --usage

    命令行格式 --usage

    显示帮助文本并退出;与--help相同。

  • --verbose=#

    命令行格式 --verbose=#
    类型 数值
    默认值 1
    最小值 0
    最大值 255

    设置输出的详细程度级别。最小值为 0;最大值为 255。默认值为 1。

  • --version

    命令行格式 --version

    显示版本信息并退出。

  • --with-apply-status

    命令行格式 --with-apply-status
    引入版本 8.0.29-ndb-8.0.29

    从备份的ndb_apply_status表中恢复所有行(除了具有server_id = 0的行,该行是使用--restore-epoch生成的)。此选项要求还必须使用--restore-data

    如果备份中的ndb_apply_status表已经包含server_id = 0的行,ndb_restore --with-apply-status 将其删除。因此,我们建议在使用--with-apply-status选项调用ndb_restore后使用ndb_restore --restore-epoch。您还可以在最后一次调用ndb_restore --with-apply-status 用于恢复集群时同时使用--restore-epoch

    有关更多信息,请参阅 ndb_apply_status Table。

此实用程序的典型选项如下所示:

ndb_restore [-c *connection_string*] -n *node_id* -b *backup_id* \
      [-m] -r --backup-path=*/path/to/backup/files*

通常,在从 NDB 集群备份恢复时,ndb_restore 至少需要--nodeid(简写:-n)、--backupid(简写:-b)和--backup-path选项。

-c 选项用于指定连接字符串,告诉 ndb_restore 在哪里找到集群管理服务器(参见第 25.4.3.3 节,“NDB 集群连接字符串”)。如果不使用此选项,则ndb_restore 将尝试连接到 localhost:1186 上的管理服务器。此实用程序充当集群 API 节点,因此需要一个可用的连接“槽”来连接到集群管理服务器。这意味着在集群 config.ini 文件中必须至少有一个可供其使用的 [api][mysqld] 部分。出于这个原因,最好保留至少一个未被用于 MySQL 服务器或其他应用程序的空的 [api][mysqld] 部分(请参阅第 25.4.3.7 节,“在 NDB 集群中定义 SQL 和其他 API 节点”)。

在 NDB 8.0.22 及更高版本中,ndb_restore 可以使用 --decrypt--backup-password 解密加密备份。必须同时指定这两个选项才能执行解密操作。有关创建加密备份的信息,请参阅START BACKUP管理客户端命令的文档。

您可以通过在ndb_mgm管理客户端中使用SHOW命令来验证ndb_restore是否连接到集群。您也可以从系统 shell 中执行此操作,如下所示:

$> ndb_mgm -e "SHOW"

错误报告。 ndb_restore 报告临时和永久错误。在临时错误的情况下,它可能能够从中恢复,并在这种情况下报告恢复成功,但遇到临时错误,请查看配置

重要

使用ndb_restore来初始化用于循环复制的 NDB 集群后,作为副本的 SQL 节点上不会自动创建二进制日志,您必须手动创建。要创建二进制日志,请在运行START SLAVE之前在该 SQL 节点上发出一个SHOW TABLES语句。这是 NDB 集群中已知的问题。

posted @ 2024-06-23 16:28  绝不原创的飞龙  阅读(1)  评论(0编辑  收藏  举报