6.6.1 ibd2sdi — Инструмент извлечения SDI табличного пространства InnoDB
ibd2sdi — это утилита для извлечения (SDI) из файлов табличного пространства InnoDB. Данные SDI присутствуют во всех постоянных файлах табличного пространства InnoDB.
ibd2sdi может быть запущена на файлах табличного пространства (файлах *.ibd), файлах (файлах *.ibd), файлах (файлах ibdata*) и табличном пространстве словаря данных (mysql.ibd). Она не поддерживается для использования с временными или табличными пространствами отката.
ibd2sdi может быть использована во время работы или при отсутствии сервера. Во время операций, ROLLBACK операций и операций очистки журнала отката, связанных с SDI, может быть небольшой временной интервал, когда ibd2sdi не может прочитать данные SDI, хранящиеся в табличном пространстве.
ibd2sdi выполняет непроверенное чтение SDI из указанного табличного пространства. Журналы повторного выполнения и журналы отката не используются.
Вызовите утилиту ibd2sdi следующим образом:
ibd2sdi [options] file_name1 [file_name2 file_name3 ...]
ibd2sdi поддерживает табличные пространства из нескольких файлов, такие как системное табличное пространство InnoDB, но не может быть запущена на нескольких табличных пространствах одновременно. Для табличных пространств из нескольких файлов укажите каждый файл:
ibd2sdi ibdata1 ibdata2
Файлы табличного пространства из нескольких файлов должны быть указаны в порядке возрастания номера страницы. Если у двух последовательных файлов один и тот же идентификатор пространства, то последующий файл должен начинаться с последнего номера страницы предыдущего файла + 1.
ibd2sdi выводит SDI (содержащий id, тип и поля данных) в формате JSON.
Опции ibd2sdi
ibd2sdi поддерживает следующие опции:
-
--help,-hФормат командной строки --helpТип Булево Значение по умолчанию falseОтобразить сообщение справки и выйти. Например:
Usage: ./ibd2sdi [-v] [-c <strict-check>] [-d <dump file name>] [-n] filename1 [filenames] See http://dev.mysql.com/doc/refman/8.4/en/ibd2sdi.html for usage hints. -h, --help Display this help and exit. -v, --version Display version information and exit. -#, --debug[=name] Output debug log. See http://dev.mysql.com/doc/refman/8.4/en/dbug-package.html -d, --dump-file=name Dump the tablespace SDI into the file passed by user. Without the filename, it will default to stdout -s, --skip-data Skip retrieving data from SDI records. Retrieve only id and type. -i, --id=# Retrieve the SDI record matching the id passed by user. -t, --type=# Retrieve the SDI records matching the type passed by user. -c, --strict-check=name Specify the strict checksum algorithm by the user. Allowed values are innodb, crc32, none. -n, --no-check Ignore the checksum verification. -p, --pretty Pretty format the SDI output.If false, SDI would be not human readable but it will be of less size (Defaults to on; use --skip-pretty to disable.) Variables (--variable-name=value) and boolean options {FALSE|TRUE} Value (after reading options) --------------------------------- ---------------------------------------- debug (No default value) dump-file (No default value) skip-data FALSE id 0 type 0 strict-check crc32 no-check FALSE pretty TRUE -
--version,-vФормат командной строки --versionТип Булево Значение по умолчанию falseОтобразить информацию о версии и выйти. Например:
ibd2sdi Ver 8.4.4 for Linux on x86_64 (Source distribution)
-
--debug[=,debug_options]-# [debug_options]Формат командной строки --debug=optionsТип Строка Значение по умолчанию [none]Выводит отладочный журнал. Для вариантов отладки, обратитесь к Разделу 7.9.4, «The DBUG Package».
ibd2sdi --debug=d:t /tmp/ibd2sdi.trace
Этот параметр доступен только в том случае, если MySQL был скомпилирован с помощью
WITH_DEBUG. Бинарные релизы MySQL, предоставленные Oracle, не скомпилированы с этим параметром. -
--dump-file=,-dФормат командной строки --dump-file=fileТип Имя файла Значение по умолчанию [none]Выводит сериализованную информацию словаря (SDI) в указанный файл вывода. Если файл вывода не указан, данные SDI табличного пространства выгружаются в
stdout.ibd2sdi --dump-file=
file_name../data/test/t1.ibd -
--skip-data,-sФормат командной строки --skip-dataТип Булево Значение по умолчанию falseПропускает получение значений поля
dataиз сериализованной информации словаря (SDI) и получает только значения полейidиtype, которые являются первичными ключами записей SDI.$>
ibd2sdi --skip-data ../data/test/t1.ibd["ibd2sdi" , { "type": 1, "id": 330 } , { "type": 2, "id": 7 } ] -
--id=,#-i#Формат командной строки --id=#Тип Целое число Значение по умолчанию 0Получает сериализованную информацию словаря (SDI), соответствующую указанному идентификатору объекта таблицы или табличного пространства. Идентификатор объекта уникален для типа объекта. Идентификаторы объектов таблиц и табличных пространств также находятся в столбце
idтаблиц словаря данныхmysql.tablesиmysql.tablespace. Сведения о таблицах словаря данных см. в Разделе 16.1, «Data Dictionary Schema».$>
ibd2sdi --id=7 ../data/test/t1.ibd["ibd2sdi" , { "type": 2, "id": 7, "object": { "mysqld_version_id": 80003, "dd_version": 80003, "sdi_version": 1, "dd_object_type": "Tablespace", "dd_object": { "name": "test/t1", "comment": "", "options": "", "se_private_data": "flags=16417;id=2;server_version=80003;space_version=1;", "engine": "InnoDB", "files": [ { "ordinal_position": 1, "filename": "./test/t1.ibd", "se_private_data": "id=2;" } ] } } } ] -
--type=,#-t#Формат командной строки --type=#Тип Перечисление Значение по умолчанию 0Допустимые значения 12Получает сериализованную информацию словаря (SDI), соответствующую указанному типу объекта. SDI предоставляется для объектов таблиц (type=1) и табличных пространств (type=2).
Этот пример показывает вывод для табличного пространства
ts1в базе данныхtest:$>
ibd2sdi --type=2 ../data/test/ts1.ibd["ibd2sdi" , { "type": 2, "id": 7, "object": { "mysqld_version_id": 80003, "dd_version": 80003, "sdi_version": 1, "dd_object_type": "Tablespace", "dd_object": { "name": "test/ts1", "comment": "", "options": "", "se_private_data": "flags=16417;id=2;server_version=80003;space_version=1;", "engine": "InnoDB", "files": [ { "ordinal_position": 1, "filename": "./test/ts1.ibd", "se_private_data": "id=2;" } ] } } } ]Из-за того, как
InnoDBобрабатывает метаданные значения по умолчанию, значение по умолчанию может присутствовать и быть непустым в выводе ibd2sdi для данного столбца таблицы, даже если оно не определено с помощьюDEFAULT. Рассмотрим две таблицы, созданные с помощью следующих инструкций, в базе данных под названиемi:CREATE TABLE t1 (c VARCHAR(16) NOT NULL); CREATE TABLE t2 (c VARCHAR(16) NOT NULL DEFAULT "Sakila");
Используя ibd2sdi, мы видим, что
default_valueдля столбцаcнепустое и, фактически, дополняется до длины в обеих таблицах, как показано ниже:$>
ibd2sdi ../data/i/t1.ibd | grep -m1 '\"default_value\"' | cut -b34- | sed -e s/,//"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAA=" $>ibd2sdi ../data/i/t2.ibd | grep -m1 '\"default_value\"' | cut -b34- | sed -e s/,//"BlNha2lsYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAA="Просмотр вывода ibd2sdi может быть проще с помощью инструмента, понимающего JSON, например jq, как показано здесь:
$>
ibd2sdi ../data/i/t1.ibd | jq '.[1]["object"]["dd_object"]["columns"][0]["default_value"]'"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAA=" $>ibd2sdi ../data/i/t2.ibd | jq '.[1]["object"]["dd_object"]["columns"][0]["default_value"]'"BlNha2lsYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAA="Дополнительные сведения см. в документации по внутренним механизмам MySQL.
-
--strict-check,-cФормат командной строки --strict-check=algorithmТип Перечисление Значение по умолчанию crc32Допустимые значения crc32innodbnoneУстанавливает строгий алгоритм проверки контрольной суммы для проверки контрольной суммы считываемых страниц. Доступные варианты включают
innodb,crc32иnone.В этом примере указан строгий вариант алгоритма проверки контрольной суммы
innodb:ibd2sdi --strict-check=innodb ../data/test/t1.ibd
В этом примере указан строгий вариант алгоритма проверки контрольной суммы
crc32:ibd2sdi -c crc32 ../data/test/t1.ibd
Если вы не укажете параметр
--strict-check, проверка выполняется по нестрогимinnodb,crc32иnoneконтрольным суммам. -
--no-check,-nФормат командной строки --no-checkТип Булево Значение по умолчанию falseПропускает проверку контрольной суммы считываемых страниц.
ibd2sdi --no-check ../data/test/t1.ibd
-
--pretty,-pФормат командной строки --prettyТип Булево Значение по умолчанию falseВыводит данные SDI в формате JSON с красивым отступом. Включено по умолчанию. Если отключить, SDI не будет удобочитаем, но будет иметь меньший размер. Отключить можно с помощью
--skip-pretty.ibd2sdi --skip-pretty ../data/test/t1.ibd
© 2025 Oracle
Licensed under the GPLv2 License.