该工具可以用于检查和删除 NDB 集群表中的孤立 BLOB 列部分,也可以生成一个列出孤立部分的文件。它有时在诊断和修复损坏或损坏的 NDB 表时非常有用,其中包含 NDB
表,包括 BLOB
或 TEXT
列。
基本语法为 ndb_blob_tool 如下所示:
ndb_blob_tool [options] table [column, ...]
除非您使用 --help
选项,否则您必须指定要执行的操作,包括一个或多个选项 --check-orphans
、--delete-orphans
或 --dump-file
。这些选项将导致 ndb_blob_tool 检查孤立 BLOB 部分、删除孤立 BLOB 部分和生成一个列出孤立 BLOB 部分的文件,分别。
您必须指定要检查的表名,并且可以选择性地指定一个或多个 BLOB
或 TEXT
列的名称。如果不指定列名,则工具将检查表中的所有 BLOB
和 TEXT
列。如果需要指定数据库,请使用 --database
(-d
) 选项。
使用 --verbose
选项可以在输出中提供关于工具进度的更多信息。
所有可以与 ndb_mgmd 一起使用的选项如下表所示。每个选项的详细描述在表后面。
表 25.27 与程序 ndb_blob_tool 一起使用的命令行选项
Format | Description | Added, Deprecated, or Removed |
---|---|---|
将虚拟 blob 部分写入以取代缺失的部分 |
(在所有基于 MySQL 8.3 的 NDB 发布版本中支持) |
|
检查 blob 是否缺失一个或多个部分 |
(在所有基于 MySQL 8.3 的 NDB 发布版本中支持) |
|
检查没有对应内联部分的 blob 部分 |
(在所有基于 MySQL 8.3 的 NDB 发布版本中支持) |
|
在放弃之前尝试连接的次数 |
(在所有基于 MySQL 8.3 的 NDB 发布版本中支持) |
|
在尝试联系管理服务器之间等待的秒数 |
(在所有基于 MySQL 8.3 的 NDB 发布版本中支持) |
|
与--ndb-connectstring相同 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
要在其中查找表的数据库 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
在读取全局文件后读取给定的文件 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
仅从给定的文件中读取默认选项 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
还读取带有组后缀的组 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
删除没有对应内联部分的 blob 部分 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
将孤立键写入指定文件 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
|
显示帮助文本并退出 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
从登录文件中读取给定的路径 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
不从登录路径文件中读取登录路径 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
设置连接到 ndb_mgmd 的连接字符串。语法:"[nodeid=id;][host=]hostname[:port]"。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
ndb_mgm 客户端 TLS 要求级别 |
添加:8.3.0 |
|
与--ndb-connectstring相同 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
设置该节点的节点 ID,覆盖 --ndb-connectstring 中设置的 ID |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
包含 TLS 密钥和证书的目录列表 |
添加:8.3.0 |
|
不从任何选项文件中读取默认选项,除了登录文件 |
(在所有基于 MySQL 8.3 的 NDB 版本中支持) |
|
打印程序参数列表并退出 |
(在所有基于 MySQL 8.3 的 NDB 发布版本中支持) |
|
显示帮助文本并退出;同 --help |
(在所有基于 MySQL 8.3 的 NDB 发布版本中支持) |
|
详细输出 |
(在所有基于 MySQL 8.3 的 NDB 发布版本中支持) |
|
显示版本信息并退出 |
(在所有基于 MySQL 8.3 的 NDB 发布版本中支持) |
-
Command-Line Format --添加缺失的
对于 NDB 集群表中的每个内联部分,如果没有对应的 BLOB 部分,则写入一个 dummy BLOB 部分,长度为所需的长度,全部由空格组成。
-
Command-Line Format --字符集目录=path
包含字符集的目录。
-
Command-Line Format --检查缺失的
检查 NDB 集群表中的内联部分是否有对应的 BLOB 部分。
-
Command-Line Format --检查孤立的
检查 NDB 集群表中的 BLOB 部分是否有对应的内联部分。
-
Command-Line Format --连接重试次数=#
Type 整数 Default Value 12
Minimum Value 0
Maximum Value 12
在放弃之前重试连接的次数。
-
Command-Line Format --连接重试延迟=#
Type 整数 Default Value 5
Minimum Value 0
Maximum Value 5
在尝试联系管理服务器之间等待的秒数。
-
Command-Line Format --连接字符串=connection_string
Type 字符串 Default Value [none]
-
Command-Line Format --核心文件
在错误时写入核心文件;用于调试。
-
--数据库
,-d
Command-Line Format --数据库=name
Type 字符串 Default Value [none]
指定要在其中查找表的数据库。
-
Command-Line Format --额外默认文件=path
Type 字符串 Default Value [none]
在全局文件读取后读取给定的文件。
-
Command-Line Format --defaults-file=path
Type 字符串 Default Value [none]
仅从给定的文件中读取默认选项。
-
Command-Line Format --defaults-group-suffix=string
Type 字符串 Default Value [none]
还读取带有后缀的组。
-
Command-Line Format --delete-orphans
从 NDB 集群表中删除没有对应内联部分的 BLOB 部分。
-
Command-Line Format --dump-file=file
Type 文件名 Default Value [none]
将孤立的 BLOB 列部分的列表写入
file
。写入文件的信息包括每个孤立 BLOB 部分的表键和 BLOB 部分号。 -
Command-Line Format --help
显示帮助文本并退出。
-
Command-Line Format --login-path=path
Type 字符串 Default Value [none]
从登录文件中读取给定的路径。
-
Command-Line Format --no-login-paths
跳过从登录路径文件中读取选项。
-
Command-Line Format --ndb-connectstring=connection_string
Type 字符串 Default Value [none]
设置连接到 ndb_mgmd 的连接字符串。语法:
[nodeid=
。覆盖id
;][host=]hostname
[:port
]NDB_CONNECTSTRING
和my.cnf
中的条目。 -
Command-Line Format --ndb-mgm-tls=level
Type 枚举 Default Value relaxed
Valid Values relaxed
strict
设置连接到管理服务器所需的 TLS 支持级别;可以是
relaxed
或strict
。relaxed
(默认) 表示尝试 TLS 连接,但不要求成功:strict
表示需要 TLS 连接。 -
Command-Line Format --ndb-mgmd-host=connection_string
Type 字符串 Default Value [none]
与
--ndb-connectstring
相同。 -
Command-Line Format --ndb-nodeid=#
Type 整数 Default Value [none]
设置该节点的节点 ID,覆盖 --ndb-connectstring 中设置的 ID。
-
Command-Line Format --启用优化的节点选择
启用事务的节点选择优化。默认启用;使用
--skip-ndb-optimized-node-selection
禁用。 -
Command-Line Format --ndb-tls-search-path=列表
Type 路径名称 Default Value (Unix) $HOME/ndb-tls
Default Value (Windows) $HOMEDIR/ndb-tls
指定要搜索CA文件的目录列表。在 Unix 平台上,目录名称以冒号 (
:
) 分隔;在 Windows 系统上,分号字符 (;
) 用作分隔符。目录引用可以是相对的或绝对的,可以包含一个或多个环境变量,每个以美元符号 ($
) 开头,并在使用前展开。搜索从左到右进行,直到找到文件。空字符串表示空搜索路径,导致所有搜索失败。点 (
.
) 表示搜索路径仅限于当前工作目录。如果没有提供搜索路径,将使用编译时的默认值。该值取决于平台:在 Windows 上是
\ndb-tls
;在其他平台(包括 Linux)上是$HOME/ndb-tls
。这可以通过使用-DWITH_NDB_TLS_SEARCH_PATH
编译 NDB Cluster 来覆盖。 -
Command-Line Format --不使用默认值
不从任何选项文件中读取默认值,除了登录文件。
-
Command-Line Format --打印默认值
打印程序参数列表并退出。
-
Command-Line Format --使用帮助
显示帮助文本并退出;与 --help 相同。
-
Command-Line Format --详细信息
在工具的输出中提供关于其进度的额外信息。
-
Command-Line Format --版本信息
显示版本信息并退出。
示例
首先,我们在 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));
当使用 --检查孤儿
对该表时,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
工具报告说没有与列 c1
相关的 NDB
BLOB 列部分,即使 c1
是一个 TEXT
列。这是因为,在 NDB
表中,只有 BLOB
或 TEXT
列值的前 256 字节存储在线上,只有超出部分(如果有)才存储单独;因此,如果某一列的值都不超过 256 字节,那么 NDB
就不会为该列创建 BLOB
列部分。请参阅 第 13.7 节,“数据类型存储要求”,以获取更多信息。