前提
- 有表结构备份
- 开启独立表空间
show global variables like 'innodb_file_per_table'环境模拟
1. 构建测试数据库及表
```sql create table test;
use test;
CREATE TABLE table_test (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(255) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
<a name="GY51C"></a>#### 2. 故障模拟1. 手动删除 test 库下的 table_test 表 frm文件,删除后执行 drop 后提示 "Unknown table 'test.table_test'",执行 select 提示 "Table 'test.table_test' doesn't exist"<br /><a name="qVSP2"></a>### 恢复1. 备份 ibd 文件 `cp table_test.ibd /your_dir/table_test.ibd`2. 随便找一张其他表的 frm 文件命名为故障表的 frm 文件,并赋予 mysql 用户组```shellcp test2.frm table_test.frmchown mysql.mysql table_test.frm

- 删除故障表
删除之后,故障表 frm、ibd文件都会被删除
- 使用故障表结构创建新表
此时生成新的 frm 和 ibd 文件

- 卸载新表表空间
alter table table_test discard tablespace;
此时新表 ibd 表空间被删除

- 复制 table_test.ibd.bk 到 table_test.ibd,赋予权限,并导入表空间 ```shell shell> cp /yourdir/table_test.ibd.bk table_test.ibd
shell> chown mysql.mysql table_test.ibd
导入表空间
mysql> alter table table_test discard tablespace;
```



