### 23.5.6 ndb\_斑点\_工具 - 检查和修复 NDB Cluster 的 BLOB 和 TEXT 列

表

[](<>)

此工具可用于检查和删除孤立的 BLOB 列部分[`新开发银行`](mysql-cluster.html)表，以及生成列出任何孤立部分的文件。它有时可用于诊断和修复损坏或损坏的`新开发银行`包含的表格[`斑点`](blob.html)要么[`文本`](blob.html)列。

的基本语法[**数据库\_斑点\_工具**](mysql-cluster-programs-ndb-blob-tool.html)显示在这里：

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

除非你使用[`- 帮助`](mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_help)选项，您必须通过包含一个或多个选项来指定要执行的操作[`--check-orphans`](mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_check-orphans),[`--删除孤儿`](mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_delete-orphans)， 要么[`--转储文件`](mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_dump-file).这些选项导致[**数据库\_斑点\_工具**](mysql-cluster-programs-ndb-blob-tool.html)检查孤立的 BLOB 部分，删除任何孤立的 BLOB 部分，并生成一个转储文件，分别列出孤立的 BLOB 部分，本节后面将对此进行更详细的描述。

调用时还必须指定表名[**数据库\_斑点\_工具**](mysql-cluster-programs-ndb-blob-tool.html).此外，您可以选择在表名后面加上一个或多个（逗号分隔的）名称[`斑点`](blob.html)要么[`文本`](blob.html)该表中的列。如果未列出任何列，则该工具适用于所有表的[`斑点`](blob.html)和[`文本`](blob.html)列。如果需要指定数据库，请使用[`- 数据库`](mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_database)(`-d`） 选项。

这[`--详细`](mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_verbose)选项在输出中提供有关工具进度的附加信息。

可以使用的所有选项[**数据库\_管理**](mysql-cluster-programs-ndb-mgmd.html)如下表所示。附加说明如下表。

[](<>)

**表 23.28 与程序 ndb 一起使用的命令行选项\_斑点\_工具**

| 格式 | 描述 | 添加、弃用或删除 |
| --- | --- | -------- |
| `[--add-missing](mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_add-missing)` | 编写虚拟 blob 部分来代替缺失的部分 | 添加：新开发银行 8.0.20 |
| `[--character-sets-dir=path](mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_character-sets-dir)` | 包含字符集的目录 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--check-missing](mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_check-missing)` | 检查具有内联部件但缺少部件表中的一个或多个部件的 blob | 添加：新开发银行 8.0.20 |
| `[--check-orphans](mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_check-orphans)` | 检查没有相应内联部分的 blob 部分 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--connect-retries=#](mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_connect-retries)` | 放弃前重试连接的次数 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--connect-retry-delay=#](mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_connect-retry-delay)` | 尝试联系管理服务器之间等待的秒数 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--connect-string=connection_string](mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_connect-string)`,<br/><br/>`[-c connection_string](mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_connect-string)` | 与 --ndb-connectstring 相同 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--core-file](mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_core-file)` | 错误时写入核心文件；用于调试 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--database=name](mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_database)`,<br/><br/>`[-d 名称](mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_database)` | 查找表的数据库 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--defaults-extra-file=path](mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_defaults-extra-file)` | 读取全局文件后读取给定文件 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--defaults-file=path](mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_defaults-file)` | 仅从给定文件中读取默认选项 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--defaults-group-suffix=string](mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_defaults-group-suffix)` | 还阅读带有 concat(group, suffix) 的组 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--删除孤儿]（mysql集群程序ndb blob tool.html#option_ndb_blob_tool_delete-ob孤儿）` | 删除没有相应内联零件的blob零件 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--dump file=file]（mysql集群程序ndb blob tool.html#option_ndb_blob_tool_dump-file）` | 将孤立密钥写入指定文件 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--help]（mysql集群程序ndb blob tool.html#option_ndb_blob_tool_help）`,<br/><br/>`[-?]（mysql集群程序ndb blob tool.html#选项_ndb_blob_工具_帮助）` | 显示帮助文本并退出 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--login path=path]（mysql集群程序ndb blob tool.html#option_ndb_blob_tool_login-path）` | 从登录文件读取给定路径 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--ndb connectstring=connection_string]（mysql集群程序ndb blob tool.html#option_ndb_blob_tool_ndb-connectstring）`,<br/><br/>`[-c connection_string]（mysql集群程序ndb blob tool.html#option_ndb_blob_tool_ndb-connectstring）` | 设置连接到ndb的连接字符串\_mgmd。语法：“[nodeid=id；][host=]主机名[：端口:]“。覆盖NDB中的条目\_连接字符串和我的。cnf | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--ndb mgmd host=connection_string]（mysql集群程序ndb blob tool.html#option_ndb_blob_tool_ndb-mgmd-host）`,<br/><br/>`[-c connection_string]（mysql集群程序ndb blob tool.html#option_ndb_blob_tool_ndb-mgmd-host）` | 与--ndb connectstring相同 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--ndb nodeid=#]（mysql集群程序ndb blob tool.html#option_ndb_blob_tool_ndb-nodeid）` | 设置此节点的节点ID，覆盖由--ndb connectstring设置的任何ID | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--ndb优化节点选择]（mysql集群程序ndb blob tool.html#选项_ndb_blob_工具_ndb-optimized-node-selection）` | 启用事务节点选择的优化。默认启用；使用--跳过ndb优化节点选择以禁用 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--无默认值]（mysql集群程序ndb blob tool.html#option_ndb_blob_tool_无默认值）` | 不要从登录文件以外的任何选项文件中读取默认选项 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--print defaults]（mysql集群程序ndb blob tool.html#option_ndb_blob_tool_print-defaults）` | 打印程序参数列表并退出 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--用法]（mysql集群程序ndb blob tool.html#option_ndb_blob_tool_用法）`,<br/><br/>`[-?]（mysql集群程序ndb blob tool.html#option_ndb_blob_tool_用法）` | 显示帮助文本并退出；跟…救命 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--verbose]（mysql集群程序ndb blob tool.html#option_ndb_blob_tool_verbose）`,<br/><br/>`[-v]（mysql集群程序ndb blob tool.html#option_ndb_blob_tool_verbose）` | 详细输出 | （所有基于MySQL 8.0的NDB版本都支持） |
| `[--version]（mysql集群程序ndb blob tool.html#option_ndb_blob_tool_version）`,<br/><br/>`[-V]（mysql集群程序ndb blob tool.html#option_ndb_blob_tool_版本）` | 显示版本信息并退出 | （所有基于MySQL 8.0的NDB版本都支持） |

-   [](<>) `--添加缺失`

    [](<>)[](<>)

    | 命令行格式 | `--添加缺失` |
    | ----- | -------- |
    | 介绍 | 8.0.20-ndb-8.0.20 |

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

-   [](<>) `--字符集目录`

    [](<>)[](<>)

    | 命令行格式 | `--字符集dir=path` |
    | ----- | --------------- |

    包含字符集的目录。

-   [](<>) `--查漏`

    [](<>)[](<>)

    | 命令行格式 | `--查漏` |
    | ----- | ------ |
    | 介绍 | 8.0.20-ndb-8.0.20 |

    检查NDB集群表中没有相应BLOB部分的内联部分。

-   [](<>) `--检查孤儿`

    [](<>)[](<>)

    | 命令行格式 | `--检查孤儿` |
    | ----- | -------- |

    检查NDB集群表中没有相应内联部分的BLOB部分。

-   [](<>) `--连接重试`

    [](<>)[](<>)

    | 命令行格式 | `--连接重试=#` |
    | ----- | ---------- |
    | 类型 | 整数 |
    | 默认值 | `12` |
    | 最小值 | `0` |
    | 最大值 | `12` |

    放弃之前重试连接的次数。

-   [](<>) `--连接重试延迟`

    [](<>)[](<>)

    | 命令行格式 | `--连接重试延迟=#` |
    | ----- | ------------ |
    | 类型 | 整数 |
    | 默认值 | `5.` |
    | 最小值 | `0` |
    | 最大值 | `5.` |

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

-   [](<>) `--连接字符串`

    [](<>)[](<>)

    | 命令行格式 | `--连接字符串=连接字符串` |
    | ----- | --------------- |
    | 类型 | 一串 |
    | 默认值 | `[无]` |

    等同于[`--ndb连接字符串`](mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_ndb-connectstring).

-   [](<>) `--核心文件`

    [](<>)[](<>)

    | 命令行格式 | `--核心文件` |
    | ----- | -------- |

    错误时写入核心文件；用于调试。

-   [](<>) `--数据库=*`db\_名称`*`, `-d`

    [](<>)[](<>)

    | 命令行格式 | `--数据库=名称` |
    | ----- | ---------- |
    | 类型 | 一串 |
    | 默认值 | `[无]` |

    指定要在其中查找表的数据库。

-   [](<>) `--默认额外文件`

    [](<>)[](<>)

    | 命令行格式 | `--默认额外文件=路径` |
    | ----- | ------------- |
    | 类型 | 一串 |
    | 默认值 | `[无]` |

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

-   [](<>) `--默认文件`

    [](<>)[](<>)

    | 命令行格式 | `--默认文件=路径` |
    | ----- | ----------- |
    | 类型 | 一串 |
    | 默认值 | `[无]` |

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

-   [](<>) `--默认组后缀`

    [](<>)[](<>)

    | 命令行格式 | `--默认组后缀=字符串` |
    | ----- | ------------- |
    | 类型 | 一串 |
    | 默认值 | `[无]` |

    同时阅读带有concat（组，后缀）的组。

-   [](<>) `--删除孤儿`

    [](<>)[](<>)

    | 命令行格式 | `--删除孤儿` |
    | ----- | -------- |

    从没有相应内联部分的NDB群集表中删除BLOB部分。

-   [](<>) `--转储文件=*`文件`*`

    [](<>)[](<>)

    | 命令行格式 | `--dump file=file` |
    | ----- | ------------------ |
    | 类型 | 文件名 |
    | 默认值 | `[无]` |

    将孤立BLOB列部分的列表写入*`文件`*。写入文件的信息包括每个孤立BLOB零件的表键和BLOB零件号。

-   [](<>) `--救命`

    [](<>)[](<>)

    | 命令行格式 | `--救命` |
    | ----- | ------ |

    显示帮助文本并退出。

-   [](<>) `--登录路径`

    [](<>)[](<>)

    | 命令行格式 | `--登录路径=路径` |
    | ----- | ----------- |
    | 类型 | 一串 |
    | 默认值 | `[无]` |

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

-   [](<>) `--ndb连接字符串`

    [](<>)[](<>)

    | 命令行格式 | `--ndb connectstring=连接字符串` |
    | ----- | --------------------------- |
    | 类型 | 一串 |
    | 默认值 | `[无]` |

    设置连接到ndb的连接字符串\_mgmd。语法：“[nodeid=id；][host=]主机名[：端口:]“。覆盖NDB中的条目\_连接字符串和我的。cnf。

-   [](<>) `--ndb mgmd主机`

    [](<>)[](<>)

    | 命令行格式 | `--ndb mgmd主机=连接\u字符串` |
    | ----- | ---------------------- |
    | 类型 | 一串 |
    | 默认值 | `[无]` |

    等同于[`--ndb连接字符串`](mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_ndb-connectstring).

-   [](<>) `--ndb节点ID`

    [](<>)[](<>)

    | 命令行格式 | `--ndb节点ID=#` |
    | ----- | ------------- |
    | 类型 | 整数 |
    | 默认值 | `[无]` |

    设置此节点的节点ID，覆盖由--ndb connectstring设置的任何ID。

-   [](<>) `--ndb优化节点选择`

    [](<>)[](<>)

    | 命令行格式 | `--ndb优化节点选择` |
    | ----- | ------------- |

    启用事务节点选择的优化。默认启用；使用`--跳过ndb优化节点选择`禁用。

-   [](<>) `--没有默认值`

    [](<>)[](<>)

    | 命令行格式 | `--没有默认值` |
    | ----- | --------- |

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

-   [](<>) `--打印默认值`

    [](<>)[](<>)

    | 命令行格式 | `--打印默认值` |
    | ----- | --------- |

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

-   [](<>) `- 用法`

    [](<>)[](<>)

    | 命令行格式 | `- 用法` |
    | ----- | ------ |

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

-   [](<>) `--详细`

    [](<>)[](<>)

    | 命令行格式 | `--详细` |
    | ----- | ------ |

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

-   [](<>) `- 版本`

    [](<>)[](<>)

    | 命令行格式 | `- 版本` |
    | ----- | ------ |

    显示版本信息并退出。

#### 例子

首先我们创建一个`新开发银行`表中的`测试`数据库，使用[`创建表`](create-table.html)此处显示的声明：

```
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`](mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_check-orphans)对着这张桌子，[**数据库\_斑点\_工具**](mysql-cluster-programs-ndb-blob-tool.html)生成以下输出：

```
$> 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
```

该工具报告没有`新开发银行`与列关联的 BLOB 列部分`c1`， 虽然`c1`是一个[`文本`](blob.html)柱子。这是因为，在一个[`新开发银行`](mysql-cluster.html)表中，只有前 256 个字节[`斑点`](blob.html)要么[`文本`](blob.html)列值内联存储，只有超出部分（如果有）单独存储；因此，如果在这些类型之一的给定列中没有使用超过 256 个字节的值，则没有`斑点`列部分由`新开发银行`对于这个专栏。看[第 11.7 节，“数据类型存储要求”](storage-requirements.html)， 了解更多信息。
