Mysql是最常见的关系数据库,因开源和免费被广泛使用。如果当我们数据库误删后,在没有备份的情况下如何恢复数据库呢?
有网友联系我,说自己的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.重启数据库,就可以看到数据已恢复!
基于上面的恢复策略,我们可以去恢复误删的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 | 帖子图片 |
版权属于:逍遥子大表哥
本文链接:https://cloud.tencent.com/developer/article/1921480
按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。