重建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表,还需要拥有其他文件,才能对表进行重建。


数据运维技术 » 重建MySQL .ibd 文件恢复及重建(mysql.ibd)