簡單情況下:進入原來mysql安裝路徑下的data文件夾下,找到相應(yīng)的庫和ibdata1,進行copy,就可回復(fù)原來的數(shù)據(jù)。
石柱土家族網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,石柱土家族網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為石柱土家族1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的石柱土家族做網(wǎng)站的公司定做!
復(fù)雜情況下:
從另一臺機上把MySQL數(shù)據(jù)庫的mysql文件夾拷貝到本地機上,目的是恢復(fù)本地機對數(shù)據(jù)的訪問和操作。經(jīng)過如下幾種情況的操作。
1.
在本地重裝MySQL(安裝目錄D:\Program
Files\MySQL\MySQL
Server
5.0),直接把mysql文件夾拷貝至D:\Program
Files\MySQL\MySQL
Server
5.0\。結(jié)果,失敗:數(shù)據(jù)庫連接錯誤。
2.
卸載后重裝MySQL,將D:\Program
Files\MySQL\MySQL
Server
5.0\下的數(shù)據(jù)備份,只把mysql\data文件夾全部內(nèi)容拷貝到D:\Program
Files\MySQL\MySQL
Server
5.0\data下。結(jié)果,失敗:數(shù)據(jù)庫連接錯誤。將備份的數(shù)據(jù)還完覆蓋。結(jié)果,失敗,還是連接不上數(shù)據(jù)庫。
3.
卸載后重裝MySQL,將mysql\data文件夾里的cf1,last文件夾(這兩個是原來MySQL里的數(shù)據(jù)庫)拷貝進D:\Program
Files\MySQL\MySQL
Server
5.0\data。連接成功,在Navicat
for
MySQL里看到數(shù)據(jù)庫cf1和last,但是不能訪問,因為數(shù)據(jù)全為零。明白了原來data里以數(shù)據(jù)庫命名的文件存儲的是數(shù)據(jù)庫的表結(jié)構(gòu),不是元數(shù)據(jù)。下一步,把data文件夾里的ibdata1文件(3.4G大,明顯存儲了元數(shù)據(jù))拷貝到D:\Program
Files\MySQL\MySQL
Server
5.0\data里,代替原來的ibdata1文件。重啟電腦,打開Navicat
for
MySQL,連接成功,數(shù)據(jù)可以訪問操作。
至此,操作終于成功。其實當(dāng)初在那臺機上把數(shù)據(jù)導(dǎo)出來,而不是現(xiàn)在直接把文件夾mysql復(fù)制過來會更容易恢復(fù)。但那臺機已經(jīng)重裝了系統(tǒng),也就是說MySQL失效了。
在解決的過程中,以下幾種嘗試:
1.如果開啟了日志,直接mysqlbinlog 使用日志恢復(fù)即可。
2.如果不是刪除了一個表的部分數(shù)據(jù),而是刪除整個表,那么可以在刪除后馬上用磁盤數(shù)據(jù)恢復(fù)軟件嘗試恢復(fù)。(因為刪除表后會有文件被刪除,而刪除表的部分數(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ù)什么的。(事實上,這個文件是存儲現(xiàn)有表數(shù)據(jù)的,其實也可以設(shè)置成每個表一個文件。)
4.mysql下有ib_logfile0和ib_logfile1兩個文件,其實這兩個文件里,記錄了Mysql的一些事物日志,用于事務(wù)的前滾后滾,是Mysql自身使用的,這個文件用文本工具打開后,有很多亂碼,但卻可以查找到被刪除的少量數(shù)據(jù)的insert記錄,極少數(shù)的亂碼通過前后語句找出了原文,最終通過事物日志恢復(fù)了刪除的文件。
注:用事物日志恢復(fù),需要幾個前提。
1:知道被刪除數(shù)據(jù)的大概位置,不要這邊查找,那邊又不斷有新數(shù)據(jù)插入。
2:因為有很多亂碼,適用于查找少量數(shù)據(jù),而不是用作大量數(shù)據(jù)的恢復(fù),浪費體力。
3:如果二進制日志沒開,沒有備份,那么只能用這種方法恢復(fù)了。
1、先在運行中輸入services.msc,找到MysQL的服務(wù),將其停止;
2、然后備份新安裝的MY.INI和DATA這兩個目錄,直接將其原來mysql/data下的文件拷到新安裝的mysql/data目錄下即可;
3、啟動MysQL服務(wù)。該方法只在新安裝的數(shù)據(jù)庫與舊數(shù)據(jù)庫版本相同的情況下實驗成果。重新打開navicat,發(fā)現(xiàn)原來的數(shù)據(jù)庫都可以使用了。