记一次数据库操作事故
事件描述:
同事意外删除了测试环境的一张核心表,导致测试环境访问异常。我之前做了数据库的每日备份,我拿出备份的数据文件准备找出被删除的表结构及数据,但是备份文件有二三十兆,打开半天全局搜索到一般就卡住了,断断续续整了半个小时,我决定把原来的库清空,再把备份文件全部导入。很顺利。但是过了一阵别人告诉我数据少了。我去检查的时候定睛一看,我发现备份所在目录挂载的磁盘已经满了,备份在一周之前就停下了。很尴尬我拿一周前的备份恢复了现在的数据。幸好,这个数据库本周内新增的数据只有部分的数据字典项,最后手动把数据给补上了….
总结:
做事最怕做一半,因为做一半最容易出事情。不管是什么环境,数据库备份肯定是必须的,但是我忽略了数据库内容的大小,几个数据库每日备份的文件大小都有几百兆,在做数据库备份的时候都应该想到定时清理。
定时清理的shell脚本也很简单:
1
2
3
4find /xx -mtime +2 -name "*.sql" -exec -rm -rf {} \;
# /xx 指需要清理目录的路径
# +2 指清理两天前的数据
# “*.sql” 指需要清理的文件格式