有经验的程序员恐怕都知道rm -rf /*的威力,并且rm -rf $ORACLE_BASE/*如果 ORACLE_BASE 这个变量没有赋值,那命令就变成了:rm -rf /*,当你身边有人不(没)小(经)心(验)在生产环境按下这个核按钮要跑路时你可以实力装x,用以下方式拯救:
1.赶快对盘 umount,防止重新写入补删文件扇区;
2.安装ext3grep,下载地址拿去,记得下面有个补丁也要下不然文件怕是恢复不全https://code.google.com/p/ext3grep/
安装好了先执行扫描文件名命令:
ext3grep /dev/vgdata/LogVol00 --dump-names
打印出了所有被删除文件及路径,基本你就知道要恢复的文件有哪些了,下来可以恢复了,执行命令:
ext3grep /dev/vgdata/LogVol00 --restore-all
到现在应该恢复的差不多了,假如不幸文件没恢复全,但是又设置了数据库Binlog,那你该开心了,执行命令:
ext3grep /dev/vgdata/LogVol00 --restore-file var/lib/mysql/mysql-bin.000001
也许你的也log文件好几个,只要成功一个就行,恢复好执行命令:
mysqlbinlog /usr/mysql-bin.000010 | mysql -uroot
可能会卡住,卡住就是正在恢复,稳住就ok
另外警告️两条!!!1、生产环境用监控程序,服务一旦有异常,短信告警相关责任人,如有数据丢失情况,第一时间防止写入,否则时间长了神仙也救不了。2、不能使用 Root 用户来操作。应该在服务器上开设不同权限级别的用户。好的工作机制最重要,亡羊补牢总是悲哀的.