惨!一个 rm -rf 把公司整个数据库删没了...
点击关注上方“SQL数据库开发”,
设为“置顶或星标”,第一时间送达干货
作者:zhouyu
链接:cnblogs.com/zhouyu629/p/3734494.html
经历了两天不懈努力,终于恢复了一次误操作删除的生产服务器数据。
对本次事故过程和解决办法记录在此,警醒自己,也提示别人莫犯此错。
也希望遇到问题的朋友能找到一丝灵感解决问题。
事故背景
rm -rf $ORACLE_BASE/*
rm -rf /*
救命稻草:ext3grep
ext3grep /dev/vgdata/LogVol00 --dump-names
ext3grep /dev/vgdata/LogVol00 --restore-all
ext3grep /dev/vgdata/LogVol00 --restore-file var/lib/mysql/aqsh/tb_b_attench.MYD
ext3grep /dev/vgdata/LogVol00 --dump-names >/usr/allnames.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
extundelete /dev/vgdata/LogVol00 --restore-directory var/lib/mysql/aqsh
灵机一动:Binlog
mysql-binlog0001 mysql-bin.000009 mysql-bin.000010
ext3grep /dev/vgdata/LogVol00 --restore-file var/lib/mysql/mysql-bin.000001
mysqlbinlog /usr/mysql-bin.000010 | mysql -uroot -p
后记
本次安排 MM 进行服务器维护时没有提前对她进行说明厉害情况,自己也未重视,管理混乱,流程混乱。一个在线的生产系统,任何一个改动一定要先谋而后动。 自动备份出现问题,没有任何人检查。脱机备份人员每次从服务器上下载 1K 的文件却从未重视。需要明确大家在工作岗位上的责任。 事故发生后,没有及时发现,造成部分数据写入磁盘,造成不可恢复问题。需要编写应用监控程序,服务一旦有异常,短信告警相关责任人。 根据评论提醒,再加一条:不能使用 Root 用户来操作。应该在服务器上开设不同权限级别的用户。
ext3grep: init_directories.cc:534: void init_directories(): Assertion `lost_plus_found_directory_iter != all_directories.end()' failed.
最后给大家分享我写的SQL两件套:《SQL基础知识第二版》和《SQL高级知识第二版》的PDF电子版。里面有各个语法的解释、大量的实例讲解和批注等等,非常通俗易懂,方便大家跟着一起来实操。
有需要的读者可以下载学习,在下面的公众号「数据前线」(非本号)后台回复关键字:SQL,就行
数据前线
后台回复关键字:1024,获取一份精心整理的技术干货
后台回复关键字:进群,带你进入高手如云的交流群
记得帮忙点「赞」和「在看」↓
谢谢啦
评论