记mysql数据库文件被破坏还原过程
故事,呸,应该是事故...发生在去年年底,一个用户不知道什么”操作“导致了MySQL数据库服务启动未遂,看的我一脸蒙圈,没办法,用户是上帝!
经过发现,用户本地的数据库文件还是好的,即本地的MySQL的数据文件路径下的data文件夹下的内容还在,经过多次的查阅资料,最终确定了解决方案。---- 清空现有的数据库(表),重新生成数据库(表)。
开整,第一步:数据文件备份(万一失败了源数据都没了就麻烦大了)
第二步:删除现有的数据库下对应的除 opt 以外的所有的数据【说明:一般来讲,opt表示数据库文件、frm表示数据库表结构文件、ibd表示数据库文件】
第三步:这一步十分关键,需要创建知识表的结构,即frm文件,经过百度,通过dbseeker for frm 文件可以解决,右转百度即可下载,下载之后双击bat文件如下图:
第四步:点击按钮选择备份的文件中的某一个库的所有的frm文件,如下图:
第五步:复制生成的sql文件到navicat执行语句创建数据库表:
第六步:后续的原理解析
【1. 解除新生成的表的结构与内容的关系,关键词为discard;
alter table 表名 DISCARD TABLESPACE;
需要取消某一个数据库下面的所有的数据库表的关联关系。
2. 停止mysql服务;
3. 导入备份的idb文件;
4. 启动mysql服务将备份的ibd文件与新生成的表进行关联【关键词 import 】
alter table 表名 IMPORT TABLESPACE;
5. success...
】
写在最后,MySQL这次故障的解决的前提是frm文件和ibd文件没有被破坏,如果被破坏了,跑路吧