• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • ibd2sdi是InnoDB数据表空间SDI提取实用程序

    ibd2sdi是用于从表空间文件中提取序列化字典信息(SDI)的实用程序InnoDB。SDI数据存在于所有持久性InnoDB表空间文件中。

    ibd2sdi可以在每个表文件表空间文件(*.ibd文件),常规表空间文件(*.ibd文件),系统表空间文件(ibdata*文件)和数据字典表空间(mysql.ibd)上运行。不支持将其与临时表空间或撤消表空间一起使用。

    ibd2sdi可以在运行时或服务器脱机时使用。在与SDI相关的DDL 操作,ROLLBACK操作和撤消日志清除操作期间, ibd2sdi无法读取存储在表空间中的SDI数据的时间间隔可能很短。

    ibd2sdi从指定的表空间执行未提交的SDI读取。无法访问重做日志和撤消日志。

    像这样调用ibd2sdi实用程序:

    shell>ibd2sdi [options] file_name1 [file_name2 file_name3 ...]
    

    ibd2sdi支持像InnoDB系统表空间这样的多文件表空间,但是不能一次在多个表空间上运行。对于多文件表空间,请指定每个文件:

    shell>ibd2sdi ibdata1 ibdata2
    

    多文件表空间的文件必须按照升序页码的顺序指定。如果两个连续的文件具有相同的空间ID,则后一个文件必须以前一个文件的最后一页编号 + 1开头。

    ibd2sdiJSON格式输出SDI(包含id,type和data字段)。

    ibd2sdi支持以下选项:

    • --help-h

      显示命令行帮助。

      shell>ibd2sdi --help
      Usage: ./ibd2sdi [-v] [-c <strict-check>] [-d <dump file name>] [-n] filename1 [filenames]
      See http://dev.mysql.com/doc/refman/8.0/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.0/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-dat 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 ( fter 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

      显示MySQL版本信息。

      shell>ibd2sdi --version
      ibd2sdi Ver 8.0.3-dmr for Linux on x86_64 (Source distribution)
      
    • --debug[=debug_options]-#[debug_options]

      打印调试日志。有关调试选项,请参见“ DBUG软件包”。

      shell>ibd2sdi --debug=d:t /tmp/ibd2sdi.trace
      

      仅当MySQL是使用构建的时,此选项才可用WITH_DEBUG。Oracle提供的MySQL版本二进制文件不是使用此选项构建的。

    • --dump-file=-d

      将序列化的字典信息(SDI)转储到指定的转储文件中。如果未指定转储文件,则表空间SDI将转储到stdout

      shell>ibd2sdi --dump-file=file_name ../data/test/t1.ibd
      
    • --skip-dat -s

      跳过dat 从序列化字典信息(SDI)中检索字段值的操作,仅检索idtype字段值,它们是SDI记录的主键。

      shell>ibd2sdi --skip-dat  ../data/test/t1.ibd
      ["ibd2sdi"
      ,
      {
      "type": 1,
      "id": 330
      }
      ,
      {
      "type": 2,
      "id": 7
      }
      ]
      
    • --id=#-i #

      检索与指定表或表空间对象ID匹配的序列化字典信息(SDI)。对象ID对于对象类型是唯一的。idmysql.tablesmysql.tablespace数据字典表的列中也找到表和表空间对象ID 。有关数据字典表的信息,请参见“数据字典架构”。

      shell>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 #

      检索与指定对象类型匹配的序列化字典信息(SDI)。为表(类型= 1)和表空间(类型= 2)对象提供了SDI。

      shell>ibd2sdi --type=2 ../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;"
      }
      ]
      }
      }
      }
      ]
      
    • --strict-check-c

      指定严格的校验和算法,以验证读取的页面的校验和。选项包括innodbcrc32,和none

      在此示例中,innodb指定了校验和算法的严格版本:

      shell>ibd2sdi --strict-check=innodb ../data/test/t1.ibd
      

      在此示例中,crc32指定了校验和算法的严格版本:

      shell>ibd2sdi -c crc32 ../data/test/t1.ibd
      

      如果不指定--strict-check选项,验证对不严格执行innodbcrc32none校验。

    • --no-check-n

      跳过读取页面的校验和验证。

      shell>ibd2sdi --no-check ../data/test/t1.ibd
      
    • --pretty-p

      以JSON漂亮打印格式输出SDI数据。默认启用。如果禁用,则SDI不可读,但尺寸较小。使用--skip-pretty到禁用。

      shell>ibd2sdi --skip-pretty ../data/test/t1.ibd