重建MySQL .ibd 文件恢复及重建(mysql.ibd)
MySQL的.ibd文件是存储在InnoDB表中的Data Dictionary结构的具体形式,例如字段名称,数据类型,以及索引等。在某些场景下,.ibd文件会因为某些原因丢失,我们就可以使用以下步骤重建.ibd文件:
(1)使用 MyISAM 引擎创建一个与之前表结构一致的新表,代码如下:
CREATE TABLE `new_table` LIKE `old_table`;
(2)导入久表数据到新表:
INSERT INTO new_table (`col1`, `col2`) SELECT `col1`, `col2` FROM `old_table`;
(3)将新表表引擎更改为InnoDB:
ALTER TABLE `new_table` ENGINE = InnoDB;
(4)将新表名改回久表名:
ALTER TABLE `new_table` RENAME `old_table`;
(5)更新系统表:
UPDATE `mysql`.`innodb_table_stats` SET ‘name’ = ‘old_table’ WHERE `name` = ‘new_table’;
(6)重新分配久的表的对应的.ibd文件:
ALTER TABLE `old_table` DISCARD TABLESPACE;
ALTER TABLE `old_table` IMPORT TABLESPACE;
上述步骤可以用来重建MySQL的.ibd文件,重新恢复表的结构和数据。因为InnoDB表的完整和安全性是需要持久文件:ibd,frm和log和log cfg。使用以上步骤可以恢复ibd文件,但是要想完全重建InnoDB表,还需要拥有其他文件,才能对表进行重建。