Spec-Zone.ru › MySQL 9.2

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
    Допустимые значения

    1

    2

    Получает сериализованную информацию словаря (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
    Допустимые значения

    crc32

    innodb

    none

    Устанавливает строгий алгоритм проверки контрольной суммы для проверки контрольной суммы считываемых страниц. Доступные варианты включают 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.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/ibd2sdi.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API