如果数据库文件非常大的话,这种方式就非常实用了,首先需要备份的数据库上右键——转储sql文件——仅结构导出该数据库的结构的sql文件,然后按照删除表空间——ibd文件复制到新建的数据库下——导入表空间的操作即可恢复数据库中的数据。此法也挺麻烦,需要逐个表进行删除表空间和恢复表空间,还是数据结构和数据 一块备份来的利索。
需要拷贝的文件包括:数据库文件(例如上图所示的gd_base、common、gd_dbwizard等数据库)和 ibdata1 (这个必须拷贝)这个需要验证一下。ibdata1肯定与C:\ProgramData\MySQL\MySQL Server 8.0\Data下的ibdata1冲突,导致现有的其他数据库文件打不开,这个有待验证!!!
项目踩坑之路_InitiativeYu的博客-CSDN博客
此方法mysql5.7版本以上适用。
假如你的数据库表都没了,而mysql目录下的data中.ibd还在的话,你可以试试此方法。
创建一个新的数据库
创建一个表(表名与待恢复的表名相同),字段结构跟丢失的一样,
进入该数据库,删除该表空间
例如: ALTER TABLE project DISCARD TABLESPACE;
project是我的表
将project.ibd复制到新建的数据库下,执行命令,导入表空间。
ALTER TABLE project IMPORT TABLESPACE;
这时候查看表,数据就显示出来了