ndb_blob_tool —检查和修复NDB群集表的BLOB和TEXT列
该工具可用于检查NDB
表中的孤立BLOB列部分并从中删除它们,以及生成列出所有孤立部分的文件。有时在诊断和修复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部件,本节稍后将对其进行详细说明。
调用ndb_blob_tool时,还必须指定表的名称。此外,您可以选择在表名后加上该表中一个或多个BLOB
或TEXT
列的(逗号分隔)名称。如果未列出任何列,则该工具可在所有表BLOB
和TEXT
列上使用。如果需要指定数据库,请使用--database
(-d
)选项。
该--verbose
选项在输出中提供有关工具进度的其他信息。
下表包含特定于ndb_blob_tool的选项。附加说明如下表。有关大多数NDB群集程序(包括ndb_blob_tool)通用的选项,请参见“ NDB群集程序的通用选项— NDB群集程序的通用选项”。
ndb_blob_tool程序的命令行选项
格式 | 描述 | 添加,不建议使用或删除 |
---|---|---|
| 编写虚拟的Blob零件来代替丢失的零件 | 添加:NDB 8.0.20 |
| 检查具有内联零件但零件表中缺少一个或多个零件的斑点 | 添加:NDB 8.0.20 |
| 检查没有对应的内联零件的Blob零件 | (在所有基于MySQL 8.0的版本中受支持) |
| 在表中查找数据库 | (在所有基于MySQL 8.0的版本中受支持) |
| 删除没有相应内联部分的Blob部分 | (在所有基于MySQL 8.0的版本中受支持) |
| 将孤立密钥写入指定文件 | (在所有基于MySQL 8.0的版本中受支持) |
| 详细输出 | (在所有基于MySQL 8.0的版本中受支持) |
--add-missing
属性 值 命令行格式 --add-missing 介绍了 8.0.20-ndb-8.0.20 类型 布尔型 默认值 FALSE 对于没有对应的BLOB部分的NDB群集表中的每个内联部分,请写入所需长度的虚拟BLOB部分,该部分由空格组成。
--check-missing
属性 值 命令行格式 --check-missing 介绍了 8.0.20-ndb-8.0.20 类型 布尔型 默认值 FALSE 检查NDB群集表中没有相应BLOB部分的内联部分。
--check-orphans
属性 值 命令行格式 --check-orphans 类型 布尔型 默认值 FALSE 在NDB群集表中检查没有相应内联部件的BLOB部件。
--database=db_name
,-d
属性 值 命令行格式 --database=db_name 类型 string 默认值 [none] 指定要在其中查找表的数据库。
--delete-orphans
属性 值 命令行格式 --delete-orphans 类型 布尔型 默认值 FALSE 从NDB群集表中删除没有相应内联部件的BLOB部件。
--dump-file=file
属性 值 命令行格式 --dump-file=file 类型 文件名 默认值 [none] 将孤立的BLOB列零件列表写入
file
。写入文件的信息包括每个孤立的BLOB部件的表键和BLOB部件号。--verbose
属性 值 命令行格式 --verbose 类型 布尔型 默认值 FALSE 在工具的输出中提供有关其进度的其他信息。
例
首先,我们使用下面显示的语句NDB
在test
数据库中创建一个表CREATE TABLE
:
USE test;CREATE TABLE btest ( c0 BIGINTUNSIGNED NOT NULLAUTO_INCREMENT PRIMARY KEY , c1 TEXT, c2 BLOB )ENGINE =NDB ;
然后,我们使用与此类似的一系列语句在该表中插入几行:
INSERT INTO btestVALUES (NULL, 'x', REPEAT('x', 1000));
--check-orphans
针对该表运行时,ndb_blob_tool生成以下输出:
shell>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
表中,仅将a BLOB
或TEXT
列值的前256个字节内联存储,并且仅将多余的(如果有的话)单独存储;因此,如果在这些类型之一的给定列中没有使用超过256个字节的值,则不会为此列BLOB
创建任何列部分NDB
。有关更多信息,请参见“数据类型存储要求”。