1.如果寶塔數(shù)據(jù)庫有備份如下圖,可以先恢復(fù)到備份那天的數(shù)據(jù),做一個(gè)應(yīng)急處理,讓大部分用戶可以繼續(xù)使用
2.想要完成mysql的刪前恢復(fù),mysql必須開啟了二進(jìn)制日志,寶塔面板下這一功能是默認(rèn)開啟的,想要確定你的mysql是否開啟,最直接的辦法,就是去/www/server/data目錄下,看看有沒有幾個(gè)mysql-bin文件或者全盤搜索全盤搜索mysql-bin文件,像下圖這樣的:
如果沒有這種數(shù)據(jù),是否覺得經(jīng)常出現(xiàn) /www/server/data目錄過大,一勞永逸圖省事關(guān)掉這個(gè)功能那就真的芭比Q了。
注意:操作之前,將mysql-bin文件全部備份下,以免失誤帶來不可逆的損失。服務(wù)器中假如有其他的數(shù)據(jù)庫,也請(qǐng)?zhí)崆皞浞菹隆?/div>
開始操作
1.在寶塔終端或者ssh中root權(quán)限下,使用命令:
/www/server/mysql/bin/mysqlbinlog --start-datetime="2022-04-23 12:00:00" --stop-datetime="2022-05-11 11:00:00" /www/server/data/mysql-bin.0000* > redata.sql
其中的/www/server/mysql/bin/mysqlbinlog是mysqlbinlog程序的位置,這樣寫的好處是不用增加配置系統(tǒng)環(huán)境變量,start和stop是劃定時(shí)間段,注意結(jié)束時(shí)間不能是刪除數(shù)據(jù)庫之后的時(shí)間,也就是整個(gè)時(shí)間段必須在刪除數(shù)據(jù)庫之前,假如無法精確,那盡量提前到幾天前,開始的時(shí)間要早于數(shù)據(jù)庫建立的時(shí)間,假如記不清,那可以刪掉開始時(shí)間,簡(jiǎn)寫為
/www/server/mysql/bin/mysqlbinlog --stop-datetime="2022-05-11 11:00:00" /www/server/data/mysql-bin.0000* > redata.sql
注意mysql-bin.0000*的寫法是包含了全部所有的數(shù)據(jù)庫信息,執(zhí)行起來比較費(fèi)時(shí),假如你可以根據(jù)mysql-bin文件的大小和修改時(shí)間,確定某個(gè)具體的mysql-bin文件,那也可以寫具體文件名,例如mysql-bin.000001,一般對(duì)應(yīng)的文件都比較大。
2.進(jìn)入 /www/server/data 目錄下查看redata.sql或者全局搜索 redata.sql是否出現(xiàn)了
假如有了redate.sql文件,在數(shù)據(jù)庫中新建數(shù)據(jù)庫,數(shù)據(jù)庫名最好和刪掉的數(shù)據(jù)庫同名,然后執(zhí)行下面的命令:
mysql -uroot -p -f 新建數(shù)據(jù)庫名 < redata.sql
AI寫代碼
假如一切順利,你的數(shù)據(jù)庫會(huì)恢復(fù)到刪除前的狀態(tài),有些情況下只能部分恢復(fù),比如我?guī)偷倪@個(gè)女大生,恢復(fù)后一些關(guān)聯(lián)并未生效,需要重新寫程序關(guān)聯(lián)一下,不清楚問什么會(huì)存在這個(gè)情況。
因?yàn)槟壳斑@種方法已經(jīng)滿足當(dāng)下需求,也并未在使用其他方法,如果用到不是寶塔,或者mysql二進(jìn)制關(guān)閉了,那本教程將不適合,搜索本站看看是否有其他方法。