2010-09-26 95 views
1

我有一個數據庫(所有MyISAM表),並且運行MySQL的機器不再可引導。但是,我們擁有數據目錄中的所有MySQL數據文件。我如何從MYD和FRM文件中恢復數據,或者我應該在數據目錄中查看其他任何文件?如何從數據文件中恢復MySQL表?

我一直在做一些搜索,這聽起來像MyISAM我應該能夠將數據庫子目錄從舊的MySQL數據目錄複製到新的MySQL數據目錄。但是,這不適合我。我嘗試恢復的數據庫名稱顯示在phpMyAdmin的數據庫列表中,但所有表顯示「正在使用」並且沒有信息(例如,行數,字節數,列信息等)。對這些表的任何操作(例如,SELECT * FROM {table},REPAIR {table},CHECK {table})都會返回「no such table」錯誤。

我在搜索中遇到的一個工具是MicroOLAP的DBACentral。它有一個應該從FRM/MYD文件恢復數據的組件,但是當我試圖運行它時,它沒有列出它可以從我的FRM/MYD文件恢復的任何表。

這是在運行Vista Business 32bit的開發人員工作站上。 MySQL版本是5.0.27。修好機器後,我去了,得到了完全相同版本的MySQL(v5.0.27),認爲如果我只是放入二進制數據文件,我應該使用相同版本的MySQL來完成。它仍然沒有工作。

任何見解將不勝感激......謝謝!

-Josh

回答

0

我放棄了放棄。我認爲答案是,用我的特定版本的MySQL,這是行不通的。希望從那時起情況有所改善。

+0

什麼是您的特定版本的MySQL?我正在嘗試做類似的事情。 – 2013-05-01 14:34:59

+0

我不記得了 - 對不起。那臺失敗的機器現在是古老的歷史,所以我無法檢查。希望你比我做得更成功! – Josh 2013-05-06 18:05:36

2
  1. 安裝MySQL的版本相同。
  2. 從服務器的數據目錄中刪除mysql目錄並從崩潰的服務器複製它。 這是關鍵要素
  3. 將要恢復的數據庫的目錄複製到新服務器的數據目錄中
  4. start mysql。
  5. 切換到mysql數據庫:USE mysql;並在每個表上運行REPAIR TABLE <table name>
  6. 做同樣的數據庫要恢復

提示:確保2個目錄有像數據目錄

相同的權限如果沒有保存mysql數據庫(mysql目錄中的舊服務器數據目錄,那麼你可以嘗試:

  1. 創建數據庫,數據庫要恢復同名
  2. 然後您可以創建每個表。 (使用相同的結構會很好 - 你有更大的恢復機會)。
  3. 然後停止mysql服務器並從數據庫目錄中刪除文件並用舊服務器中的文件覆蓋它們
  4. 啓動mysql並修復每個表。
+0

嗨,尼克,這些步驟都有道理 - 我已經試過了。他們沒有爲我工作。在這一點上,我放棄了並恢復了一些SQL格式的舊備份。他們不是100%最新的,但他們足夠接近我能夠使用它們,所以我就是這麼做的。 – Josh 2011-04-20 18:28:38