在解決的過程中,以下幾種嘗試:
1.如果開啟了日志,直接mysqlbinlog 使用日志恢復(fù)即可。
2.如果不是刪除了一個表的部分?jǐn)?shù)據(jù),而是刪除整個表,那么可以在刪除后馬上用磁盤數(shù)據(jù)恢復(fù)軟件嘗試恢復(fù)。
(因為刪除表后會有文件被刪除,而刪除表的部分?jǐn)?shù)據(jù),文件還是存在)
3.找數(shù)據(jù)恢復(fù)的公司,使用工具分析ibdata1(分析過程參考一頁一頁查看有沒有歷史記錄存在,使用ibdata1恢復(fù)數(shù)據(jù),應(yīng)該是在了解數(shù)據(jù)表結(jié)構(gòu)的前提下,數(shù)據(jù)庫除ibdata1外其他數(shù)據(jù)受損不能正常使用數(shù)據(jù)庫時嘗試,而不是刪了表數(shù)據(jù)后恢復(fù)什么的。
(事實(shí)上,這個文件是存儲現(xiàn)有表數(shù)據(jù)的,其實(shí)也可以設(shè)置成每個表一個文件。)
4.mysql下有ib_logfile0和ib_logfile1兩個文件,其實(shí)這兩個文件里,記錄了Mysql的一些事物日志,用于事務(wù)的前滾后滾,是Mysql自身使用的,這個文件用文本工具打開后,有很多亂碼,但卻可以查找到被刪除的少量數(shù)據(jù)的insert記錄,極少數(shù)的亂碼通過前后語句找出了原文,最終通過事物日志恢復(fù)了刪除的文件。注:用事物日志恢復(fù),需要幾個前提。
1:知道被刪除數(shù)據(jù)的大概位置,不要這邊查找,那邊又不斷有新數(shù)據(jù)插入。
2:因為有很多亂碼,適用于查找少量數(shù)據(jù),而不是用作大量數(shù)據(jù)的恢復(fù),浪費(fèi)體力。
3:如果二進(jìn)制日志沒開,沒有備份,那么只能用這種方法恢復(fù)了。