"[图片] 本文由 黑壳博客原创 本文原创 Mysql 数据库损坏,通过 idb 和 frm 恢复表结构和数据 壳叔搞笑时间 [图片] 前言 呃呃呃,由于前几天作死,作死内容就不解释了... 怪尴尬的... 也不希望各位模仿 作死结果是 数据库彻底完犊子了, 相关项目运行跟着完犊子了。 值得庆幸的是,数据根据网上经验找回 .."

Mysql 数据库损坏,通过 idb 和 frm 恢复表结构和数据

本文由黑壳博客原创

本文原创Mysql 数据库损坏,通过 idb 和 frm 恢复表结构和数据

壳叔搞笑时间

imagepng

前言

呃呃呃,由于前几天作死,作死内容就不解释了... 怪尴尬的... 也不希望各位模仿
作死结果是 数据库彻底完犊子了, 相关项目运行跟着完犊子了。

值得庆幸的是,数据根据网上经验找回来 99% 算是比较幸运的了, 根据网上经验总结一下“挽救措施”。

.frm 恢复表结构

温馨提示:如果你已经恢复了表数据,可以直接忽略此操作,开始下一步操作

MySql 创建每张表后都会在“mysql 安装目录 /data/ 数据库名 /”目录下创建一个“表名.frm”文件。

该.frm 文件并不能直接打开,但是它可以帮助你恢复你的表结构 ~~

具体操作如下:

1、准备恢复 bhusk 数据库中的表结构,其中 bhusk 数据库中包含了 admin 表。

2、我们首先连接数据库,创建数据库 bhusk, 自己可视化工具或许会快一点

create database bhusk;

3、然后在该数据库下创建表 admin ,只需要包含一个简单的字段便可,主要是创建出一个同名的表,方便接下来的替换。

create table `admin`( id varchar(32) not null);

4、这一步请将 mysql 数据库服务关闭

5、将之前旧的数据库留下来的 /data/bhusk/admin.frm 文件覆盖掉现在新的数据库 /data/bhusk 目录下的 admin.frm 文件。

6、给这个 admin.frm 加权限,所有者 mysql ,权限 660(你可以参考别的 ibd 文件所有者和权限设置) (这一步几乎可以忽略)此步为 linux 权限操作

7、最后启动数据库,可以查表结构了

.idb 恢复表数据

1、 现在 admin 表结构有了,开始准备恢复数据,如果通过以上方法恢复表结构,那一定在/data/bhusk/目录下会有 admin.idb 文件。

2、接下来执行alter table `admin` discard tablespace ;执行完之后,数据库目录下的 user.ibd 文件就没了

3、把你备份的 ibd 放到消失的 admin.ibd 文件那里。

4、给这个文件加权限,所有者 mysql ,权限 660(你可以参考别的 ibd 文件所有者和权限设置)(这一步几乎可以忽略)此步为 linux 权限操作

5、执行 alter table admin import tablespace; 执行完,表数据就可读了,这时候会丢失一些诸如表行记录数等存在系统表里的信息,不过那些信息无所谓。表其实这时候已经可以正常用了。如果不放心,可以导出 sql 语句或 txt,再创建表导入。

总结

数据无价,一定要细心。

关于我们

程序员是个辛苦的职业

请善待你们身边的每一位程序员 ~

欢迎在评论写下你的程序员趣事,程序员不是一个死板的职业 ~~

欢迎扫描二维码加入我们的小组织 ,大家都叫我壳叔,很期待你的到来。
黑壳网交流群 Q 群:200408242

  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:PipeSoloSymWide 等,欢迎大家加入,贡献开源。

    2095 引用 • 3641 回帖 • 619 关注
  • 黑壳网
    65 引用 • 38 回帖 • 1 关注
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    411 引用 • 459 回帖 • 984 关注
  • 数据恢复
    2 引用 • 2 回帖
1 回帖   
请输入回帖内容...
  • ykz200  

    wewwew 😄