MySQL 8数据库恢复指南:从删库到跑路

从删库到跑路:基于MySQL 8的MYD、MYI、SDI数据库恢复

图片[1]-MySQL 8数据库恢复指南:从删库到跑路-山海云端论坛

环境:

  • 操作系统:Windows、Linux
  • MySQL版本:8.0.12
  • PHP版本:7.4
  • 论坛系统:Dzx3.4

故障描述: 一位网友在联系我后说他不小心删库了,而且没有备份。经过询问得知他使用的是小皮面板,显然没有开启备份功能。在查询后发现自从MySQL 8.0版本开始,当用户创建数据库后,MySQL会在数据目录下生成相应的恢复文件。在MySQL之前的版本也有这个功能,但文件格式有所不同。

文件说明:

  • XXX.sdi: 表结构文件
  • XXX.MYD: 数据文件
  • XXX.MYI: 索引文件

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

图片[2]-MySQL 8数据库恢复指南:从删库到跑路-山海云端论坛

删库恢复测试:

  1. 首先创建一个数据库bbskali。
<code>create database bbskali;</code>
  1. 创建数据表并定义字段。
<code>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;</code>
图片[3]-MySQL 8数据库恢复指南:从删库到跑路-山海云端论坛
  1. 删除数据库。
  2. 在data目录下找到刚创建的数据库bbskali的文件夹以及相关表的文件。
  3. 复制这些文件,并创建新的数据库bbskali2和表nbkali(仅定义字段,不填充数据)。
  4. 继续前往data目录,在那里你会看到以下文件结构。对比新旧文件,我们会发现只有.sdi文件名不同。首先用新表的.MYD和.MYI文件替换旧表的文件,然后将新表的.sdi文件重命名为旧表的文件名并替换。
  5. 重启数据库,数据已成功恢复。

Dz3.4删库恢复: 根据以上恢复策略,我们可以尝试恢复误删的Dz数据库。但由于Dz表较多,站点数据较大,一个一个表进行恢复是不现实的。 解决方法如下:

  1. 重装Dz论坛系统以获得表结构。
  2. 复制原始站点的data目录,用其中的.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:帖子图片

通过以上方法,你可以尝试从MySQL 8数据库的MYD、MYI、SDI文件进行数据恢复。

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容