記一次真實的線上事故:一個update引發(fā)的慘案荐捻!

前言

??從事互聯(lián)網(wǎng)開發(fā)這幾年黍少,參與了許多項目的架構(gòu)分析,數(shù)據(jù)庫設(shè)計处面,改過的bug不計其數(shù)厂置,寫過的sql數(shù)以萬計,從未出現(xiàn)重大紕漏魂角,但常在河邊走昵济,哪有不濕鞋,就在五一假期的頭一天野揪,我干了職業(yè)生涯中最愚蠢访忿,也是最刺激的一件事:執(zhí)行update的時候忘了添加where條件,結(jié)果更新了整張表(系統(tǒng)最重要的一張表)的時間字段斯稳。海铆。。

項目背景介紹

??簡單介紹一下項目背景:大家可以把其理解為一個文章檢索系統(tǒng)挣惰,前臺用戶端通過輸入日期卧斟、關(guān)鍵字以及文章類型可以查詢出對應(yīng)的文章內(nèi)容并查看:

前臺

??后臺管理端可以通過多維度對現(xiàn)有的文章進行維護(使用過我開發(fā)的代碼生成器的朋友一定對下面的界面很眼熟,沒錯通熄,后臺(包括界面)百分之90的代碼都是我拿它生成的):

后臺

要命的update

??當(dāng)時整個系統(tǒng)的開發(fā)工作全都壓在了我一個人的身上唆涝,而且工期很緊,只有不到一周的時間就要上線唇辨,臨危受命廊酣,只能硬扛。

??系統(tǒng)前臺使用人群主要為企業(yè)的財務(wù)人員并且使用的時間比較分散赏枚;后臺使用人群為內(nèi)部管理員(只有兩位)亡驰;每年新添加的文章數(shù)大概兩三千左右的樣子。綜合考慮下來饿幅,基本不會有什么并發(fā)量凡辱,數(shù)據(jù)量也不大,緩存是沒必要了栗恩,搜索引擎更是大材小用透乾,所以為了快,便采用SpringBoot+MySql的方式進行開發(fā)磕秤。

??最終乳乌,項目如期完成,來到了最后的線上部署階段市咆,當(dāng)時是4月30號下午三點左右汉操,在檢查數(shù)據(jù)的時候,我發(fā)現(xiàn)了一條格式有誤的日期數(shù)據(jù)蒙兰,于是在navicat執(zhí)行了這條sql磷瘤,這正是災(zāi)難的開始:

update article set addtime = '2019-07-26 00'

??芒篷。。采缚。NO针炉,wait!仰担!執(zhí)行完畢之后糊识,我意識到大事不妙,企圖rollback摔蓝,然并卵,navicat是自動提交的愉耙。贮尉。。朴沿,由于使用的是測試環(huán)境猜谚,也沒有對數(shù)據(jù)庫做任何備份。赌渣。魏铅。心中一萬匹草泥馬飄過,冷靜坚芜,我要冷靜览芳,現(xiàn)在要做的是把數(shù)據(jù)恢復(fù)到之前的樣子,也就是把數(shù)據(jù)回退到執(zhí)行這條sql之前最近的時間點鸿竖。

??我開始在網(wǎng)上查閱相關(guān)資料沧竟,發(fā)現(xiàn)開啟binlog是數(shù)據(jù)恢復(fù)的前提,如果沒有開啟缚忧,不好意思悟泵,常規(guī)辦法不可恢復(fù)!

??當(dāng)時我腦瓜嗡嗡的闪水,如果沒有開啟binlog糕非,那就真的涼涼了,我緊張的連接到遠程服務(wù)器球榆,cd到mysql的安裝目錄朽肥,內(nèi)心不斷祈禱:一定要有啊芜果!一定要有熬铣省!別搞我右钾!

??蚁吝。旱爆。。當(dāng)我看到var文件夾下的mysql-bin.000002文件時窘茁,長舒一口氣怀伦,還有的救,老天果然還是眷念我的山林。

??剩下的操作就簡單了房待,根據(jù)網(wǎng)上的信息進行匯總,得出執(zhí)行以下命令便可獲得指定數(shù)據(jù)庫指定時間段內(nèi)所有的sql語句:

/usr/local/mysql/bin/mysqlbinlog  
/usr/local/mysql/var/mysql-bin.000002
# 指定數(shù)據(jù)庫名稱驼抹,注意是數(shù)據(jù)庫桑孩,不是表
--database=xxx
# 起始時間
--start-datetime='2020-04-26 00:00:00' 
# 結(jié)束時間
--stop-datetime='2020-04-30 15:00:00' > backup.sql

??為了保險起見,我備份了mysql目錄下的所有文件框冀,然后執(zhí)行了以上命令流椒,結(jié)果意外的順利,當(dāng)前目錄下生成了backup.sql文件明也。

??然后我drop掉命令中指定的database宣虾,執(zhí)行backup.sql腳本,一行行OK閃過温数,持續(xù)了十秒左右的樣子戛然而止绣硝,期間沒有報錯,感覺可以撑刺,有戲鹉胖!在navicat中刷新,打開article表猜煮,謝天謝地次员,數(shù)據(jù)恢復(fù)了:

恢復(fù)

??最后,項目成功部署上線王带,一個update引發(fā)的慘案也就此悄無聲息的畫上了句號淑蔚。

結(jié)語

??通過此次事件,讓我明白了備份的重要性愕撰,俗話說得好:有備無患刹衫。其次,在執(zhí)行update搞挣,delete語句時带迟,一定要記得開啟事務(wù),這樣一旦出了問題可以rollback囱桨!

附:喜歡的朋友可以關(guān)注公眾號 “螺旋編程極客” 第一時間獲取最新內(nèi)容更新仓犬!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市舍肠,隨后出現(xiàn)的幾起案子搀继,更是在濱河造成了極大的恐慌窘面,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叽躯,死亡現(xiàn)場離奇詭異财边,居然都是意外死亡,警方通過查閱死者的電腦和手機点骑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門酣难,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人黑滴,你說我怎么就攤上這事憨募。” “怎么了跷跪?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵馋嗜,是天一觀的道長。 經(jīng)常有香客問我吵瞻,道長,這世上最難降的妖魔是什么甘磨? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任橡羞,我火速辦了婚禮,結(jié)果婚禮上济舆,老公的妹妹穿的比我還像新娘卿泽。我一直安慰自己,他們只是感情好滋觉,可當(dāng)我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布签夭。 她就那樣靜靜地躺著,像睡著了一般椎侠。 火紅的嫁衣襯著肌膚如雪第租。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天我纪,我揣著相機與錄音慎宾,去河邊找鬼。 笑死浅悉,一個胖子當(dāng)著我的面吹牛趟据,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播术健,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼汹碱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了荞估?” 一聲冷哼從身側(cè)響起咳促,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤稚新,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后等缀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體枷莉,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年尺迂,在試婚紗的時候發(fā)現(xiàn)自己被綠了笤妙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡噪裕,死狀恐怖蹲盘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情膳音,我是刑警寧澤召衔,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站祭陷,受9級特大地震影響苍凛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜兵志,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一醇蝴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧想罕,春花似錦悠栓、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至楼镐,卻和暖如春癞志,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鸠蚪。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工今阳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人茅信。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓盾舌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蘸鲸。 傳聞我的和親對象是個殘疾皇子妖谴,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,960評論 2 355