這里介紹一種簡(jiǎn)單的方法,就是開啟binlog二進(jìn)制日志,記錄用戶對(duì)MySQL數(shù)據(jù)庫(kù)的所有操作(除了查詢),然后通過mysqlbinlog命令導(dǎo)出為SQL文件(剔除drop語(yǔ)句),最后再恢復(fù)就行,下面我簡(jiǎn)單介紹一下操作過程,實(shí)驗(yàn)環(huán)境Win10+MySQL5.5,感興趣的朋友可以嘗試一下:
1.首先,開啟binlog功能,這個(gè)需要修改MySQL安裝目錄下的my.ini配置文件,在[mysqld]下面添加一行設(shè)置“l(fā)og-bin = mysql-bin”就行,如下:
接著重啟MySQL服務(wù),就可以在MySQL數(shù)據(jù)目錄下看到生成的日志記錄文件—mysql-bin.000001和mysql-bin.index,其中mysql-bin.000001是日志文件,會(huì)自動(dòng)順序遞增,記錄每次數(shù)據(jù)庫(kù)重啟后用戶的所有操作記錄,mysql-bin.index是日志索引文件,記錄所有的日志文件名稱:
2.接著我們就可以模擬數(shù)據(jù)庫(kù)誤刪的過程了,這里我先新建了一個(gè)db數(shù)據(jù)庫(kù),然后創(chuàng)建了一個(gè)test數(shù)據(jù)表,依次insert插入3條數(shù),如下:
然后我們執(zhí)行“drop database db”刪除數(shù)據(jù)庫(kù),再“use db”時(shí)就會(huì)報(bào)錯(cuò),如下,告訴數(shù)據(jù)庫(kù)db不存在:
3.接著就是數(shù)據(jù)庫(kù)恢復(fù)的過程,打開cmd窗口,運(yùn)行“mysqlbinlog --no-defaults binlog日志文件路徑(這里換成你的binlog文件)”命令,就可以看到我們重啟數(shù)據(jù)庫(kù)后所有的數(shù)據(jù)庫(kù)操作記錄,如下,每個(gè)操作都有唯一的對(duì)應(yīng)位置,這里我們需要剔除掉drop語(yǔ)句,也就是恢復(fù)到958這個(gè)位置:
直接運(yùn)行“mysqlbinlog --no-defaults --stop-position="958" binlog日志文件路徑 > D:\test.sql”命令,就可以導(dǎo)出958位置之前的所有數(shù)據(jù)庫(kù)記錄,并重定向?yàn)橐粋€(gè)sql文件,如下,這里你也可以使用start-position參數(shù)指定導(dǎo)出的起始位置:
4.最后我們?cè)龠B接MySQL數(shù)據(jù)庫(kù),導(dǎo)入這個(gè)sql腳本就可以正常恢復(fù)數(shù)據(jù)了,如下,和原始插入的數(shù)據(jù)一樣:
至此,我們就完成了MySQL數(shù)據(jù)庫(kù)的自動(dòng)恢復(fù)。總的來說,整個(gè)過程非常簡(jiǎn)單,只要你熟悉一下上面的操作過程,很快就能掌握的,對(duì)于一些簡(jiǎn)單的數(shù)據(jù)恢復(fù)來說,完全夠用,不過建議還是在日常開發(fā)過程中做好數(shù)據(jù)庫(kù)備份,在生產(chǎn)環(huán)境中慎重使用drop等刪除語(yǔ)句,網(wǎng)上也有相關(guān)教程和資料,介紹的非常詳細(xì),感興趣的話,可以搜一下,希望以上分享的內(nèi)容能對(duì)你有所幫助吧,也歡迎大家評(píng)論、留言進(jìn)行補(bǔ)充。