视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001 知道1 知道21 知道41 知道61 知道81 知道101 知道121 知道141 知道161 知道181 知道201 知道221 知道241 知道261 知道281
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
被小伙伴们吓哭了:可怕的命令
2020-11-09 19:19:11 责编:小采
文档
  1. 杀手级命令:rm -rf
  2. 2014-5-17-某软件公司在生产环境误删数据库文件
  3. 悲剧一:
  4. 妹子在生产服务器上本意删除Oracle,但脚本中有一句:rm -rf $ORACLE_BASE/*
  5. 不幸变量 ORACLE_BASE 未赋值
  6. Tomcat/MySQL...全删了
  7. 事故发生后,没有及时发现,造成部分数据写入磁盘,加大了不可恢复的几率
  8. 悲剧二:
  9. 找到脱机备份,发现备份文件只有1KB,里面只有几行熟悉的 mysqldump 注释。可用的、最接近的备份时间是2013年年底
  10. 应对:
  11. 把盘 umount,防止继续有数据写入
  12. 把盘以只读方式挂到另一台服务器上进行操作
  13. 用 ext3grep 工具恢复出了 MySQL 几个 binlog 文件
  14. 将 binlog 文件复制到测试服务器,运行 mysqlbinlog /usr/mysql-bin.000010 | mysql -uroot -p 命令,执行 binlog 还原
  15. 数据成功恢复
  16. 2013-6-26-”下厨房“误删数据库主节点分区
  17. 悲剧一
  18. 意图重建备份节点,需要把原来的从节点删除,重新安装,所以先使用了 rm -f 方式删除备份节点分区上的所有文件
  19. 5分钟后,发现刚才删除的是数据库主节点的分区
  20. 悲剧二
  21. 由于4月23日数据库主节点迁移并升级到 MySQL 5.5,导致备份任务停止
  22. 在长达两个月的时间里,一直没有将数据库备份节点恢复工作提上日程
  23. 只有主节点上开启了 binlog
  24. 应对
  25. 把整个分区 dd 成镜像,准备做将来硬盘恢复的备份
  26. 把 memcache 里的数据 dump 出来,以备可能的恢复(郑昀注:但只 dump 了一半,有人把服务重启了)
  27. 重新启用原来的从数据库,由于数据时间只到4月23日,需要调整近两月表结构变更,让最新的代码可以跑起来
  28. 联系上沃趣科技和北亚数据恢复中心,到7月1日上午,北亚数据恢复中心提取到几乎是完整的 ibdata1 文件,至7月2日凌晨4点,恢复了这次得到的所有数据
  29. 7月2日下午4点,北亚提取到 ibdata1 剩下的文件碎片,得到了完整的 ibdata1 文件,MySQL 无报错启动,从而得到了6月26日凌晨事故前的完整数据库
  30. 郑昀注1:对上述两个事件,都是”在MySQL运行情况下通过rm -rfs删除数据库文件“,那么文件到底删了吗?请看下厨房的事后总结:
  31. 『事后从沃趣科技的数据库工程师那里得知,我们第一时间停止 MySQL 防止硬盘继续写入这个应急措施是错误的,即使分区完全没有文件,MySQL 的进程继续运行,只要保留这个现场,可以从内存中获取更多的数据库结构信息,对恢复数据非常有帮助。』
  32. 郑昀注2:有人认为第一时间应该停止 Web 服务,而不是停止 MySQL 实例
  33. Redis的 shutdown 命令
  34. 据传,某东电商网站在某年双十一前出过一次不小的事故,原因居然是程序中要断开 Redis 的链接(命令应为:disconnect),但代码中写的是 shutdown……——Fenng
  35. rsync的源目录和目标目录写反了
  36. 悲剧的是,rsync 不仅同步很快,删除文件速度也很快,你把一个空目录当成源,那真正的源目录的数据瞬间消失……

总结:

备份是王道。

备份的可恢复性检查是王道中的王道。

保持清醒(严禁饮酒操作¥%#^)。

遇事冷静。

参考资源:

1,老周,2014,一次心惊肉跳的服务器误删文件的恢复过程;

2,下厨房,2013,下厨房6月26日数据丢失事故总结;


赠图1枚:

下载本文
显示全文
专题