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


MySQL 8.4 参考手册  /  ...  /  ndb_blob_tool — 检查和修复 NDB 集群表的 BLOB 和 TEXT 列

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

此工具可用于检查并删除 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 一起使用的所有选项。表格后有其他描述。

  • --add-missing

    命令行格式 --add-missing

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

  • --character-sets-dir

    命令行格式 --character-sets-dir=路径

    包含字符集的目录。

  • --check-missing

    命令行格式 --check-missing

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

  • --check-orphans

    命令行格式 --check-orphans

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

  • --connect-retries

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

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

  • --connect-retry-delay

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

    尝试联系管理服务器之间的等待时间(以秒为单位)。

  • --connect-string

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

    --ndb-connectstring 相同。

  • --core-file

    命令行格式 --core-file

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

  • --database=数据库名称, -d

    命令行格式 --database=名称
    类型 字符串
    默认值 [无]

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

  • --defaults-extra-file

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

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

  • --defaults-file

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

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

  • --defaults-group-suffix

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

    同时读取 concat(组,后缀) 的组。

  • --delete-orphans

    命令行格式 --delete-orphans

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

  • --dump-file=文件

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

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

  • --help

    命令行格式 --help

    显示帮助文本并退出。

  • --login-path

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

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

  • --no-login-paths

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

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

  • --ndb-connectstring

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

    设置用于连接到 ndb_mgmd 的连接字符串。语法:[nodeid=ID;][host=]主机名[:端口]]。覆盖 NDB_CONNECTSTRINGmy.cnf 中的条目。

  • --ndb-mgm-tls

    命令行格式 --ndb-mgm-tls=级别
    类型 枚举
    默认值 宽松
    有效值

    宽松

    严格

    设置连接到管理服务器所需的 TLS 支持级别;宽松严格 之一。宽松(默认)表示尝试 TLS 连接,但不要求成功;严格 表示连接需要 TLS。

  • --ndb-mgmd-host

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

    --ndb-connectstring 相同。

  • --ndb-nodeid

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

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

  • --ndb-optimized-node-selection

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

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

  • --ndb-tls-search-path

    命令行格式 --ndb-tls-search-path=列表
    类型 路径名
    默认值 (Unix) $HOME/ndb-tls
    默认值 (Windows) $HOMEDIR/ndb-tls

    指定要搜索 CA 文件的目录列表。在 Unix 平台上,目录名用冒号 (:) 分隔;在 Windows 系统上,使用分号 (;) 作为分隔符。目录引用可以是相对的,也可以是绝对的;它可以包含一个或多个环境变量,每个变量都由前缀美元符号 ($) 表示,并在使用前展开。

    搜索从最左侧命名的目录开始,从左到右进行,直到找到文件。空字符串表示空的搜索路径,这将导致所有搜索失败。由单个点 (.) 组成的字符串表示搜索路径仅限于当前工作目录。

    如果未提供搜索路径,则使用编译后的默认值。此值取决于所使用的平台:在 Windows 上,这是 \ndb-tls;在其他平台(包括 Linux)上,这是 $HOME/ndb-tls。这可以通过使用 -DWITH_NDB_TLS_SEARCH_PATH 编译 NDB 集群来覆盖。

  • --no-defaults

    命令行格式 --no-defaults

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

  • --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 节 “数据类型存储需求”