MySQL8取消frm文件,如何查看获取表结构信息

MySQL8开始删除了原来的frm文件,并采用 Serialized Dictionary Information (SDI), 是MySQL8.0重新设计数据词典后引入的新产物,并开始已经统一使用InnoDB存储引擎来存储表的元数据信息。SDI信息源记录保存在ibd文件中。
如何可以查看表结构信息,官方提供了一个工具叫做ibd2sdi,在安装目录下可以找到,可以离线的将ibd文件中的冗余存储的sdi信息提取出来,并以json的格式输出到终端。
用法示例:

/opt/mysql_templates/mysql-8P/bin/./ibd2sdi /opt/mysql_instances/master8/data/ibdata1 |jq ‘.’
具体bin路径因不同系统有不同位置,请自行确认。
以下命令为直接提取关于表信息的用法,提取后可用户创建表
/opt/mysql_templates/mysql-8P/bin/./ibd2sdi /opt/mysql_instances/master8/data/mysql.ibd |jq '.[]?|.[]?|.dd_object?|("------------------------------------"?,"TABLE NAME = ",.name?,“",(.columns?|.[]?|(.name?,.column_type_utf8?)))’
提取结果如下:
“------------------------------------”
"TABLE NAME = "
“tables”
"

“id”
“bigint(20) unsigned”
“schema_id”
“bigint(20) unsigned”
“name”
“varchar(64)”
“type”
“enum(‘BASE TABLE’,‘VIEW’,‘SYSTEM VIEW’)”
“engine”
“varchar(64)”
“mysql_version_id”
“int(10) unsigned”
“row_format”
“enum(‘Fixed’,‘Dynamic’,‘Compressed’,‘Redundant’,‘Compact’,‘Paged’)”
“collation_id”
“bigint(20) unsigned”
“comment”
“varchar(2048)”

“------------------------------------”
"TABLE NAME = "
“tablespaces”
“****”
“id”
“bigint(20) unsigned”
“name”
“varchar(259)”
“options”
“mediumtext”
“se_private_data”
“mediumtext”
“comment”
“varchar(2048)”
“engine”
“varchar(64)”
“DB_TRX_ID”
“”
“DB_ROLL_PTR”
“”

你可能感兴趣的:(数据库)