21.5.6 ndb_blob_tool — Проверка и ремонт столбцов BLOB и TEXT таблиц кластера 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 соответственно, и более подробно описаны далее в этом разделе.
Необходимо также указать имя таблицы при вызове ndb_blob_tool. Кроме того, вы можете дополнительно указать после имени таблицы (через запятую) имена одного или нескольких столбцов BLOB или TEXT из этой таблицы. Если столбцы не указаны, инструмент работает со всеми столбцами BLOB и TEXT таблицы. Если вам нужно указать базу данных, используйте опцию --database (-d).
Опция --verbose предоставляет дополнительную информацию в выходных данных о ходе работы инструмента.
Опции, которые могут использоваться с ndb_blob_tool, показаны в следующей таблице. Дополнительные описания следуют за таблицей.
Таблица 21.26 Параметры командной строки, используемые с программой ndb_blob_tool
| Формат | Описание | Добавлено, устарело или удалено |
|---|---|---|
| Записывает фиктивные части blob вместо отсутствующих | ДОБАВЛЕНО: NDB 7.5.18, NDB 7.6.14 | |
| Каталог, содержащий кодировки символов | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Проверка на наличие блобов с встроенными частями, но отсутствующими одной или несколькими частями из таблицы частей | ДОБАВЛЕНО: NDB 7.5.18, NDB 7.6.14 | |
| Проверка на наличие частей blob без соответствующих встроенных частей | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Количество попыток повторного подключения перед отказом | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Количество секунд ожидания между попытками связаться с сервером управления | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| То же, что и --ndb-connectstring | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Запись core-файла при ошибке; используется при отладке | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| База данных для поиска таблицы | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Чтение заданного файла после чтения глобальных файлов | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Чтение параметров по умолчанию только из заданного файла | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Также чтение групп с concat(group, suffix) | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Удаление частей blob без соответствующих встроенных частей | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Запись ключей-сирот в указанный файл | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Отображение справки и выход | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Чтение заданного пути из файла входа | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Установка строки подключения для подключения к ndb_mgmd. Синтаксис: "[nodeid=id;][host=]hostname[:port]". Переопределяет записи в NDB_CONNECTSTRING и my.cnf | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| То же, что и --ndb-connectstring | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Установка ID узла для этого узла, переопределяющая любой ID, установленный с помощью --ndb-connectstring | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Включение оптимизаций для выбора узлов для транзакций. Включено по умолчанию; используйте --skip-ndb-optimized-node-selection для отключения | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Не читать параметры по умолчанию из любого файла параметров, кроме файла входа | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Вывод списка аргументов программы и выход | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Отображение справки и выход; то же, что и --help | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Подробный вывод | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Вывод информации о версии и выход | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) |
-
--add-missingФормат командной строки --add-missingВведено 5.7.29-ndb-7.6.14 Для каждой встроенной части в таблицах кластера NDB, у которой нет соответствующей части BLOB, записывает фиктивную часть BLOB требуемой длины, состоящую из пробелов.
-
--character-sets-dirФормат командной строки --character-sets-dir=pathКаталог, содержащий кодировки символов.
-
--check-missingФормат командной строки --check-missingВведено 5.7.29-ndb-7.6.14 Проверка на наличие встроенных частей в таблицах кластера NDB, у которых нет соответствующих частей BLOB.
-
--check-orphansФормат командной строки --check-orphansПроверка на наличие частей BLOB в таблицах кластера NDB, у которых нет соответствующих встроенных частей.
-
--connect-retriesФормат командной строки --connect-retries=#Тип Целое число Значение по умолчанию 12Минимальное значение 0Максимальное значение 12Количество попыток повторного подключения перед отказом.
-
--connect-retry-delayФормат командной строки --connect-retry-delay=#Тип Целое число Значение по умолчанию 5Минимальное значение 0Максимальное значение 5Количество секунд ожидания между попытками связаться с сервером управления.
-
--connect-stringФормат командной строки --connect-string=connection_stringТип Строка Значение по умолчанию [none]То же, что и
--ndb-connectstring. -
--core-fileФормат командной строки --core-fileЗаписать дамп памяти при ошибке; используется при отладке.
-
--database=,db_name-dФормат командной строки --database=nameТип Строка Значение по умолчанию [none]Укажите базу данных, в которой нужно найти таблицу.
-
--defaults-extra-fileФормат командной строки --defaults-extra-file=pathТип Строка Значение по умолчанию [none]Прочитать заданный файл после чтения глобальных файлов.
-
--defaults-fileФормат командной строки --defaults-file=pathТип Строка Значение по умолчанию [none]Прочитать параметры по умолчанию только из заданного файла.
-
--defaults-group-suffixФормат командной строки --defaults-group-suffix=stringТип Строка Значение по умолчанию [none]Также читать группы с concat(group, suffix).
-
--delete-orphansФормат командной строки --delete-orphansУдалить части BLOB из таблиц кластера NDB, у которых нет соответствующих встроенных частей.
-
--dump-file=fileФормат командной строки --dump-file=fileТип Имя файла Значение по умолчанию [none]Записывает список осиротевших частей столбцов BLOB в
file. Информация, записанная в файл, включает в себя ключ таблицы и номер части BLOB для каждой осиротевшей части BLOB. -
--helpФормат командной строки --helpОтобразить справку и завершить работу.
-
--login-pathФормат командной строки --login-path=pathТип Строка Значение по умолчанию [none]Прочитать заданный путь из файла входа.
-
--ndb-connectstringФормат командной строки --ndb-connectstring=connection_stringТип Строка Значение по умолчанию [none]Установить строку подключения для подключения к ndb_mgmd. Синтаксис: "[nodeid=id;][host=]hostname[:port]". Переопределяет записи в NDB_CONNECTSTRING и my.cnf.
-
--ndb-mgmd-hostФормат командной строки --ndb-mgmd-host=connection_stringТип Строка Значение по умолчанию [none]То же, что и
--ndb-connectstring. -
--ndb-nodeidФормат командной строки --ndb-nodeid=#Тип Целое число Значение по умолчанию [none]Установить идентификатор узла для этого узла, переопределяя любой идентификатор, установленный с помощью
--ndb-connectstring. -
--ndb-optimized-node-selectionФормат командной строки --ndb-optimized-node-selectionВключить оптимизацию выбора узлов для транзакций. Включено по умолчанию; использовать
--skip-ndb-optimized-node-selectionдля отключения. -
--no-defaultsФормат командной строки --no-defaultsНе читать параметры по умолчанию из любого файла параметров, кроме файла входа.
-
--print-defaultsФормат командной строки --print-defaultsРаспечатать список аргументов программы и завершить работу.
-
--usageФормат командной строки --usageОтобразить справку и завершить работу; то же, что и
--help. -
--verboseФормат командной строки --verboseПредоставить дополнительную информацию в выходных данных инструмента о его ходе работы.
-
--versionФормат командной строки --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 частей столбца BLOB, связанных со столбцом c1, несмотря на то, что c1 является столбцом TEXT. Это связано с тем, что в таблице NDB только первые 256 байт значения столбца BLOB или TEXT хранятся встроены, а избыток, если таковой имеется, хранится отдельно; следовательно, если нет значений, использующих более 256 байт в заданном столбце одного из этих типов, BLOB частей столбца не создаются инструментом NDB для этого столбца. Подробнее см. Раздел 11.7, «Требования к хранению типов данных».
© 2025 Oracle
Licensed under the GPLv2 License.