当前位置 博文首页 > u012442504的专栏:Centos7下Mysql通过.frm和.ibd恢复数据紧急措

    u012442504的专栏:Centos7下Mysql通过.frm和.ibd恢复数据紧急措

    作者:[db:作者] 时间:2021-09-23 10:39

    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