作者 | 老周
链接 | cnblogs.com/zhouyu629/p/3734494.html
经历了两天不懈努力 , 终于恢复了一次误操作删除的生产服务器数据 。对本次事故过程和解决办法记录在此 , 警醒自己 , 也提示别人莫犯此错 。也希望遇到问题的朋友能找到一丝灵感解决问题 。
事故背景安排一个妹子在一台生产服务器上安装Oracle , 妹子边研究边安装 , 感觉装的不对 , 准备卸载重新安装 。从网上找到卸载方法 , 其中要执行一行命令删除Oracle的安装目录 , 命令如下:
【不小心执行了 rm -rf /* 怎么办?】rm -rf $ORACLE_BASE/*
如果ORACLE_BASE这个变量没有赋值 , 那命令就变成了
rm -rf /*
等等 , 妹子使用的可是root账户啊 。就这样 , 把整个盘的文件全部删除了 , 包括应用Tomcat、MySQL数据库 and so on 。
MySql数据库不是在运行吗?linux能删除正在执行的文件?反正是彻底删除了 , 最后还剩一个tomcat的log文件 , 估计是文件过大 , 一时没有删除成功
看着妹子自责的眼神 , 又是因为这事是我安排她做的 , 也没有跟她讲清厉害关系 , 没有任何培训 , 责任只能一个人背了 , 况且怎么能让美女背负这个责任呢?
打电话到机房 , 将盘挂到另一台服务器上 , ssh上去查看文件全部被清 , 这台服务器运行的可是一个客户的生产系统啊 , 已经运行大半年了 , 得尽快恢复啊 。于是找来脱机备份的数据库 , 发现备份文件只有1kb , 里面只有几行熟悉的mysqldump注释(难道是crontab执行的备份脚本有问题) , 真是屋漏偏逢连夜雨啊 。
想起来一位领导说过的案例:当一个生产系统挂掉以后 , 发现所有备份都有问题 , 刻录的光盘也有划痕 , 磁带机也坏了(一个业界前辈 , 估计以前还用光盘做备份了) , 没想到今天真的应验到我的身上了 , 怎么办?
部门领导知道情况后 , 已经做了最坏的B计划:领导亲自带队和产品AA周日赶到客户所在的地市 , 星期一去领导层沟通;BB和CC去客户管理员那边想办法说服客户 。
救命稻草:ext3grep赶快到网上去查资料进行误删数据恢复 , 还真找到一款ext3grep能够恢复通过rm -rf删除的文件 , 我们磁盘也是ext3格式 , 且网上有不少的成功案例 。于是燃起了一丝希望 , 赶快对盘umount , 防止重新写入补删文件扇区 。下载ext3grep , 安装(编译安装过程艰辛暂且不表) 。
先执行扫描文件名命令:
ext3grep /dev/vgdata/LogVol00 --dump-names
打印出了所有被删除文件及路径 , 心中狂喜 , 不用执行B计划了 , 文件都在呢 。
这款软件不能按目录恢复文件 , 只能执行恢复全部命令:
ext3grep /dev/vgdata/LogVol00 --restore-all
结果当前盘空间不足 , 没办法只能恢复文件 , 尝试了几个文件 , 居然部分成功部分失败
ext3grep /dev/vgdata/LogVol00 --restore-file var/lib/mysql/aqsh/tb_b_attench.MYD
心里不禁一凉 , 难道是删除磁盘上被写过文件了?恢复机率不大了啊 , 能恢复几个算几个吧 , 说不定重要数据文件刚好在能恢复的MYD文件中 。于是先将所有文件名重定向到一个文件文件中
ext3grep /dev/vgdata/LogVol00 --dump-names >/usr/allnames.txt
过滤出来所有mysql数据库的文件名存成,mysqltbname.txt
编写脚本恢复文件:
while read LINE
do
echo "begin to restore file " $LINE
ext3grep /dev/vgdata/LogVol00 --restore-file $LINE
if [ $? != 0 ]
then
echo "restore failed, exit"
# exit 1
fi
done < ./mysqltbname.txt
执行 , 大概运行了20分钟 , 恢复了40多个文件 , 但不够啊 , 我们将近100张表 , 每张表frm,myd,myi三个文件 , 怎么说也有300多个左右啊!!将找回来的文件附到现有数据库上 , 更要文件权限为777后 , 重启mysql , 也算是找回一部分数据了 , 但客户重要的考勤签到数据、手机端上报数据(据说客户按这些数据做员工绩效的)还没找回来啊 。
推荐阅读
- “全款”与“按揭”买车哪个更好?业内人士进行了解答:终于懂了
- MySql基础架构以及SQL语句执行流程
- 软考证书是职业证书还是执业证书?
- 不小心有了茶 茶友都看哭了
- 梦见和死人发生争执 梦见与人起争执后对方死了
- go语言中执行命令的几种方式
- 如果不小心手机丢失,一定要做到这五点,黑客也拿你没办法
- 抖音小店个人营业执照没有实体店怎么办理 开通抖音小店没有营业执照怎么办
- 节后快速减掉水桶腰
- 如果不小心把人撞了,该先垫钱还是先报保险?不要因不懂吃哑巴亏