科技

阿里巴巴開發手冊的1個奇葩規定,源自於一位刪庫的新手程式設計師

程式設計師的最後威脅是刪庫,而跟在刪庫後面的一般就是跑路了,這是什麼原因呢?先跟大家普及一下刪庫是什麼意思,有什麼後果?

資料庫簡而言之可視為電子化的檔案櫃——儲存電子檔案的處所,使用者可以對檔案中的資料進行新增、擷取、更新、刪除等操作。也可以理解為按照資料結構來組織、儲存和管理資料的倉庫。是管理資訊系統、辦公自動化系統、決策支援系統等各類資訊系統的核心部分,一旦資料被刪除,後果十分嚴重。

順豐工程師誤刪庫“被”跑路

順豐工程師刪庫:在接到改需求的訊息後,按照操作流程登陸上了生產資料庫跳轉機,通過navicat-mysql客戶端管理工具,連入SHIVA-OMCS的RUSS庫進行操作。在操作過程中,該運維發現選錯了RUSS 資料庫,打算刪除執行的sql。結果操作失誤,滑鼠跳回到了russ庫,在未確認所選情況的時候,直接delete了。還忽視了彈窗的提示,直接一個回車,russ庫被刪除。導致系統故障,無法使用並持續約590分鐘。該程式設計師也因為操作問題被“跑路”了。

荷蘭程式設計師刪庫跑路

荷蘭海牙的一家雲主機商 也遭遇過被刪庫的經歷,一名前任管理員刪光了該公司所有客戶的資料,並且擦除了大多數伺服器上面的內容,導致使用者資料全部丟失,網路服務癱瘓一週,程式設計師跑的再快也沒用。

阿里巴巴程式設計師差點刪庫

阿里巴巴作為大廠,人員的技術應該都是大牛級別的,但在《阿里巴巴JAVA開發手冊》中,Mysql中有兩條與此事件相關:

禁止使用儲存過程,儲存過程難以除錯和擴充套件,更沒有移植性;

資料訂正(特別是刪除、修改記錄操作)時,要先select,避免出現誤刪除,確認無誤才能更新語句。這兩點很多程式設計師搞不懂,原因就是一個新入職的阿里巴巴員工。

當時的阿里巴巴資料庫可以直接用bash進行後臺的增刪操作,各種監管和操作日誌機制都不是很完善。新入職的程式設計師在使用儲存過程進行update極度重要的表的時候,沒有加where條件就直接瀟灑了敲了一下回車鍵。還好當時他沒有跑路,而是用顫抖的手給DBA打了電話,還好oracle在沒有儲存前回滾是有效果的,沒有造成太大的後果。

如何防止資料被程式刪除呢?

1、通常,架構設計上需要注意,重要資料永遠不要直接刪除,標記為“刪除”狀態。不能給程式的使用者all privileges。Insert、delete、update各類命令的許可權單獨賦予。

2、應用的網路進行分層設計。接入層,應用層,資料層。資料層只對固定的應用伺服器開放。資料庫永遠只放在內網。

3、周密的備份,即使管理員跑路也不怕

來源:月明千里,一個敲程式碼的程式設計師小黑

Reference:科技日報

看更多!請加入我們的粉絲團

轉載請附文章網址

不可錯過的話題