当前位置 博文首页 > u012442504的专栏:Centos7下Mysql通过.frm和.ibd恢复数据紧急措
admin_menu为数据表
查找到数据库存档中的data文件夹下网站所在的目录,然后找到frm和ibd文件,第一时间备份,然后进行下面的操作!(其他的方法都不行,最后折腾了一个通宵……哎,总结了一下)
第一步,解除空间(在数据库中的SQL中直接操作),如果失败那是因为frm和ibd文件还在,要删除,最后需要导入的哦,记得备份,然后重启数据库,以防万一把内存也清理下(虚拟机的除外,因为你没权限)
ALTER TABLE admin_menu DISCARD TABLESPACE
第二步,创建同表明和字段的数据表(尽量一致,如果没有出厂表和sql文件的需要获取表结构,网上很多方法不管用,直接无语,哎,最好是自己有相同的数据表结构,比如以前有过备份什么的,只是需要表结构,不用担心数据旧的问题,只要数据表结构),然后执行第一步解除表空间绑定。
第三步,将ibd文件也就是数据内容文件复制并覆盖新生成的(数据库data文件下的网站文件夹下)文件就可以
第四步,重新绑定表空间
?
ALTER TABLE admin_menu ?IMPORT TABLESPACE
刷新数据库就可以看到恢复的数据了……
如果没有,那就重启数据库,清理下内存的缓存就可以了
?
留个念想:?http://www.manongjc.com/article/6506.html,也不到他的方法能不能用,暂且做个笔记吧,有机会试试,不,这个机会还是不要有了……
补充个5.7的数据库数据表吧,以备不时之需,留给后来人快速拯救自己的数据……
汗颜,上传资源还要等待审核……先放个文件名吧,方便查找:mysql.sql.zip,嗯,终于通过审核了,直接点击去下载吧
再来个蓝奏云的链接:https://www.lanzous.com/i6ryelc
对了,使用后看到日志中有个提示:
InnoDB: Table mysql/innodb_table_stats has length mismatch in the column nam
经过复查对比,是因为mysql数据库下的innodb_table_stats和innodb_index_stats数据表的`table_name` 列,长度从64 变成了 199,官方居然都没修复……好吧,自己动手吧,将这两张表的`table_name`字段长度改为199,执行,正常了……
下面来一个懒人资源吧,直接替换导入数据库就可以:
mysql.sql只有数据表结构的.zip
好吧,资源审核中,通过后加入;好了,可以了,点击直接下载
先上蓝奏云链接:
https://www.lanzous.com/i6stzdg
?
?
cs