如何尽量避免生产事故
文章目录
运维不好当啊。上个月炉石传说数据库故障导致数据损坏刚刚补偿完毕,这两天又出了个GitLab误删生产数据库。本文聊聊尽量避免生产事故的一些方法。
我看到圈内讨论里有人说,重要系统维护的时候必须两个人一起干活,一个做另外一个在旁边看。这有点儿像是结对编程的思路。我觉得两个人一起固然会好一点,但从结对的实际经验来看,一来可能导致效率更低,二来两个人一起也不能保证不会出问题。大部分情况下这两个人的水平并不是一致的,水平高的人操作,容易导致另一个人只是干看着;而水平低的人操作,反而增加了误操作的几率,需要水平高的人紧盯着。
还有人说,改造一下rm -rf
,让它只能删空目录,我觉得这是一个不错的点子。由于人总是可能会出错,所以由一个机制来保证(法制而非人治),效果应该更加理想。不过这种办法也有几个问题存在。一是所有的机器都需要替换并保持rm
命令,二是操作的时候还是不免会稍微降低效率,三是误操作一般是在低意识的时候发生,rm
的报错,固然有可能会警醒操作者,但也有可能在惯性思维的引导下使操作者直接调用重命名后的老rm
。还有其它的办法吗?
我也来抛砖引玉一个:如果从数据库同步上着手呢?只要是关于删除数据库、数据表(数据记录单谈,视需求而定)的操作,都创建新库来备份旧数据而非直接删除。缺点一是需要修改同步工具的代码,工作难度比较大;二是需要定期清理同步数据库。
至于各种灾难恢复演练,确实很有必要,可惜目前的现实是大家每天手上都是一堆活儿,加上IT人员流动性又高,可操作性就欠缺了一点。无论如何,从性价比上来说,一个定期的备份绝对是避免进一步损失的救命稻草。当然,还有不断地学习……