【数据库】一个 rm -rf 把公司整个数据库删没了

云栖号资讯:【点击查看更多行业资讯】
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!

 

image

经历了两天不懈努力,终于恢复了一次误操作删除的生产服务器数据。
对本次事故过程和解决办法记录在此,警醒自己,也提示别人莫犯此错。

也希望遇到问题的朋友能找到一丝灵感解决问题。

事故背景

安排一个妹子在一台生产服务器上安装 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
doecho "begin to restore file " $LINEext3grep /dev/vgdata/LogVol00 --restore-file $LINEif [ $? != 0 ]thenecho "restore failed, exit"# exit 1 公众号:Java后端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 用户来操作。应该在服务器上开设不同权限级别的用户。

【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/zhibo

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/516478.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

elasticsearch-7.15.2 集成pinyin分词器

文章目录1. 下载拼音分词器2. es集成pinyin3. 启动es4. pinyin分词5. 效果图6. 开源项目1. 下载拼音分词器 链接&#xff1a;https://github.com/medcl/elasticsearch-analysis-pinyin 2. es集成pinyin 方式任选其中一种即可 第一种&#xff1a;在线安装 ./bin/elasticsear…

【智能AI】准确率97%的开源肺炎检测模型

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 最近&#xff0c;一位澳大利亚的人工智能博士候选人在 LinkedIn 上发布了一篇关于 SARS-CoV-2 病毒的研究文章。由于极具话题…

豪气!华为放话:3年培养100万AI人才!网友神回应了

大家经常把BAT挂在嘴边&#xff0c;但是可能有些人还不知道&#xff0c;华为的体量早已超越了这三巨头&#xff0c;只是迟迟不肯上市。华为的创始人任正非曾说表&#xff1a;上不上市不重要&#xff0c;最重要的是要让中国华为的技术能够称霸全球&#xff01;华为对技术的重视&…

elasticsearch-7.15.2 配置IK中文分词器+拼音分词

文章目录1. 下载分词器2. es集成pinyin3. 启动es4. 自定义分词5. 映射模型6. 初始化数据7. 查询索引8. 效果图9. 开源项目1. 下载分词器 ik中文分词器 中文分词器&#xff1a;https://github.com/medcl/elasticsearch-analysis-ik 拼音分词器 链接&#xff1a;https://github.…

Gartner 容器报告:阿里云与 AWS 并列第一,领先微软、谷歌

近日&#xff0c;国际知名调研机构 Gartner 发布 2020 年容器公有云竞争格局报告&#xff0c;阿里云再度成为国内唯一入选厂商。Gartner 报告显示&#xff0c;阿里云容器服务在中国市场表现强劲&#xff0c;产品形态丰富&#xff0c;在如 Serverless 容器、服务网格、安全沙箱容…

每个程序员都必须知道的8种通用数据结构

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 数据结构是一种特殊的组织和存储数据的方式&#xff0c;可以使我们可以更高效地对存储的数据执行操作。数据结构在计算机科学…

ElasticSearch 从安装开始_01

文章目录1. windows 环境2. linux3. HEAD 插件安装4. 分布式安装5. Kibana 安装1. windows 环境 首先打开 Es 官网&#xff0c;找到 Elasticsearch&#xff1a; https://www.elastic.co/cn/downloads/elasticsearch 然后点击下载按钮&#xff0c;选择合适的版本直接下载即可。…

硅谷2020最新大数据学习路线:科学使用这一招,12周助你成为数据分析师

来源 | 智领云科技责编 | Carol数据科学到底是什么&#xff1f;数据科学是一门将数据变得有用的学科&#xff0c;它包含三个重要概念&#xff1a;统计、机器学习、数据挖掘/分析。《数据科学杂志》曾提出&#xff1a;“所谓的‘数据科学’&#xff0c;指的是那些任何与数据相关…

新基建带来新机遇!大数据产业发展需“四驱”推动

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 近段时间以来&#xff0c;“新基建”一次热度不断攀升&#xff0c;受到了科技、产业界的高度关注。实际上&#xff0c;新基建…

Spring Boot简单多线程定时任务实现 | @Async | @Scheduled

Spring Boot简单多线程定时任务实现 实现步骤 1 创建一个Spring Boot项目 2 定义定时任务&#xff1a; package com.jmd.timertasktest.task;import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.Async; impor…

【机器学习】AI系统实时监测独居老人症状

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 老年人是疫情中的高危人群。美国疾病控制与预防中心3月18日发布的报告显示&#xff0c;在美国&#xff0c;约80%新冠肺炎死者…

老码农90%的程序员都是瞎努力!这份路线教你成为高手

在大数据浪潮当中&#xff0c;数据分析是这个时代的不二“掘金技能”。我们每一个人&#xff0c;每天无时无刻都在生产数据&#xff0c;一分钟内&#xff0c;微博上新发的数据量超过10万&#xff0c;b站的视频播放量超过600万......这些庞大的数字&#xff0c;意味着什么&#…

构建实时数据仓库首选,云原生数据仓库AnalyticDB for MySQL技术解密

阿里云分析型数据库重磅推出基础版&#xff0c;极大降低了用户构建数据仓库门槛。高度兼容MySQL&#xff0c;极低的使用成本和极高的性能&#xff0c;使中小企业也可以轻松的搭建一套实时数据仓库&#xff0c;实现企业数据价值在线化。 AnalyticDB for MySQL的产品系列包括基础…

ElasticSearch 中的中文分词器该怎么玩?_03

内置分词器 ElasticSearch 核心功能就是数据检索&#xff0c;首先通过索引将文档写入 es。查询分析则主要分为两个步骤&#xff1a; 词条化&#xff1a;分词器将输入的文本转为一个一个的词条流。 过滤&#xff1a;比如停用词过滤器会从词条中去除不相干的词条&#xff08;的&a…

阿里云安全运营中心:DDoS攻击趁虚而入,通过代理攻击已成常态

应用层DDoS攻击与传统的DDoS攻击有着很大不同。传统的DDoS攻击通过向攻击目标发起大流量并发式访问造成服务不可用&#xff0c;系统瘫痪&#xff0c;这种方式比较容易被识破&#xff0c;且市场上已经有成熟的应对方案。而近年来兴起的应用层DDoS攻击流量则会伪装成正常的流量&a…

中国移动云智融合峰会 | 1+1>2, 引领创新发展

云智融合&#xff0c;揽胜九天乘着“新基建”的东风&#xff0c;云计算、人工智能等新技术已成为新一轮科技革命的重要推动力。9月22日&#xff0c;由中国移动政企事业部、技术部主办&#xff0c;中国移动云能力中心、研究院承办&#xff0c;中国移动科协协办的中国移动云智融合…

云原生安全助力在线教育三分钟搞定安全防护

导语 这个假期&#xff0c;一场不期而遇的疫情让远程教学成为新常态。在线学习成为全国各地老师和学生们的统一方式。据交银国际研究部数据显示&#xff0c;疫情期间&#xff0c;在线教育企业加速获客&#xff0c;春节后日活跃用户数较春节期间增长5000万&#xff0c;用户活跃…

ElasticSearch 索引基本操作_04

文章目录1. 新建索引2. 索引注意事项3. 更新索引4. 索引权限5. 索引查看6. 删除索引7. 索引关闭和打开8. 索引复制9. 索引别名1. 新建索引 插件新建索引 通过 head 插件新建索引 在 head 插件中&#xff0c;选择 索引选项卡&#xff0c;然后点击新建索引。新建索引时&#xf…

从零开始入门 K8s | 理解 RuntimeClass 与使用多容器运行时

作者 | 贾之光 阿里巴巴高级开发工程师 本文整理自《CNCF x Alibaba 云原生技术公开课》第 30 讲&#xff0c;点击直达课程页面。 关注“阿里巴巴云原生”公众号&#xff0c;回复关键词“入门”&#xff0c;即可下载从零入门 K8s 系列文章 PPT。 一、RuntimeClass 需求来源 …

从程序媛到微软全球 AKS 女掌门人,技术女神驾到!

来源 | CSDN据 Stack Overflow 发布的《2020年开发者年度调查报告》显示&#xff0c;在参与统计的 65,000 名程序员中&#xff0c;92&#xff05;是男性程序员&#xff0c;男女比例悬殊。可回首 IT 历史长河&#xff0c;热爱技术、富有创新思维、编程能力超群的“代码女神”们始…