数据库:从删除到修复分析

阿里 阅读:130 2021-04-01 13:17:26 评论:0

前言:

前段时间做一个网站,手贱把服务器上的网站数据库给删了,这可吓坏哥了 (ಥ _ ಥ)~,第一时间是赶紧百度,看有没有教程恢复回来。结果悲催,百度半天没找到有用的(╥╯^╰╥)~,跑去问各路大神,大神回复让我目瞪口呆(⊙o⊙)… 数据库,从删除到跑路!(Φ皿Φ)~ 第一天,没能修复,找到一些方法,没敢尝试,怕越捣鼓越乱,第二天,开始着手,跟着一篇文章介绍慢慢地修复了(毕竟不能拖~)

数据库 删除后,恢复流程记录:

首先:进入 -> #cd /etc/my.cnf 文件里 查看 是否添加了 “log-bin=mysql-bin”

log-bin=mysql-bin  //查找这句,很重要。没有这句,就不能用binlog 来修复了

数据库恢复流程:

1.开始之前 先备份文件:

mysql/data/
这个备份到其他目录下

cp /mysql/data /home       // 拷贝 /mysql/目录下的 data 文件 到/home目录下

(记住每次操作都需要备份一下,免得出错后。没地方哭~ ╮(╯▽╰)╭)

如果是在外部拷贝: /alidata/server/mysql 下

cp data /home/data123   // cp 是拷贝命令,后面需拷贝文件, 最后面参数是路径 "data123" 重命名文件

最好是重命名,不要跟之前备份的文件冲突

2.binlog 日志恢复法:

nysqlbinlog mysql-bin.000002 > tmp.sql  // 把 mysql-bin.000002 这个日志 导出到tmp.sql 文件

3.然后编辑 tmp.sql, 找到 delete (drop)的 那步操作,将之删除
如: vim tmp.sql // 进入编辑

DROP DATABASE `XXXX` // 直接删除这句

我这里是这样显示的:
drop_database

(最好是下载到本地更改,方便。更重要的是防止对数据库的二次伤害 ╮(╯﹏╰)╭)
从服务器上下载 文件操作 (SHH 命令):

 sz + 文件名

然后我根据百度,尝试这样操作(结果不行,每个人的方法都不一样o(╯□╰)o):

mysql backup <tmp.sql // 把操作导入数据库 -- 我试了,在我这里没有备份,用不了backup

4.然后我是尝试这样做的:

在本地打开 tmp.sql 文件 (选择合适的编辑器,我是用VS Code 打开的)

找到关于创建你已删除数据库的地方(drop database xxx), 先把这句给删除了。

然后是在最上面找到你开始创建这个数据库的地方(create database xxx), (从这里开始)
再找到 你创建另一个数据库的地方(create database xxx123),(到这里结束,不需要这一行)

   // 从这里开始 
create database xxx  // 你删除的数据库 
   ...... 
   ...... 
   // 到这里结束 
create database xxx123  // 另一个数据库 创建的位置

复制这两行数据之间的这段代码,并保存到另一个文件(可以直接保存为 你的数据库名.txt,或者xxx.sql文件)

然后是,进入到数据库,再导入你保存的这个文件 就可以了。就相当于重新创建了一个数据库(误删的数据库)
(这过程可能会有出错的地方导致恢复的数据不完全,但起码恢复了部分数据了) <( ̄▽ ̄)/~

我是在PHPMyadmin 里导入数据库文件的,可以修复部分文件.(百分百修复回来 一般是很难的, 将就一下吧!)

更新:
恢复的数据少了一个表,导致网站连接不了数据库,打不开网站。然后我参考 从binlog 导出的数据文件,找到相应的 创建该表名的地方,重新建一个表, 可能还需要重新导入数据,参考创建该表面下面的代码,找到 insert into xxx(缺少的表名) ,一步步重新添加 数据即可。

后记:
如果可以拿到阿里云服务账号的话,可以直接从云服务上尝试能不能修复(一般来说云服务上是有备份的),当然如果你平时在服务器上有做数据备份的话,就更好了,直接从从备份数据上修复就好了。(⊙o⊙)~

备注:数据库里的东西,操作千万要谨慎!!!在做各种操作之前,最好做个备份!!!

温馨提示:
数据库有风险,操作需谨慎!
数据库从删除到跑路 (不能修复就跑路吧~ ╮(╯▽╰)╭)
数据库从删除到修复 (如果有技术,就修复吧。还好我删除的数据库,数据不是很大,不然修复起来就麻烦了╮(╯_╰)╭)

参考资料:
http://www.cnblogs.com/mqxs/p/6020341.html (这个比较有用,对我而言~)
http://www.cnblogs.com/zeoblog/p/5970324.html

声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
搜索
排行榜
关注我们

可以免费观看全网VIP电影的公众号