點(diǎn)擊上方[全棧開發(fā)者社區(qū)]→右上角[...]→[設(shè)為星標(biāo)?]近日,國外在線記分牌網(wǎng)站 KeepTheScore 的數(shù)據(jù)庫管理員(DBA)幾杯紅酒下肚后,意外刪除了他們的生產(chǎn)數(shù)據(jù)庫,導(dǎo)致超過 30 萬個(gè)記分牌和相關(guān)數(shù)據(jù)瞬間灰飛煙滅。
經(jīng)歷了 5 分鐘的絕望,技術(shù)人員將網(wǎng)站置于維護(hù)模式,開始竭力恢復(fù)。萬幸該網(wǎng)站采用了云托管數(shù)據(jù)庫,云提供商每天都會(huì)進(jìn)行一次自動(dòng)備份。到當(dāng)天晚間 23:15 左右, 即發(fā)生災(zāi)難的 30 分鐘之后,網(wǎng)站順利恢復(fù)上線。然而過去 7 個(gè)小時(shí)的數(shù)據(jù)卻徹底蒸發(fā),更確切地講,是 2020 年 10 月 17 日下午 15:47 至 23:21(CET 時(shí)間)之間創(chuàng)建的任何記分牌或添加的任何分?jǐn)?shù)統(tǒng)統(tǒng)丟失。據(jù)悉,雖然本次事件的導(dǎo)火索是 DBA 醉酒誤刪,但 KeepTheScore 坦誠表示,刪除數(shù)據(jù)庫的函數(shù)是在完全嚴(yán)肅清晰的情況下編寫而成的—— 功能是刪除本地?cái)?shù)據(jù)庫,并從頭創(chuàng)建所有必須表的功能。def database_model_create():"""Only works on localhost to prevent catastrophe"""database = config.DevelopmentConfig.DB_DATABASEuser = config.DevelopmentConfig.DB_USERNAMEpassword = config.DevelopmentConfig.DB_PASSWORDport = config.DevelopmentConfig.DB_PORTlocal_db = PostgreSQLDatabase(database=database, user=user, password=password, host='localhost', port=port)local_db.drop_tables([Game, Player, Round, Score, Order])local_db.create_tables([Game, Player, Round, Score, Order])print('Initialized the local database.')
然而該函數(shù)在在當(dāng)天晚上意外連接到了生產(chǎn)數(shù)據(jù)庫,結(jié)果引發(fā)了如上所示的驚魂半小時(shí)。更具戲劇性的是,事件發(fā)生幾天前,他們剛剛在 Twitter 上轉(zhuǎn)發(fā)過有關(guān)“刪庫跑路”的段子。誰料玩笑話竟一語成讖,經(jīng)過本次事件,想必各技術(shù)人員們是不敢再隨便玩這樣的梗了。本次失誤的代價(jià),是長達(dá) 7 個(gè)小時(shí)(15:47 - 23:21)的記分牌數(shù)據(jù)一去不返,KeepTheScore 已明白,擁有便于快速恢復(fù)的備份有多么重要。計(jì)算機(jī)系統(tǒng)太過復(fù)雜,沒有快速響應(yīng)的恢復(fù)機(jī)制,總有一天小毛病會(huì)再次引發(fā)連鎖反應(yīng)。有些是誤刪,有些是介質(zhì)故障,還有的是惡意刪除,所導(dǎo)致的后果也不盡相同。國外有思科離職 5 個(gè)月的程序員為了報(bào)復(fù)公司,刪庫跑路,一行 rm-rf/* 的代碼刪掉了思科 456 臺(tái)虛擬機(jī),導(dǎo)致思科損失 240 萬美元,相當(dāng)于人民幣 1650 萬。無獨(dú)有偶,今年 2 月份的時(shí)候,國內(nèi)微盟刪庫事件傳遍全網(wǎng),微盟研發(fā)中心一運(yùn)維人員通過 VPN 登入服務(wù)器,幾行代碼惡意刪庫,直接讓上市公司微盟的市值一天之內(nèi)蒸發(fā)超 10 億元,數(shù)百萬用戶受到直接影響。千防萬防家賊難防,面對(duì)刪庫事件,企業(yè)的數(shù)據(jù)備份與快速恢復(fù)建設(shè)非同兒戲,需在外部流程和內(nèi)部建設(shè)兩方面進(jìn)行綜合完善。1. 完善故障演練流程,作為一項(xiàng)共同目標(biāo)來協(xié)作完成,做到忙而不亂;2. 完善故障響應(yīng)流程,不同等級(jí)的問題系統(tǒng)由具體的負(fù)責(zé)人介入;4. 引入審計(jì)流程,實(shí)現(xiàn)獨(dú)立的服務(wù)審計(jì)機(jī)制;5. 業(yè)務(wù)異常預(yù)警,需要同步相關(guān)鏈路層。
就算外部流程盡善盡美,KeepTheScore 刪庫事件也無法追究,創(chuàng)始人不會(huì)解雇 DBA ,因?yàn)樗麄兪峭粋€(gè)人。
因此,在事件發(fā)生后,如何快速恢復(fù)數(shù)據(jù)接管業(yè)務(wù)才是重中之重。此次事件中,KeepTheScore 得幸于云供應(yīng)商的定時(shí)備份,能夠在半小時(shí)內(nèi)恢復(fù)運(yùn)行。將數(shù)據(jù)放在云端的保險(xiǎn)系數(shù)相對(duì)較高,因?yàn)樵贫擞凶銐蚨嗟墓操Y源作為支撐。但定時(shí)備份的弊端也相伴而生——長達(dá) 7 個(gè)小時(shí)(15:47 - 23:21)的記分牌數(shù)據(jù)恢復(fù)無門。外部建設(shè)全線崩塌,再尖端的技術(shù)人才也沒轍了。這時(shí)候,如果云服務(wù)供應(yīng)商可以提供快照和異地遠(yuǎn)程復(fù)制災(zāi)備服務(wù),補(bǔ)救及時(shí)也不至于有這樣的“烏龍”,反而還會(huì)向外界展示出企業(yè)的遠(yuǎn)見,完成一場完美的“危機(jī)公關(guān)”。CDP,比云平臺(tái)更細(xì)粒度的數(shù)據(jù)恢復(fù)。行業(yè)流行的?CDP(Continuous Data Protection,持續(xù)數(shù)據(jù)保護(hù))技術(shù),可以使用快照迅速恢復(fù)或者回滾到某個(gè)歷史時(shí)刻,然后再依照 CDP 技術(shù)快速恢復(fù)到最新數(shù)據(jù)狀態(tài)。異地災(zāi)備服務(wù)也是比較成熟的技術(shù),CDP 持續(xù)數(shù)據(jù)保護(hù)技術(shù)加上異地容災(zāi)架構(gòu)強(qiáng)強(qiáng)聯(lián)合,使得恢復(fù)能夠可控、高效,具體恢復(fù)指南請(qǐng)看??信息化劫匪:Clop病毒勒索德國巨頭2000萬美金。CDP 技術(shù)將實(shí)時(shí)備份功能與快照技術(shù)相結(jié)合,在操作系統(tǒng)層監(jiān)控,實(shí)時(shí)記錄每一個(gè) IO 變化,并在每個(gè)時(shí)間周期后自動(dòng)進(jìn)行快照,快照在線完成,無備份窗口,不消耗主機(jī)資源。數(shù)據(jù)災(zāi)難發(fā)生后,可根據(jù)數(shù)據(jù)變化日志快速定位到需要恢復(fù)的時(shí)間點(diǎn),將數(shù)據(jù)一鍵恢復(fù)到異常點(diǎn)之前,把住數(shù)據(jù)安全最后一關(guān)。
簡而言之,備份恢復(fù)體系的建設(shè)是企業(yè) IT 系統(tǒng)的基座,在危機(jī)當(dāng)頭,這一基礎(chǔ)建設(shè)卻是力挽狂瀾于既倒的“最后一根稻草”。如果 KeepTheScore 能擁有 CDP 技術(shù),那長達(dá) 7 個(gè)小時(shí)的記分牌數(shù)據(jù)便不至于丟失,所謂“刪庫跑路”的段子也只是茶余飯后的笑談。覺得本文對(duì)你有幫助?請(qǐng)分享給更多人
關(guān)注「全棧開發(fā)者社區(qū)」加星標(biāo),提升全棧技能
本公眾號(hào)會(huì)不定期給大家發(fā)福利,包括送書、學(xué)習(xí)資源等,敬請(qǐng)期待吧!
如果感覺推送內(nèi)容不錯(cuò),不妨右下角點(diǎn)個(gè)在看轉(zhuǎn)發(fā)朋友圈或收藏,感謝支持。
好文章,留言、點(diǎn)贊、在看和分享一條龍吧??