記一次利用 idb文件和frm文件還mysql數據

記一次利用 idb文件和frm文件還mysql數據

在部署環境的時候,不小心將原有的mysql卸載掉了,幸好保留了原有數據庫的data目錄,裏面包含了幾種類型的數據,在網上查找了相應的說明,下面po處理和大家分享一下:

1.後綴名爲.frm的文件:這個文件主要是用來描述數據表結構和字段長度燈信息
2.後綴名爲.ibd的文件:這個文件主要儲存的是採用獨立表儲存模式時儲存數據庫的數據信息和索引信息;
3.後綴名爲.MYD(MYData)的文件:從名字可以看出,這個是存儲數據庫數據信息的文件,主要是存儲採用獨立表儲存模式時存儲的數據信息;
4.後綴名爲.MYI的文件:這個文件主要儲存的是數據庫的索引信息;
5.ibdata1文件:主要作用也是儲存數據信息和索引信息

從上面可以看出,.ibd儲存的是數據信息和索引信息,ibdata1文件也是存儲數據信息和索引信息,.MYD和.MYI也是分別儲存數據信息和索引信息,那他們之間有什麼區別呢?
主要區別是再於數據庫的存儲引擎不一樣,如果儲存引擎採用的是MyISAM,則生成的數據文件爲表名.frm、表名.MYD、表名的MYI;而儲存引擎如果是innoDB,並且採用獨立儲存的模式,生成的文件是表名.frm、表名.ibd,如果採用共存儲模式的,數據信息和索引信息都存儲在ibdata1中;
接下來,就來到關鍵的步驟了,因爲在linux上直接將data文件夾複製到新裝的mysql的data文件夾沒有起左右,因此選擇將data文件夾下載到了線下,打算用windows環境來操作,完成之後再導回線上。
我的做法是這樣的,我直接把下載好的data裏面的數據庫文件放在本地運行環境的mysql文件夾裏面的data文件夾中。此時,連接數據庫的時候,提示如下報錯:
這裏寫圖片描述
查了一圈,發現可能是mysql的版本不一樣的問題,查了一下,確實原來的版本是5.6,我本地的是5.5。因此先把我本地的mysql升級到了5.6版本再打開,不再提示上面的錯誤。有MYD和MYI後綴名文件的表也可以打得開。但是後綴名是ibd的文件報了表不存在的問題,後面想到了,可能是innodb採用共享的儲存模式,因此把ibdata1的文件也下載下來,放到data文件之後,發現可以用了,最終大功告成了。
不過還是提醒大家,做這些操作的時候記得把原有的數據備份一下,在平常的運維過程中也需要養成備份數據庫的習慣,這樣,纔可以有備無患~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章