设为首页收藏本站

天空语文 如皋  九华 作文  教学

 找回密码
 我要加入(register注册)

QQ登录

只需一步,快速开始

快捷登录

使用微信账号登录

最近看过此主题的会员

天空新人

蓝兰的花朵

天晴朗

嘿嘿嘿

joycy

颂颂.g

酷土土土

用户已注销

Jeremy

ʚ贴贴ɞ

果子黑

H·princess

李苏楠

方大金

依灵灵灵.

金川兰

lulululu

lisunan18795762

清风拂过

楠大人

王悦

朴弟

赵珺琦

王佳慧

八5霍程

徐灵丽

查看: 271|回复: 1
收起左侧

[数码维修] 绝了!一个妹纸 rm -rf 把公司整个数据库删没了...

  [复制链接] TA的其它主题
来自- 保留地址

Ta在天空论坛排行

积分:NO. 52 名

发帖:NO. 52 名

在线:NO. 26 名

胡胡胡美丽_ss 发表于 2020-4-12 19:06:05 | 显示全部楼层 |阅读模式 来自- 保留地址
天空便利贴:这里是语文的天堂,也是文学的乐园。如有原创或喜欢的文章,可推荐发表,供坛友欣赏提高。您的热情和才华是天空论坛最大的财富。
来自- 保留地址

加入天空更多精彩

您需要 登录 才可以下载或查看,没有账号?我要加入(register注册)

x
绝了!一个妹纸 rm -rf 把公司整个数据库删没了...数据中心专家SDDC 2020-04-07 22:49:22
经历了两天不懈努力,终于恢复了一次误操作删除的生产服务器数据。对本次事故过程和解决办法记录在此,警醒自己,也提示别人莫犯此错。也希望遇到问题的朋友能找到一丝灵感解决问题。




事故背景
安排一个妹子在一台生产服务器上安装 Oracle,妹子边研究边安装,感觉装的不对,准备卸载重新安装。
从网上找到卸载方法,其中要执行一行命令删除 Oracle 的安装目录,命令如下:
rm -rf $ORACLE_BASE/*  
如果 ORACLE_BASE 这个变量没有赋值,那命令就变成了:
rm -rf /*  
等等,妹子使用的可是 Root 账户啊。就这样,把整个盘的文件全部删除了,包括应用 Tomcat、MySQL 数据库 and so on……
MySQL 数据库不是在运行吗?Linux 能删除正在执行的文件?反正是彻底删除了,最后还剩一个 Tomcat 的 Log 文件,估计是文件过大,一时没有删除成功。


看着妹子自责的眼神,又是因为这事是我安排她做的,也没有跟她讲清厉害关系,没有任何培训,责任只能一个人背了,况且怎么能让美女背负这个责任呢?
打电话到机房,将盘挂到另一台服务器上,SSH 上去查看文件全部被清,这台服务器运行的可是一个客户的生产系统啊,已经运行大半年了,得尽快恢复啊。
于是找来脱机备份的数据库,发现备份文件只有 1KB,里面只有几行熟悉的 mysqldump 注释(难道是 Crontab 执行的备份脚本有问题),最接近的备份也是 2013 年 12 月份的了,真是屋漏偏逢连夜雨啊。
想起来一位领导说过的案例:当一个生产系统挂掉以后,发现所有备份都有问题,刻录的光盘也有划痕,磁带机也坏了(一个业界前辈,估计以前还用光盘做备份了),没想到今天真的应验到我的身上了,怎么办?
部门领导知道情况后,已经做了最坏的 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"  
    fi  
done < ./mysqltbname.txt  
执行,大概运行了 20 分钟,恢复了 40 多个文件,但不够啊,我们将近 100 张表,每张表 frm,myd,myi 三个文件,怎么说也有 300 多个左右啊!
将找回来的文件附到现有数据库上,更要文件权限为 777 后,重启 MySQL,也算是找回一部分数据了,但客户重要的考勤签到数据、手机端上报数据(据说客户按这些数据做员工绩效的)还没找回来啊。
咋办?中间又试了另一款工具 extundelete,跟 ext3grep 语法基本一致,原理应该也一样了,但是据说能按目录恢复。
好吧,试一试:
extundelete /dev/vgdata/LogVol00 --restore-directory var/lib/mysql/aqsh  
果然不出所料,恢复不出来!!!!!!!!那些文件已被破坏了。跟领导汇报,执行 B 计划吧……无奈之下下班回家。(周末了,回去休息一下,想想办法吧)




灵机一动:Binlog
第二天早晨一早就醒了(心里有事啊),背上电脑,去公司(这个周末算是报销了,不挨批,通报,罚款,开除就不错了,还过什么周末啊)。
依旧运行 ext3grep,extundelete,也就那几招啊,把系统架到测试服务器上,看看数据能不能想办法补一补吧。
在测试服务器上进行 mysqldump,恢复文件,覆盖恢复回来的文件,给文件加权限,重启 MySQL。
Wait,Wait,不是有 Binlog 吗?我们服务都要求开启 Binlog,说不定能通过 Binlog 里恢复数据呢?
于是从 Dump 出来的文件名里找到 Binlog 的文件,一共三个:
  • mysql-binlog0001
  • mysql-bin.000009
  • mysql-bin.000010
恢复一下 0001:
ext3grep /dev/vgdata/LogVol00 --restore-file var/lib/mysql/mysql-bin.000001  
居然失败了……再看另两个文件,mysql-bin.000010 大概几百 MB,应该靠谱一点,执行还原命令,居然成功了!
赶快 SCP 到测试服务器。执行 Binlog 还原:
mysqlbinlog /usr/mysql-bin.000010 | mysql -uroot -p  
输入密码,卡住了(好现象),经过漫长的等待,终于结束了。打开应用,哦,感谢 CCTV,MTV,数据回来了!




后记
也希望谨记此次事故,以后不再犯同样的错误。事故反思如下:
  • 本次安排 MM 进行服务器维护时没有提前对她进行说明厉害情况,自己也未重视,管理混乱,流程混乱。一个在线的生产系统,任何一个改动一定要先谋而后动。
  • 自动备份出现问题,没有任何人检查。脱机备份人员每次从服务器上下载 1K 的文件却从未重视。需要明确大家在工作岗位上的责任。
  • 事故发生后,没有及时发现,造成部分数据写入磁盘,造成不可恢复问题。需要编写应用监控程序,服务一旦有异常,短信告警相关责任人。
  • 根据评论提醒,再加一条:不能使用 Root 用户来操作。应该在服务器上开设不同权限级别的用户。
敲黑板了!备份,磁盘备份or磁带备份!本地备份Or异地备份!在线备份or离线备份!定时备份or 实时备份!总之,备份再备份!
通过本次事故
分享下本文所用到的工具链接:
功能跟 ext3grep 差不多,原理应该也差不多。编译安装依赖包比较多,可以到网上搜索如何安装。
最后希望各位同行的小伙伴们能谨记本文事件,开心敲代码,永远不出错~本文转截于网络,找不到原作者,所以没有标识。

收藏
举报





350 条评论


评论





  • Steve139222007 3天前

    生产系统,先检查备份有效性,再提前写好命令和脚本,在测试系统模拟演练,上机,解藕,双人操作,一步一审。

    回复 ⋅ 1条回复28


  • 风中的棍子 3天前

    真难于想象你们公司的灾备系统如此脆弱,这种公司居然没倒闭。

    回复 ⋅ 6条回复66


  • sdnxwlz 3天前

    管理混乱,没有权限管理,没有定期备份恢复机制,能恢复是撞大运了

    回复 ⋅ 2条回复39


  • 29184471 1天前

    所以说有人一直崇尚Linux的命令行操作模式,其实我自己是运维但我自己知道打命令是很危险的,尤其疲劳状态不好的时候,为了方便期间大部分时候用的都是root权限,一旦出错后果不堪设想,所以我现在基本操作之前先虚拟机快照一下,否则真不敢动。。。[捂脸][捂脸][捂脸]

    回复1


  • 心理治疗师金色阳光 1天前

    如果我是那个女孩,做维护之前先检查一下数据有没有备份,备份服务器运行是否正常,对比源文件无误后再开始操作,一旦数据丢失,恢复文件数据也容易些,问题还是管理上的漏洞,以前我做网络服务器运营的时候对备份是非常重视的,只要备份服务器不出问题我就不怕,而且备份服务器准备的不是一个,防止备份服务器出故障,数据丢失,我采用本地加异地双备份模式,一直没出过问题。也轻松应对了几次黑客攻击。






我知道答案 本帖寻求最佳答案回答被采纳后将获得系统奖励10 天空金币 , 目前已有1人回答

最近访客

来自- 保留地址
天空便利贴:
到底了,觉得文章不错的,可以给作者评论或者打赏,这是创作者向前的动力。可以向上滑,或者转到相关热帖。使用过程中如有好的意见或建议,欢迎联系页面qq客服。天空论坛因你更精彩。
回复

手机扫码浏览
天空论坛,有你有我,明天更好!
来自- 保留地址
点评回复 来自- 保留地址

使用道具 举报 私信管理员来自- 保留地址

来自- 中国江苏宿迁

Ta在天空论坛排行

积分:NO. 41 名

发帖:NO. 40 名

在线:NO. 39 名

向往草原403 发表于 2021-9-12 15:22:23 | 显示全部楼层 来自- 中国江苏宿迁
来自- 中国江苏宿迁
我和我的小伙伴都惊呆了!
来自- 中国江苏宿迁
沙发 2021-9-12 15:22:23 回复 收起回复
B Color Smilies
还可输入 2000 个字符
回复
天空论坛,有你有我,明天更好!
来自- 中国江苏宿迁
点评回复 支持 反对 来自- 中国江苏宿迁

使用道具 举报 私信管理员来自- 中国江苏宿迁

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

×天空论坛发帖友情提示:
1、注册用户在本论坛发表、转载的任何作品仅代表其个人观点,不代表本论坛认同其观点。
2、如果存在违反国家相关法律、法规、条例的行为,我们有权在不经作者准许的情况下删除其在本论坛所发表的文章。
3、所有网友不要盗用有明确版权要求的作品,转贴请注明来源,否则文责自负。
4、本论坛保护注册用户个人资料,但是在自身原因导致个人资料泄露、丢失、被盗或篡改,本论坛概不负责,也不承担相应法律责任。

QQ|手机版|我们的天空 ( 苏ICP备18048761号 ) |苏公网安备32068202000215号 |网站地图

GMT+8, 2024-4-27 20:30 , Processed in 0.252181 second(s), 62 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表