年少轻狂浮躁,应该是每个人都会犯的错误。
首先在目标数据库创建一张新表,表结构与原表结构一致。接着删除新建表的表空间。然后将原数据库的.ibd文件复制到目标数据库文件夹下,并修改文件权限。最后重新导入表空间。
具体步骤:
一、查询mysql数据库的数据安装目录
SHOW VARIABLES LIKE 'datadir';
二、停止原mysql数据库服务,备份原来的.ibd文件。
如果在mysql安装目录的idata1已经损坏,或者是覆盖的话直接使用ibd和frm去恢复数据信息,不用过度担心,容易冲昏头脑,数据库已经丢失或者文件损坏,尽自己最大的能力去弥补才是最重要的
三、在目标MySQL数据库中创建一张新表,表结构与原表结构一致。确保新表的表结构与.ibd文件中的数据结构一致。
四、使用下面命令删除新建表的表空间(即新表的.ibd 文件)。
ALTER TABLE tableName DISCARD TABLESPACE;
五、将备份好的.ibd文件复制到目标数据库数据文件夹下,并修改.ibd文件权限。
chown mysql:mysql tableName.ibd
六、使用下面命令重新导入表空间即可恢复数据(无需重启目标数据库服务)。
ALTER TABLE tableName IMPORT TABLESPACE;
最后:做事之前要想清楚,冷静思考,在处理数据库时要备份。希望对大家有所帮助