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, type и data) в формате 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/9.2/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/9.2/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 9.2.0 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.