我不小心刪除了所有的資料
| 2011-12-12 09:22 分享: 1
昨天,我和在Famigo公司的同事Cody 和 Shaun 一起去參加 MongoDallas 研討會。我們在幾個月前聽說了這個會議,感到去這個會議將會是次有趣的活動。我們公司幾乎所有的東西都是儲存在MongoDB裡的,Cody會在這個會議上做一次演講介紹我們的使用情況。
會議辦的非常好,進行的過程中沒有出什麼意外情況。(跟上次活動一樣,10gen公司給會議提供了大量的飲料。)午餐期間,我們跟 GameStop公司的幾個傢伙侃大山。其中有個人問我們在正式環境伺服器上做過的最糟的一件事情是什麼。我想不出什麼,但Cody給大家講了一個他在以 前的崗位上的一個故事。是他把完全重寫的程式碼放到伺服器上後,整個環境立即崩潰了。
可結果卻是,我在下午實現了我對生產環境犯下的最大的錯誤。
午餐之前,在兩個演講之間,我檢查了一下我們的伺服器,看看是否一切正常。我發現了一個異常,跟保持唯一資料值有關。我們的API中的一個競爭關係的條件語句導致了資料庫中的兩個賬戶儲存了相同的email地址,但每個賬戶的email地址必須是唯一的。
我迅速的定位了問題,在我們的缺陷跟蹤系統了新增了一條記錄,描述了問題的原因,以及產生衝突的賬戶。我刪除了這個賬戶,因為它沒有跟任何資料關聯,我們的客戶在下次登入時,系統會自動初始化一條記錄。
然後,我繼續查詢,看看資料庫中是否還有其它產生衝突的賬戶。我迴圈資料庫裡的每個賬戶,依次保持它們(沒有做任何改變);有問題的資料會在保持時丟擲異常資訊。我在Python的互動shell裡編碼,所以當時的程式碼並沒有保留下來,但它們大概是這樣的:
from mongoengine import connect from models import Family connect('the-production-database') for family in Family.objects: family.save()
程式碼執行完並沒有出現異常,於是我關掉了筆記本,把注意力重新放到會議上。幾個小時後,Cody收到了大量的報告伺服器響應變慢的郵件。他迅速的開啟了筆記本,我在旁邊看著他的螢幕。當我看到這一幕時,幾乎誘發了我的心臟病:
Family.objects.count() 38
這數量少了好幾個數量級!我們極度不安,從會議廳裡溜了出去。
事情很快就明白了,我們的帳戶資訊,而且只是帳戶資訊,被弄丟了。我檢視新近出現的賬戶資訊,把它們加入的時間和我最後一次提交操作的時間對比。它們不可思議的接近。
不幸的是,我的螢幕會話沒有足夠的回滾資訊來讓我看看今天早些時間究竟做了什麼。因為我是在互動式shell裡執行的,我找不到任何歷史記錄。最大可能的猜測,我應該是幹了類似這樣的事情:
for family in Family.objects: family.delete()
我暈倒!執行save 和 delete 操作都不會返回任何資訊,所以在看著帳戶資訊在螢幕上滾動時沒有發現任何的異常。(我並不確認究竟是怎麼回事,但這是最簡單的解釋。奧坎氏簡化論在這裡打倒了我的自負。)
會場的網速很差勁,而且找不到電源插座,於是我們收拾起東西,匆忙的想找一家附近咖啡館。結果發現,達拉斯市中心所有的咖啡館下午4點鐘全關門了。幸運的是,它們提供24小時的免費wifi,於是我們就在一家星巴克外面安營紮寨,開始了工作。
(達拉斯這個地方要比我們預想的冷的多。當我們離開奧斯汀時,那裡是華氏80度,陽光明媚。而在達拉斯,這裡一直40度,陰天,有風。我們三個穿著T恤、牛仔褲的人擠在筆記本前,希望能在凍僵前儘快解決問題。)
這周早期,我們有個資料庫備份,我們把它匯入到了我們的開發環境中,Cody把它恢復到了一個獨立的資料庫裡。我寫了一個指令碼,把丟失的賬戶資訊一一從一個資料庫匯入另一個資料庫。很幸運,進行的很順利,所有的資訊都恢復了。
剩下還有一些要做的事情,要檢查所有對這些資料的引用都指向了正確的地方,但最重要的大火是已經被撲滅了。11月17號,它一直保留下來,成為了我們的備份宣傳日。
原文:http://taylor.fausak.me/2011/11/18/i-accidentally-deleted-all-our-data/
譯文:http://www.aqee.net/i-accidentally-deleted-all-our-data/
相關文章
- 電腦照片不小心被刪除了怎麼找回來,資料恢復方法有哪些?資料恢復
- 織夢資料庫刪除了怎麼恢復資料庫
- win10office不小心刪除了如何恢復 win10誤刪office的找回步驟Win10
- win10不小心將磁貼的娛樂刪除了怎麼重新新增Win10
- Win10系統將自帶應用商店不小心刪除了如何恢復Win10
- whk我【資料刪除】你個【資料刪除】的
- 電腦檔案不小心刪除了怎麼恢復?兩個方法三分鐘搞定
- 電腦誤刪除檔案怎麼恢復檔案,不小心刪除了電腦的檔案怎麼辦
- 昨天下午16:48分時我刪除了2億8千萬資料,嚇死我了,現在正在回覆中.....
- 不小心刪除IPone手機的資料?你也許需要這個
- DBF資料檔案不小心刪除 oracle登入不瞭解決方法Oracle
- 明明已經刪除了資料,可是表檔案大小依然沒變
- Docker一個漏洞讓駭客侵入刪除了資料庫 | NewsBlur 部落格Docker資料庫
- 資料夾刪除了如何恢復?輕鬆恢復教學
- 我用 Python 找出了刪除我微信的所有人並將他們自動化刪除了Python
- win10為什麼有的空資料夾刪不掉_win10空資料夾刪不掉怎麼辦Win10
- Oracle 刪除資料後釋放資料檔案所佔磁碟空間Oracle
- 【漫畫】活見鬼,明明刪除了資料,空間卻沒減少!
- U盤分割槽刪除了怎麼恢復資料?快來看看吧
- 電腦檔案誤刪除了怎麼恢復找回?誤刪電腦資料恢復方法教程資料恢復
- 桌面程式刪除了,如何找回來
- sd卡中的資料夾刪除了怎麼恢復,SD卡刪除的檔案如何恢復SD卡
- win10flash刪除了如何找回 win10系統flash刪除了如何恢復Win10
- 不小心刪除/etc/passwd檔案怎麼辦
- 不小心刪除的檔案怎麼恢復
- 這年頭怕資料洩露?全密態資料庫:無所謂,我會出手資料庫
- 我所追逐的IT
- Linux 恢復rm -rf命令所刪除的達夢資料檔案Linux
- 縱橫20年,我所經歷的資料開放演化史
- 刪庫後,除了跑路還能怎麼辦?
- 英國政府網站在前端中刪除了jQuery網站前端jQuery
- 我所理解的Arthas
- 我所理解的前端前端
- 我所理解的機器學習機器學習
- 刪除資料
- 不小心刪除,Mac電腦如何批次恢復檔案Mac
- 電腦硬碟資料不小心格式化後,恢復資料的方法介紹硬碟
- 刪除使用者下的所有的objectObject