ITPub博客

首页 > 数据库 > 数据库开发技术 > 从删库到跑路 基于mysql8 (MYD MYI SDI)数据库恢复

从删库到跑路 基于mysql8 (MYD MYI SDI)数据库恢复

原创 数据库开发技术 作者:逍遥子 时间:2021-10-14 19:14:40 0 删除 编辑

从删库到跑路 基于mysql8 MYD MYI SDI数据库恢复



Mysql是最常见的关系数据库,因开源和免费被广泛使用。如果当我们数据库误删后,在没有备份的情况下如何恢复数据库呢?

Mysql8.0数据库恢复

环境

  • Windows Linux
  • Mysql8.0.12
  • PHP7.4
  • Dzx3.4

故障描述

有网友联系我,说自己的dz站不小心删库了!本地没有备份,已经运维了好几年了。看能不能恢复,在咨询后发现他用的小皮面板,很显然没有做好备份功能!在查阅一番后,知道了自Mysql8.0后,当用户创建了数据库后,会在MySQL8.0.12\data目录下产生相应的恢复文档,用于后期的恢复!当然Mysql之前的版本也有这个功能,但是文件格式变了!

文件 说明
XXX.sdi 表结构文件
XXX.MYD 数据文件
XXX.MYI 索引文件

我们可以利用这三个文件完成对数据库的恢复!

删库恢复测试

**1.**我们首先创建一个数据库bbskali

create database bbskali;

**2.**创建数据表 并建立相应的字段

CREATE TABLE `bbskali`.`nbkali` ( `id` INT(255) NOT NULL , `name` CHAR(255) NOT NULL , `nmuber` INT(255) NOT NULL , `age` INT(255) NOT NULL ) ENGINE = MyISAM;

**3.**删除数据库 **4.**我们在date目录下可以看到刚才建立的数据库bbskali的文件夹,以及有关表的相关文件。**5.**将文件复制出来,并新建数据库bbskali2和表nbkali(建立字段,不填数值。) **6.**继续会到date目录,会有下面结构。前后对比,我们发现只有.sdi文件名不一样。先把旧表数据.MYD .MYI替换新表.MYD .MYI,然后将新表的.sdi给旧表重命名后替换!**7.**重启数据库,就可以看到数据已恢复!

Dz3.4删库恢复

基于上面的恢复策略,我们可以去恢复误删的dz的数据库。但因为dz表比较多,站点数据较大等因素,一个个新建表去恢复不现实!解决思路如下:**1.**重装dz论坛系统,我们我们就得到了dz的表结构。**2.**复制原站的date目录,将里面MYD和MYI全部替换,然后去找对应的.sdi文件,将其重命名后在替换。**3.**重启数据库

弊端

**1.**当数据表较多时,不建议用此方法,除非迫不得已!**2.**不能恢复dz插件的数据,因为没有插件的.sdi的文件信息 **3.**对于dz我们可以只恢复用户表和帖子表即可!其他的我们可在后台再次设置!以下是dz部分表的信息!用户表信息:

表名 说明
pre_common_member 帖子用户表
pre_ucenter_members uc用户表
pre_ucenter_memberfields 用户id表

帖子信息表

表名 说明
pre_forum_post 帖子文章表
pre_forum_thread 帖子内容
pre_forum_threadimage 帖子图片


扫描二维码关注我

点击下方“阅读原文”查看更多精彩内容☺

原文作者:Kali笔记;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2021-01-22

  • 博文量
    760
  • 访问量
    443453