誤刪數(shù)據(jù)有驚無險(xiǎn)

“啊!”房間里傳出我的聲音,一個(gè)聽上去驚慌中帶著絕望的凄慘叫聲。

手賤,手賤啊!我不小心刪除了數(shù)據(jù)庫數(shù)據(jù)。原本是想刪掉其中一張表的數(shù)據(jù)的,結(jié)果一個(gè)走神,刪錯(cuò)了。這是我們最大的一張表,關(guān)鍵的數(shù)據(jù)都在這兒。

沒有主從備份,沒有dump出sql語句,沒有...

雖然是實(shí)驗(yàn)用的數(shù)據(jù)庫,安全級(jí)別低,但是數(shù)據(jù)本身還是蠻重要的。當(dāng)初實(shí)在太兒戲,沒有及時(shí)備份。

當(dāng)然了,定下神來,我知道數(shù)據(jù)庫還是有辦法恢復(fù)的,只是不確定是不是一定可以迅速恢復(fù)。

“不用擔(dān)心,云服務(wù)器還可以恢復(fù)鏡像。”確實(shí),這是最后的辦法。但是這就涉及到代碼的問題,代碼需要先備份到別的地方。我需要一個(gè)更好的方法。

mysqlbinlog!這個(gè)神一般的名字出現(xiàn)了。趕緊找到/log里的binlog日志,看看最新的,很好,就是今天改動(dòng)過。趕緊!

分兩步:

  1. 從binlog導(dǎo)出記錄

mysqlbinlog --start-date='年月日 時(shí)分秒' --stop-date='年月日 時(shí)分秒' master-bin.000006 >re.sql

上面這個(gè)操作,把記錄從binlog里導(dǎo)出sql語句,重定向到re.sql里。

  1. 把re.sql重新生成新的數(shù)據(jù)庫

mysql -hxxx -Pxxx -uxxx -pxxx < re.sql

這樣,就利用re.sql重新生成了和原來一樣的數(shù)據(jù)庫。這里要注意,為了方便,我把原來的數(shù)據(jù)庫的結(jié)構(gòu)語句導(dǎo)出保存后(以防恢復(fù)失敗),刪除,然后才用re.sql重新建了個(gè)一樣的數(shù)據(jù)庫。否則,會(huì)報(bào)錯(cuò),當(dāng)然了,因?yàn)閞e.sql里包含了建庫建表語句嘛,你不刪掉,自然報(bào)錯(cuò),因?yàn)闀?huì)mysql發(fā)現(xiàn)你要新建的庫和表都存在。

另外,很重要的,最好做這兩個(gè)操作的mysql版本和要生成庫的mysql版本一致。我因?yàn)榉?wù)器上有不止一個(gè)mysql版本,一開始做操作的時(shí)候用了不同的版本來操作binlog和生成新的庫,導(dǎo)致報(bào)錯(cuò)。


像在廚房炒菜一樣,偶爾失誤,記錄起來以后回顧。如果mysql里的庫或者表被誤刪除,也可以恢復(fù),關(guān)鍵詞是binlog。

此文由電流首發(fā)于簡書,轉(zhuǎn)載請(qǐng)注明出處。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容