此工具可用于检查和删除NDB
表中孤立的 BLOB 列部分,以及生成列出所有孤立部分的文件。它有时可用于诊断和修复NDB
包含
BLOB
或
TEXT
列的损坏或损坏的表。
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
。如果未列出任何列,则该工具适用于所有表
BLOB
和
TEXT
列。如果需要指定数据库,请使用
--database
( -d
) 选项。
该--verbose
选项在输出中提供有关工具进度的附加信息。
下表显示了 可以与ndb_mgmd一起使用的所有选项。表后有其他说明。
表 23.28 与程序 ndb_blob_tool 一起使用的命令行选项
格式 | 描述 | 添加、弃用或删除 |
---|---|---|
编写虚拟 blob 部分以取代那些丢失的部分 | 添加:NDB 8.0.20 |
|
包含字符集的目录 | 删除:8.0.31 |
|
检查具有内联部件但缺少部件表中的一个或多个部件的 blob | 添加:NDB 8.0.20 |
|
检查没有相应内联部分的 blob 部分 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
放弃前重试连接的次数 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
尝试联系管理服务器之间等待的秒数 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
与 --ndb-connectstring 相同 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
写入核心文件出错;用于调试 | 删除:8.0.31 |
|
要在其中查找表的数据库 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
读取全局文件后读取给定文件 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
仅从给定文件中读取默认选项 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
还阅读带有 concat(group, suffix) 的组 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
删除没有相应内联部分的 blob 部分 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
将孤立键写入指定文件 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
显示帮助文本并退出 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
从登录文件中读取给定路径 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
设置用于连接到 ndb_mgmd 的连接字符串。语法:“[nodeid=id;][host=]hostname[:port]”。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
与 --ndb-connectstring 相同 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
为此节点设置节点 ID,覆盖 --ndb-connectstring 设置的任何 ID | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
为交易节点的选择启用优化。默认启用;使用 --skip-ndb-optimized-node-selection 禁用 | 删除:8.0.31 |
|
不要从登录文件以外的任何选项文件中读取默认选项 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
打印程序参数列表并退出 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
显示帮助文本并退出;与 --help 相同 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
详细输出 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
显示版本信息并退出 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
-
命令行格式 --add-missing
介绍 8.0.20-ndb-8.0.20 对于没有相应 BLOB 部分的 NDB Cluster 表中的每个内联部分,写一个所需长度的虚拟 BLOB 部分,由空格组成。
-
命令行格式 --character-sets-dir=path
删除 8.0.31 包含字符集的目录。
-
命令行格式 --check-missing
介绍 8.0.20-ndb-8.0.20 检查 NDB Cluster 表中没有相应 BLOB 部分的内联部分。
-
命令行格式 --check-orphans
检查 NDB Cluster 表中没有相应内联部分的 BLOB 部分。
-
命令行格式 --connect-retries=#
类型 整数 默认值 12
最小值 0
最大值 12
放弃前重试连接的次数。
-
命令行格式 --connect-retry-delay=#
类型 整数 默认值 5
最小值 0
最大值 5
尝试联系管理服务器之间等待的秒数。
-
命令行格式 --connect-string=connection_string
类型 细绳 默认值 [none]
与 相同
--ndb-connectstring
。 -
命令行格式 --core-file
删除 8.0.31 写入核心文件出错;在调试中使用。
-
命令行格式 --database=name
类型 细绳 默认值 [none]
指定要在其中查找表的数据库。
-
命令行格式 --defaults-extra-file=path
类型 细绳 默认值 [none]
读取全局文件后读取给定文件。
-
命令行格式 --defaults-file=path
类型 细绳 默认值 [none]
仅从给定文件中读取默认选项。
-
命令行格式 --defaults-group-suffix=string
类型 细绳 默认值 [none]
还可以阅读带有 concat(group, suffix) 的组。
-
命令行格式 --delete-orphans
从没有相应内联部分的 NDB Cluster 表中删除 BLOB 部分。
-
命令行格式 --dump-file=file
类型 文件名 默认值 [none]
将孤立的 BLOB 列部分列表写入
file
. 写入文件的信息包括每个孤立的 BLOB 部分的表键和 BLOB 部分号。 -
命令行格式 --help
显示帮助文本并退出。
-
命令行格式 --login-path=path
类型 细绳 默认值 [none]
从登录文件中读取给定路径。
-
命令行格式 --ndb-connectstring=connection_string
类型 细绳 默认值 [none]
设置用于连接到 ndb_mgmd 的连接字符串。语法:“[nodeid=id;][host=]hostname[:port]”。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目。
-
命令行格式 --ndb-mgmd-host=connection_string
类型 细绳 默认值 [none]
与 相同
--ndb-connectstring
。 -
命令行格式 --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
不要从登录文件以外的任何选项文件中读取默认选项。
-
命令行格式 --print-defaults
打印程序参数列表并退出。
-
命令行格式 --usage
显示帮助文本并退出;与 --help 相同。
-
命令行格式 --verbose
在工具的输出中提供有关其进度的额外信息。
-
命令行格式 --version
显示版本信息并退出。
例子
首先,我们使用此处显示的语句
在数据库
中
创建一个NDB
表
:test
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
NDBT_ProgramExit: 0 - OK
该工具报告没有NDB
与 column 关联的 BLOB 列部分c1
,即使c1
是一个
TEXT
列。这是因为,在一个NDB
表中,只有前 256 个字节的BLOB
or
TEXT
列值被内联存储,只有多余的部分(如果有的话)被单独存储;因此,如果在这些类型之一的给定列中没有使用超过 256 字节的值,则不会为该列BLOB
创建任何列部分。NDB
有关详细信息,请参阅
第 11.7 节,“数据类型存储要求”。