2012年6月8号晚上,呼叫中心外呼办公室,一个恐怖的夜晚,一个让我终生难忘的夜晚,天气阴,晚上还下点小雨。白天,这里办公室全是妹纸,再加上开着空调,加上这天气,半夜三更,阴气太盛。。。
以前晚上加班我们都在呼叫办公室,那边晚班的有4,5个人,我们都在那边忙碌,时不时还说说话,困了,找晚班的方兴云去楼梯口抽只烟,精神一下就上来了,这次为了搞灾备,由于白天我们都在外呼这边,晚上也没有搬地方,接着在这干,从晚上零点过后,开始清理CRM操作日志,一边看着欧洲杯,一边执行命令,由于操作日志太多,有1亿多条,只有每段删除,每次删除一个月的数据,大概要用15到20分钟,刚开始杨三还在弄,我在旁边看球,执行一条命令后,就是无尽的等待,以前杨三晚上加班基本上都不睡觉的,这家伙坐着坐着,居然睡着了。。。。
删除一个月后,等待20分钟,修改命令,再删除一个月,就这样一步一步地操作。。。。。等到快天亮的时候,原计划两小时搞定的事,结束足足搞了6个小时,2011年的日志还有12月还没搞完,我给杨三说,今天就搞到这里吧,已经删除了7000万条了,剩下一个月就删除,下次再删,等这个命令执行完,我们把数据库重启一下,搞定了回去睡觉,真困啊。
我先把SQL停止服务,就这个时候,阴差阳错,SQL无响应了,靠,我一下就急了,以前从来没有这种情况,数据库有400G,系统日志有200G,不会出什么问题吧,又等了好几分钟,还是没有反映,按照常规办法,ctrl+alt+del 任务管理器,结束任务,重新启动SQL。重启成功后,试一下看看有没有什么影响,发现CRM打不开。。。。试了几台机器都是这个问题,查看一下日志,原来数据库连接不上了,马上检查。。。。
结果数据库名后显示“正在恢复”,我日,数据库出问题了,重启也会问题。。。 第一时候我想到重启一下服务器,好,重启服务器应该就OK了,等几分钟,重启服务器后,问题依旧。。。。。接下来事情大家都知道了,想尽各种办法修复数据库,搞了一个小时,8点了,还未成功,这下问题严重了,马上给老大徐立打电话,通报一下情况,预计修复数据库还得花一段时间,立即启动应急预案。。。。
接下来又想了尽种办法*10修复数据库,还是无果,找了专家还是没办法,到中午1点钟还没有恢复,唯一的办法就是恢复最近的备份库,在这个时候事情有一点点进展,把以前的数据库设置为紧急模式,还可以读出数据来,只是不能正常工作,不能修改和写入数据,只能读。。。办法1:先建一个与原数据库一样的库,把紧急数据库里的数据全部导动量去,办法2:恢复备份档,把紧急数据库的数据全部导入进去,办法3:恢复备份档,手动把回档期增加的数据同步上去。由于备份档是2012.6.4号的,中午相差了5天数据,由于MSCRM的内部机制,有N多视图,N多存储过程,N多内部权限,表与表之前还有很多关联,直接导入数据肯定不行的,由于关联性,想修改数据也困难重重,必须按一定顺序才行,由于涉及底层数据库,即使全部导入进去了,也难保不留下后遗症,最终选择了办法3。
CRM已经停了5小时,公司所有业务无法办理,得先恢复业务,数据再想办法同步上去,1点半开始恢6月4号的备份档,等待,等待,除了等待还等待,在修复数据库的过程中,我祈祷奇迹可以出现,一条命令就可以恢复正常,但是最终奇迹没有出现,我求各路神仙帮忙,最近问题还是依旧。3点钟左右,备份档恢复完成,CRM可以正常使用了,由于在这5天里,新增了1000多家新客户,还有10000多条业务数据差异,还有其它各种单据,新业务可以正常输了,以前的老数据要分批同步上去,在这过程中不能影响现有的业务,紧急处理了呼叫软件,把CRM上的代码,实时同步认证暂时关闭,等主要用户数据同步上去,才能打开同步。。。。3点半左右CRM正常工作。。。
接下来的工作就处理数据,第一件事先同步用户资料和缴费资料,然后再同步其它数据。。。。在这个紧急关头,其它部门的同步,呼叫中心,调度中心,后勤人员大家都非常镇定,大家还是跟以前一样,有绪的工作,发现了问题立即上报,大家配合得都非常好,截止到昨天,数据基本同步完成。
数据库灾难发生后,我想了很多,搞了8年数据库相关工作,从来没有遇到过这种问题,重启数据库居然数据库损坏,靠,在这个过程中,刚开始我一直认为是服务器软件的问题,但是从深层次找原因,为啥在操作大数据前没有备份数据库,为啥要节约那点时间,为了节约备份数据库那两三个小时,结果花了两昼夜来同步数据,另外还花了几天时间来修正以前的数据,影响范围波及全公司所有人,造成的损失无法计算。。。。。。千错万错就是没有备份数据,要是在操作数据前备份一下,即使出现什么问题,也不会花这么多时间,数据也不会有差异。。。。。搞管理系统这8年时间,还未曾犯过错,想不到这一次阴沟里翻了船,唉。。。吃一堑长一智啊。
这几天一直在反省中,信息化工作来不得半点马虎,来不得半点麻痹。时间紧,工作重这些都不是理由,该做的备份措施必须得做,必须做到有备无患,要做最坏的准备,把所有能想的意外都要考虑到,作好万全准备才可动工,我相信这是一次深刻的教训,血的教训。虽然现在数据已经基本同步上去,虽然还有一些小问题的问题要处理,以后工作的还要更加小心谨慎,差之毫厘,失之千里。
昨天事情处理完后,给李总打了一个电话,我觉得应该给他打个电话,电话那头李总没有骂我,没有责备我,反而安慰我,让我轻装上阵,犯错不怕,做的事情越多,越会犯错。但是我知道那些错绝对不能犯的,特别是涉及到系统的,由于我的麻痹大意,满以为不会出问题,结果造成这个后果。我面壁,我自责,我反省,。。。。
这次教训给我敲了警钟,不管你经验多丰富也不能麻痹大意,绝对不能马虎,大意害死人啊。。
最后要感谢给予支持专家,感谢给予理解和支持同事,感谢你们的安慰和鼓励,感谢公司领导的信任,事故发生后,我很希望领导能把我一阵痛骂,但是你们没有,虽然公司也开出了处罚,但是我还是无法赎罪,只能以最好的工作状态,最饱满的热情迎接每一天挑战,为公司服好务,为大家作最有力的后盾,以我最大的努力来保驾护航。
4 条评论
数据库的操作真的要很小心,本来是偷懒的,结果出问题。
涉及到后台SQL命令,还是先备份为妙。
我也遇到过此类事件,现在非常小心。
经历即经验
从来都是如此,痛了就记住了。微软技术支持这种事几乎天天见。
这篇算是检查
过程挺恐怖。要是数据丢了,罚金加多少个0都不够啊