• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • ndb_blob_tool —检查和修复NDB群集表的BLOB和TEXT列

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

    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_blob_tool的选项。附加说明如下表。有关大多数NDB群集程序(包括ndb_blob_tool)通用的选项,请参见“ NDB群集程序的通用选项— NDB群集程序的通用选项”。

    ndb_blob_tool程序的命令行选项

    格式描述添加,不建议使用或删除

    --add-missing

    编写虚拟的Blob零件来代替丢失的零件

    添加:NDB 8.0.20

    --check-missing

    检查具有内联零件但零件表中缺少一个或多个零件的斑点

    添加:NDB 8.0.20

    --check-orphans

    检查没有对应的内联零件的Blob零件

    (在所有基于MySQL 8.0的版本中受支持)

    --database=db_name

    -d

    在表中查找数据库

    (在所有基于MySQL 8.0的版本中受支持)

    --delete-orphans

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

    (在所有基于MySQL 8.0的版本中受支持)

    --dump-file=file

    将孤立密钥写入指定文件

    (在所有基于MySQL 8.0的版本中受支持)

    --verbose

    -v

    详细输出

    (在所有基于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

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

    首先,我们使用下面显示的语句NDBtest数据库中创建一个表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生成以下输出:

    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,即使它c1TEXT列。这是由于以下事实:在NDB表中,仅将a BLOBTEXT列值的前256个字节内联存储,并且仅将多余的(如果有的话)单独存储;因此,如果在这些类型之一的给定列中没有使用超过256个字节的值,则不会为此列BLOB创建任何列部分NDB。有关更多信息,请参见“数据类型存储要求”。