微盟程序員刪庫導致股價暴跌10億,如何防止程序員刪庫到跑路
這兩天有個特別火的事情,段子竟然成真了!微盟公司有個運維人員人員,因為個人原因,把公司的數據庫刪個精光,整個網站崩潰,因此,微盟公司估計大跌近10個億。程序員刪庫到跑路,這個我們以前常說的段子,沒想到又一次在現實中發生了!在今天早些時候,微盟已經宣布新用戶已經恢復使用,而舊用戶的數據將在28號前恢復。數據庫對于一個系統,就好比一個建筑的根基,數據庫被刪庫,就好比摩天大樓的支持柱損壞。既然數據庫這么重要,那么,我們這么保證數據庫的安全,防止數據被刪除呢?
曾經有人這么想,如果我杭州的支付寶的數據庫炸了,那么我們是不是可以不用還花唄了。答案顯然不可能,在現實的生產環境中,我們很少只使用一個數據庫,通常一臺機器會發生單點故障,那樣子系統的可用性明顯就不高。在生產環境中,我們通常會使用多個數據庫,有些是主庫的備份,如果這個備份只是當主庫發生故障的時候用來應急,我們稱之為冷備。每次數據庫的變更操作,都會同步到備庫,假如主庫發生故障,我們可以切換到備庫,這樣子用戶幾乎沒有感知到后臺發生過如此驚險的事情。所以,假如程序員或者運維人員惡意摧毀數據的硬件,或者刪除數據,假如不是通過數據庫命令,就不會被同步到備庫上,這個時候,程序員只能刪庫失敗。

image
假如數據真的是被程序員使用數據庫命令刪除地,并且已經同步到備庫上,這個時候該怎么辦呢?一般情況下,我們的數據庫都是有離線備份的,也就是每天三更半夜的時候,都會把前一天的存量數據打包起來,放到別的機器上,以備不時之需。那么對于今天才產生的新數據,怎么處理呢?基本上,每個數據庫操作都有日志,例如我們最常用的Mysql,就有binlog,在我們日常每次操作數據庫的時候,都會寫下一條對應的日志,所以,我們只要取昨天的離線數據,然后回放今天的數據即可。

那么如何保證數據庫的安全呢?
1.限制帳戶權限,核心的數據庫,一般都不能隨便分配寫權限,想要獲取寫權限需要審批,并且,不同的賬號,不同的數據之間要進行權限分離,避免一個賬號可以刪除所有庫。
2.定期進行演練,進行數據恢復,一旦發生故障,也可以安然自若,不必驚慌失措。
3.最重要的,還是要善待員工,不要天天加班,開車都不能疲勞駕駛,何況是開數據庫的。多給程序員放點工資,介紹女朋友,讓他對生活充滿信息,畢竟對生活有信心的人,才不會去鋌而走險。