搞运维,起得比鸡早,睡得比“鸡”晚,操着卖白粉的心,拿着卖白菜的钱。php
每天当心翼翼的呵护着那个心肝宝贝业务。但,人非圣贤孰能无过,谁没有脑壳发晕手发抖的时候?html
无心中看到了这篇《下厨房6月26日数据丢失事故总结》,有些细节和经验值得学习和参考。mysql
一、误操做不可怕,可怕的你误删的数据连个备份都没有。因此,必须保证数据库有一份以上的备份,注意,是备份,而不只靠主从复制(若是你敲了个DROP DATABASE呢?)linux
二、误删文件后,中止MySQL进程是错误的!即便分区彻底没有文件,mysql的进程继续运行,只要保留这个现场,能够从内存中获取更多的数据库结构信息,对恢复数据很是有帮助。sql
三、不要再对硬盘进行读写操做,拿去专业公司作数据恢复,多作一个硬盘dd备份,以防不测。shell
四、保留binlog,导入前为预防新数据与老数据冲突,把全部表的id都加到一个大值。数据库
五、联系搜索引擎的快照部门,尽可能获取历史快照数据。运维
另,文中提到的沃趣科技这家公司(听说是来自原阿里巴巴DBA/SA团队核心骨干组建的创业公司,提供数据库和系统相关的专业服务和产品)工具
看了下官网介绍,对数据库监控平台QMonitor(在线demo,介绍)还有点兴趣,包括实时报警、状态曲线、报表中心三大模块,以及针对管理员的后台管理模块:
实时报警模块:可以将数据库、主机各项关键指标,根据用户预约义的报警阈值,进行故障报警,让用户对于数据库的任何异常,能第一时间知晓。
状态曲线模块:可以实时展现数据库、主机的关键性能数据,包括:空间、TOP SQL、性能等维度,经过图表等多种方式直观的进行展示。
报表中心:根据收集到的监控、性能数据,生成相应的报表,包括:数据库空间,数据库报警,数据库性能,数据库资源,数据库运行时间等维度。
后台管理模块:提供对数据库、主机、用户进行管理的功能。性能
若是沃趣的同窗看到,请打5毛钱到个人帐户 :)
扩展阅读:《如何从MySQL/InnoDB数据文件中的恢复数据》 by 周振兴,是淘宝MySQL数据库运维负责人
从原文中提炼的精华点(貌似80%内容都被我当成精华了)
一、开源工具Percona Data Recovery Tool for InnoDB(简称PDRTI),使用指南
二、恢复原理:全部InnoDB的数据都是索引的方式组织的,并且全部的数据都是存储在16KB的数据块中。恢复的过程分几步,分解全部数据文件为单个16KB大小的页面,根据每一个页面的标记的数据起点开始尝试匹配,若是与给定表定义的size合适,认为匹配成功,则输出记录。
三、利用shell脚本,让工具并行恢复
四、从索引中恢复:若是知道数据表的索引结构,若是数据部分损坏,可是索引部分完整,能够经过这个办法提取出来更多的字段信息。
五、误删文件后,正常若是进程没有被关闭,进程所打开的文件是不会被覆盖的,能够经过从/proc文件系统拷贝的方式恢复出当前仍然打开的文件(参考:Recovering files from /Proc)。若是数据文件和日志文件都可以cp出来,那么有但愿让MySQL本身启动,并根据事务日志恢复出当前一致的数据。