Documentation Home
MySQL 8.0 参考手册  / 第 23 章 MySQL NDB Cluster 8.0  / 23.5 NDB 集群程序  /  21.5.6 ndb_blob_tool — 检查和修复 NDB 集群表的 BLOB 和 TEXT 列

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

此工具可用于检查和删除NDB表中孤立的 BLOB 列部分,以及生成列出所有孤立部分的文件。它有时可用于诊断和修复NDB包含 BLOBTEXT列的损坏或损坏的表。

ndb_blob_tool 的基本语法如下所示:

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

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

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

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

下表显示了 可与ndb_blob_tool一起使用的选项。表后有其他说明。

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

格式 描述 添加、弃用或删除

--add-missing

编写虚拟 blob 部分以取代那些丢失的部分

添加:NDB 7.5.18,NDB 7.6.14

--character-sets-dir=path

包含字符集的目录

(支持所有基于 MySQL 5.7 的 NDB 版本)

--check-missing

检查具有内联部件但缺少部件表中的一个或多个部件的 blob

添加:NDB 7.5.18,NDB 7.6.14

--check-orphans

检查没有相应内联部分的 blob 部分

(支持所有基于 MySQL 5.7 的 NDB 版本)

--connect-retries=#

放弃前重试连接的次数

(支持所有基于 MySQL 5.7 的 NDB 版本)

--connect-retry-delay=#

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

(支持所有基于 MySQL 5.7 的 NDB 版本)

--connect-string=connection_string,

-c connection_string

与 --ndb-connectstring 相同

(支持所有基于 MySQL 5.7 的 NDB 版本)

--core-file

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

(支持所有基于 MySQL 5.7 的 NDB 版本)

--database=name,

-d name

要在其中查找表的数据库

(支持所有基于 MySQL 5.7 的 NDB 版本)

--defaults-extra-file=path

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

(支持所有基于 MySQL 5.7 的 NDB 版本)

--defaults-file=path

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

(支持所有基于 MySQL 5.7 的 NDB 版本)

--defaults-group-suffix=string

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

(支持所有基于 MySQL 5.7 的 NDB 版本)

--delete-orphans

删除没有相应内联部分的 blob 部分

(支持所有基于 MySQL 5.7 的 NDB 版本)

--dump-file=file

将孤立键写入指定文件

(支持所有基于 MySQL 5.7 的 NDB 版本)

--help,

-?

显示帮助文本并退出

(支持所有基于 MySQL 5.7 的 NDB 版本)

--login-path=path

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

(支持所有基于 MySQL 5.7 的 NDB 版本)

--ndb-connectstring=connection_string,

-c connection_string

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

(支持所有基于 MySQL 5.7 的 NDB 版本)

--ndb-mgmd-host=connection_string,

-c connection_string

与 --ndb-connectstring 相同

(支持所有基于 MySQL 5.7 的 NDB 版本)

--ndb-nodeid=#

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

(支持所有基于 MySQL 5.7 的 NDB 版本)

--ndb-optimized-node-selection

为交易节点的选择启用优化。默认启用;使用 --skip-ndb-optimized-node-selection 禁用

(支持所有基于 MySQL 5.7 的 NDB 版本)

--no-defaults

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

(支持所有基于 MySQL 5.7 的 NDB 版本)

--print-defaults

打印程序参数列表并退出

(支持所有基于 MySQL 5.7 的 NDB 版本)

--usage,

-?

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

(支持所有基于 MySQL 5.7 的 NDB 版本)

--verbose,

-v

详细输出

(支持所有基于 MySQL 5.7 的 NDB 版本)

--version,

-V

显示版本信息并退出

(支持所有基于 MySQL 5.7 的 NDB 版本)


  • --add-missing

    命令行格式 --add-missing
    介绍 5.7.29-ndb-7.6.14

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

  • --character-sets-dir

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

    包含字符集的目录。

  • --check-missing

    命令行格式 --check-missing
    介绍 5.7.29-ndb-7.6.14

    检查 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

    写入核心文件出错;在调试中使用。

  • --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 部分的表键和 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,覆盖由 设置的任何 ID --ndb-connectstring

  • --ndb-optimized-node-selection

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

    为交易节点的选择启用优化。默认启用;用于 --skip-ndb-optimized-node-selection禁用。

  • --no-defaults

    命令行格式 --no-defaults

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

  • --print-defaults

    命令行格式 --print-defaults

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

  • --usage

    命令行格式 --usage

    显示帮助文本并退出;一样 --help

  • --verbose

    命令行格式 --verbose

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

  • --version

    命令行格式 --version

    显示版本信息并退出。

例子

首先,我们使用此处显示的语句 在数据库 中 创建一个NDB表 :testCREATE 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

NDBT_ProgramExit: 0 - OK

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