免费体验120秒视频_榴莲榴莲榴莲榴莲官网_2021国产麻豆剧果冻传媒入口_一二三四视频社区在线
當(dāng)前位置:首頁(yè)文章首頁(yè) 新聞中心

我不小心刪除了所有的數(shù)據(jù)

作者:佚名  來(lái)源:互聯(lián)網(wǎng)  發(fā)布時(shí)間:2011-12-9 8:44:35  點(diǎn)擊:

  

本文是從 I Accidentally Deleted All Our Data 這篇文章翻譯而來(lái)。

      昨天,我和在Famigo公司的同事Cody 和 Shaun 一起去參加 MongoDallas 研討會(huì)。我們?cè)趲讉(gè)月前聽(tīng)說(shuō)了這個(gè)會(huì)議,感到去這個(gè)會(huì)議將會(huì)是次有趣的活動(dòng)。我們公司幾乎所有的東西都是存儲(chǔ)在MongoDB里的,Cody會(huì)在這個(gè)會(huì)議上做一次演講介紹我們的使用情況。

  會(huì)議辦的非常好,進(jìn)行的過(guò)程中沒(méi)有出什么意外情況。(跟上次活動(dòng)一樣,10gen公司給會(huì)議提供了大量的飲料。)午餐期間,我們跟 GameStop公司的幾個(gè)家伙侃大山。其中有個(gè)人問(wèn)我們?cè)谡江h(huán)境服務(wù)器上做過(guò)的最糟的一件事情是什么。我想不出什么,但Cody給大家講了一個(gè)他在以 前的崗位上的一個(gè)故事。是他把完全重寫的代碼放到服務(wù)器上后,整個(gè)環(huán)境立即崩潰了。

  可結(jié)果卻是,我在下午實(shí)現(xiàn)了我對(duì)生產(chǎn)環(huán)境犯下的最大的錯(cuò)誤。

  午餐之前,在兩個(gè)演講之間,我檢查了一下我們的服務(wù)器,看看是否一切正常。我發(fā)現(xiàn)了一個(gè)異常,跟保持唯一數(shù)據(jù)值有關(guān)。我們的API中的一個(gè)競(jìng)爭(zhēng)關(guān)系的條件語(yǔ)句導(dǎo)致了數(shù)據(jù)庫(kù)中的兩個(gè)賬戶保存了相同的email地址,但每個(gè)賬戶的email地址必須是唯一的。

  我迅速的定位了問(wèn)題,在我們的缺陷跟蹤系統(tǒng)了添加了一條記錄,描述了問(wèn)題的原因,以及產(chǎn)生沖突的賬戶。我刪除了這個(gè)賬戶,因?yàn)樗鼪](méi)有跟任何數(shù)據(jù)關(guān)聯(lián),我們的客戶在下次登錄時(shí),系統(tǒng)會(huì)自動(dòng)初始化一條記錄。

  然后,我繼續(xù)查找,看看數(shù)據(jù)庫(kù)中是否還有其它產(chǎn)生沖突的賬戶。我循環(huán)數(shù)據(jù)庫(kù)里的每個(gè)賬戶,依次保持它們(沒(méi)有做任何改變);有問(wèn)題的數(shù)據(jù)會(huì)在保持時(shí)拋出異常信息。我在Python的交互shell里編碼,所以當(dāng)時(shí)的代碼并沒(méi)有保留下來(lái),但它們大概是這樣的:

  from mongoengine import connect

  from models import Family

  connect('the-production-database')

  for family in Family.objects:

  family.save()

  代碼執(zhí)行完并沒(méi)有出現(xiàn)異常,于是我關(guān)掉了筆記本,把注意力重新放到會(huì)議上。幾個(gè)小時(shí)后,Cody收到了大量的報(bào)告服務(wù)器響應(yīng)變慢的郵件。他迅速的打開(kāi)了筆記本,我在旁邊看著他的屏幕。當(dāng)我看到這一幕時(shí),幾乎誘發(fā)了我的心臟病:

  >>> Family.objects.count()

  38

  這數(shù)量少了好幾個(gè)數(shù)量級(jí)!我們極度不安,從會(huì)議廳里溜了出去。

  事情很快就明白了,我們的帳戶信息,而且只是帳戶信息,被弄丟了。我查看新近出現(xiàn)的賬戶信息,把它們加入的時(shí)間和我最后一次提交操作的時(shí)間對(duì)比。它們不可思議的接近。

  不幸的是,我的屏幕會(huì)話沒(méi)有足夠的回滾信息來(lái)讓我看看今天早些時(shí)間究竟做了什么。因?yàn)槲沂窃诮换ナ絪hell里執(zhí)行的,我找不到任何歷史記錄。最大可能的猜測(cè),我應(yīng)該是干了類似這樣的事情:

  for family in Family.objects:

  family.delete()

  我暈倒!執(zhí)行save 和 delete 操作都不會(huì)返回任何信息,所以在看著帳戶信息在屏幕上滾動(dòng)時(shí)沒(méi)有發(fā)現(xiàn)任何的異常。(我并不確認(rèn)究竟是怎么回事,但這是最簡(jiǎn)單的解釋。奧坎氏簡(jiǎn)化論在這里打倒了我的自負(fù)。)

  會(huì)場(chǎng)的網(wǎng)速很差勁,而且找不到電源插座,于是我們收拾起東西,匆忙的想找一家附近咖啡館。結(jié)果發(fā)現(xiàn),達(dá)拉斯市中心所有的咖啡館下午4點(diǎn)鐘全關(guān)門了。幸運(yùn)的是,它們提供24小時(shí)的免費(fèi)wifi,于是我們就在一家星巴克外面安營(yíng)扎寨,開(kāi)始了工作。

  (達(dá)拉斯這個(gè)地方要比我們預(yù)想的冷的多。當(dāng)我們離開(kāi)奧斯汀時(shí),那里是華氏80度,陽(yáng)光明媚。而在達(dá)拉斯,這里一直40度,陰天,有風(fēng)。我們?nèi)齻(gè)穿著T恤、牛仔褲的人擠在筆記本前,希望能在凍僵前盡快解決問(wèn)題。)

  這周早期,我們有個(gè)數(shù)據(jù)庫(kù)備份,我們把它導(dǎo)入到了我們的開(kāi)發(fā)環(huán)境中,Cody把它恢復(fù)到了一個(gè)獨(dú)立的數(shù)據(jù)庫(kù)里。我寫了一個(gè)腳本,把丟失的賬戶信息一一從一個(gè)數(shù)據(jù)庫(kù)導(dǎo)入另一個(gè)數(shù)據(jù)庫(kù)。很幸運(yùn),進(jìn)行的很順利,所有的信息都恢復(fù)了。

  剩下還有一些要做的事情,要檢查所有對(duì)這些數(shù)據(jù)的引用都指向了正確的地方,但最重要的大火是已經(jīng)被撲滅了。11月17號(hào),它一直保留下來(lái),成為了我們的備份宣傳日。

相關(guān)文章

文章評(píng)論

軟件按字母排列: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
免费体验120秒视频_榴莲榴莲榴莲榴莲官网_2021国产麻豆剧果冻传媒入口_一二三四视频社区在线
主站蜘蛛池模板: 中国美女毛片| 久久综合日韩亚洲精品色| 超级乱淫视频播放日韩| av毛片在线看| 香蕉视频一区二区三区| 麻豆传播媒体免费版官网| 欧美丰满熟妇XXXX性| 男人的天堂色偷偷之色偷偷| 竹菊影视欧美日韩一区二区三区四区五区| 夜夜精品无码一区二区三区| 最近2019中文字幕免费看最新| 日韩精品一区二区三区在线观看 | 97久久超碰国产精品2021| 秋霞理论最新三级理论最| 亚洲日韩精品无码专区加勒比| 精品亚洲麻豆1区2区3区| 东京热一精品无码av| 免费看少妇作爱视频| 成人无号精品一区二区三区| 无翼乌本子| 国产精品蜜臂在线观看| 国产精品自产拍在线观看| 成年人在线免费| 卡1卡2卡3卡4卡5免费视频| tstye.cn| 精品中文字幕一区在线| 理论片毛片| 女人扒下裤让男人桶到爽| 天天色天天操综合网| 久久精品国内一区二区三区| 久久久久免费精品国产| 精品乱子伦一区二区三区| 国产婷婷色一区二区三区| 熟妇人妻中文字幕| 99久久无色码中文字幕人妻蜜柚| 娇bbb搡bbb擦bbb| 向日葵app下载网址进入在线看免费网址大全| 亚洲女人毛片| 国产操女人| 亚洲色婷婷综合久久| 国产免费一区二区三区不卡|