如何從.myd
,.myi
,.frm
文件恢復我的一個MySQL數據庫?如何從.myd,.myi,.frm文件中恢復MySQL數據庫
回答
可以,只要將文件複製到數據文件夾的適當命名的子目錄的目錄,因爲它是MySQL的完全相同的版本,並且保留了所有相關文件在該目錄中。如果你沒有所有的文件,我敢肯定你會遇到問題。
如果我沒有相同版本的MySQL,我該怎麼辦? – 2013-09-07 19:37:12
如果這些是MyISAM表,然後將.FRM,.MYD和.MYI文件放入數據庫目錄(例如,/var/lib/mysql/dbname
)將使該表可用。它不必與它們來自相同的數據庫,相同的服務器,相同的MySQL版本或相同的體系結構。您可能還需要更改該文件夾的所有權(例如,chown -R mysql:mysql /var/lib/mysql/dbname
)
請注意,權限(GRANT
等)是mysql
數據庫的一部分。所以他們不會隨着桌子一起恢復;您可能需要運行相應的GRANT
語句來創建用戶,授予訪問權限等。(恢復mysql
數據庫是可能的,但你必須要小心的MySQL版本和mysql_upgrade
實用的任何需要的運行。)
其實,你可能只需要.FRM(表結構)和.MYD(表數據),但是你必須修復表來重建.MYI(索引)。
唯一的限制是,如果你是降級,你最好檢查發行說明(可能運行修表)。當然,較新的MySQL版本增加了功能。
[雖然這應該是顯而易見的,如果你混搭表,這些表之間關係的完整性是你的問題; MySQL不會在意,但你的應用程序和你的用戶可能會。另外,這種方法根本不適用於InnoDB表。只有MyISAM數據,但考慮到你有文件,你的MyISAM]
如果沒有在information_schema表中添加適當的條目,這真的會起作用嗎?我的意思是MySQL需要知道查找這些文件的權利? – Zenshai 2009-05-18 19:17:31
information_schema表格實際上並不存在,它們只是進入內部數據庫狀態的視圖。請參閱http://dev.mysql.com/doc/refman/5.0/en/information-schema.html – 2009-05-18 19:41:08
哇,我覺得很骯髒,但從我認爲是安裝MySQL4的整個目錄中刪除我的MySQL5.1只是奇蹟般地重新創建了桌子。沒有重新啓動或任何東西(在Windows上)。 – Dave 2010-08-24 17:46:20
我覺得.MYI你可以從MySQL中修復。
如果您看到這些類型的MySQL錯誤消息: 數據庫無法執行查詢(查詢)1016:無法打開文件:'sometable.MYI'。 (錯誤:145) 錯誤消息:1034:表的錯誤密鑰文件:'sometable'。嘗試修復它 然後你可能有一個墜毀或損壞的表。
您可以檢查並從MySQL提示這樣的修表:
check table sometable;
+------------------+-------+----------+----------------------------+
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------------------------+
| yourdb.sometable | check | warning | Table is marked as crashed |
| yourdb.sometable | check | status | OK |
+------------------+-------+----------+----------------------------+
repair table sometable;
+------------------+--------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------+--------+----------+----------+
| yourdb.sometable | repair | status | OK |
+------------------+--------+----------+----------+
,現在你的表應該是罰款:
check table sometable;
+------------------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------+
| yourdb.sometable | check | status | OK |
+------------------+-------+----------+----------+
有一點需要注意:
的.FRM文件具有您的表格結構,並且特定於您的MySQL版本。
.MYD文件不是特定於版本的,至少不是次要版本。
的.MYI文件是具體的,但可以被排除在外,並與REPAIR TABLE
再生像其他的答案說。
這個答案的要點是讓你知道,如果你有一個表的模式轉儲,那麼你可以使用它來生成表結構,然後用你的備份替換這些.MYD文件,刪除MYI文件並修復它們。這樣,您可以將備份恢復到其他MySQL版本,或者在不使用mysqldump
的情況下完全移動數據庫。移動大型數據庫時,我發現這非常有用。
注意,如果你要重建MYI文件,然後正確使用REPAIR TABLE的是:
REPAIR TABLE sometable USE_FRM;
否則,你可能會得到另一個錯誤。
http://forums.devshed.com/mysql-help-4/mysql-installation-problems-197509.html
它說要重命名ib_ *文件。我已經做到了,它讓我回到了數據庫。
簡單!創建一個虛擬數據庫(比如abc)
將所有這些.myd,.myi,.frm文件複製到mysql \ data \ abc其中mysql \ data \是所有數據庫中.myd,.myi,.frm的地方被存儲。
然後去phpMyadmin,去數據庫abc,你會發現你的數據庫。
最簡短的答案 – 2017-03-31 08:33:17
對於那些安裝了Windows XP並安裝了MySQL服務器5.5的應用程序,數據庫的位置是C:\ Documents and Settings \ All Users \ Application Data \ MySQL \ MySQL Server 5.5 \ data,除非您更改了位置MySql Workbench安裝GUI。
問題是關於從特定文件類型中恢復,而不是在Windows XP MySQL 5.5中可以找到這些文件的地方。 – Danpe 2012-10-20 12:43:20
我剛剛發現解決這個問題。我在Windows上使用MySQL 5.1或5.6 7.
- 複製從舊的文件,該文件是位於「C的.FRM文件和ibdata1中:\程序數據\的MySQL \ MSQLServer5.1 \數據「
- 停止在當前的SQL實例
- 轉到位於datafolder的SQL Server實例 」C:\程序數據\的MySQL \ MSQLServer5.1 \數據「
- 粘貼ibdata1中和文件夾你的數據庫包含哪些內容從您要恢復的文件中找到.frm文件。
- 啓動MySQL實例。
無需爲此恢復找到.MYI和.MYD文件。
遵循這些步驟(在其他一切失敗後)並使用'innodb_force_recovery = 4'級別(在這種情況下不確定是否需要)。謝天謝地! – 2013-12-17 15:34:03
供參考:'ibdata1'是InnoDB,而不是MyISAM。 – derobert 2015-04-22 16:14:31
上面的描述不足以讓事情對我有用(可能是密集或懶惰),所以一旦我找到答案來幫助我將來創建此腳本。希望它可以幫助別人
vim fixperms.sh
#!/bin/sh
for D in `find . -type d`
do
echo $D;
chown -R mysql:mysql $D;
chmod -R 660 $D;
chown mysql:mysql $D;
chmod 700 $D;
done
echo Dont forget to restart mysql: /etc/init.d/mysqld restart;
我找到了一個解決方案,將文件轉換爲.sql
文件(然後可以導入.sql
文件到服務器並恢復數據庫),而無需訪問/var
目錄中,因此你不需要成爲服務器管理員來執行此操作。
它要求您的計算機上安裝XAMPP或甲基苯丙胺。
- 您已經安裝了XAMPP後,瀏覽到安裝目錄下(通常
C:\XAMPP
)和子目錄mysql\data
。完整路徑應該是C:\XAMPP\mysql\data
裏面你會看到你所創建的任何其他數據庫的文件夾。複製&將文件夾全部粘貼
.myd
,.myi
和.frm
文件。該文件夾的路徑應該是C:\XAMPP\mysql\data\foldername\.mydfiles
然後在瀏覽器中訪問
localhost/phpmyadmin
。選擇剛剛粘貼到mysql\data
文件夾中的數據庫,然後單擊導航欄中的導出。選擇將其導出爲.sql
文件。然後它會彈出詢問保存文件的位置
就是這樣!您(應該)現在有一個.sql
文件,其中包含最初爲.myd
,.myi
和.frm
文件的數據庫。然後,您可以通過創建一個新的數據庫,然後按「導入」的導航欄,然後按照步驟將其導入
- 1. MySQL .frm/.myd/.myi
- 2. 如何在OS X Lion中恢復MySQL .frm .MYD .MYI文件
- 3. 從.MYD,.MYI和.frm文件恢復SQL表,mysql找不到.frm文件
- 4. 如何恢復我的MYI,MYD表從.FRM
- 5. 恢復mysql備份.myd .frm
- 6. mysql:從frm文件恢復數據庫
- 7. 從* .frm文件恢復數據庫 - mysql?
- 8. 如何從MySQL .frm中恢復數據?
- 9. 如何從frm,ib_logfile0和ib_logfile1文件恢復mysql數據庫
- 10. .frm .MYD .MYI 1文件有3個不同的擴展名
- 11. 什麼是在MySQL中創建表時生成的文件(.opt,.frm,.MYD,.MYI)
- 12. MySQL InnoDB數據庫恢復使用.frm文件和ibdata文件
- 13. 從* .frm文件恢復MySQL InnoDb
- 14. 爲什麼ibdata1文件佔用的空間比.frm + .MYD + .MYI文件少?
- 15. 從ibdata1,ib_logfile0,ib_logfile1和.frm文件恢復數據庫
- 16. 恢復從備份ibdata + FRM文件數據庫體積
- 17. 從frm文件恢復表和數據庫和
- 18. 從.frm,ibdata和ib_logfile恢復MySQl數據庫
- 19. 如何使用CPanel中每個表的.frm,.MYD和.MYI文件訪問var文件夾和MySQL數據庫文件夾?
- 20. 損壞的MySQL表 - 「無法找到文件」錯誤;任何方式來恢復丟失的.myd和.myi文件?
- 21. 如何從mysql命令行恢復mysql xml數據庫文件?
- 22. 通過複製其數據文件(.frm,.MYD等)備份MySQL數據庫是否是錯誤的?
- 23. 如何從備份文件中恢復Mysql數據庫
- 24. 如何從WAMP恢復MySQL數據庫?
- 25. 從數據文件中恢復mysql數據庫
- 26. 從數據文件夾備份中恢復mysql數據庫
- 27. 如何從MySql數據文件中恢復數據?
- 28. 如何在mysql中恢復數據庫?
- 29. 如何從MySQL數據庫恢復數據庫表
- 30. MySQL從.dat文件恢復數據
雖然我回答了這一點,它確實屬於對Serverfault其導入到另一臺服務器通過phpmyadmin。 – derobert 2009-05-18 19:11:01
@chandrajeet你應該真的接受最投票的答案。 – Tower 2011-10-16 10:07:36
嘿chandrajeet,你爲什麼不接受derobert的回答?我確認它也適用於我。這不適合你嗎? http://stackoverflow.com/help/someone-answers – bostaf 2015-03-17 17:12:47