mysql frm和ibd怎么恢复数据库_mysql数据库通过frm和ibd恢复数据
放在阿里云服務器上的一臺Linux云服務器被挖礦了,一個開源系統demo演示網站被人上傳違規信息,站點也被阿里云屏蔽了。準備遷移數據并重置服務器,匆忙之間拷貝了mysql/data目錄下的數據文件就把服務重置了,忘記拷貝ibdata1,ibtmp1,ib_logfile幾個文件了 ,然后悲劇了,還好有frm和ibd數據。
只有frm和ibd文件,數據庫會報錯的,查看表數據行的時候會出現 #1932 – Table ‘wp_users’ doesn’t exist in engine的錯誤提示。說明表結構和表空間對不上,無法識別。這就需要重建表結構和導入表空間了。frm是存儲表結構的文件,ibd是表空間存儲數據用的。
恢復步驟
1.新建庫并導入表結構。 我這個博客使用的是wordpress,那就簡單了。直接下載個安裝一次就有了新的表結構。如果你沒有表結構那么就需要自己一個一個建立了。表結構字段名不一定是原來的,但是數量上必須一致。
2.對新建庫中每一個表執行 ALTER TABLE table_name DISCARD TABLESPACE; 卸載表空間
3.復制所有ibd文件到新建庫的 mysql/data/your_database_name目錄下。
4.導入表空間,ALTER TABLE table_name IMPORT TABLESPACE; 然后就能正常訪問數據庫了
值得注意的幾個問題
1.mysql版本必須要一致,不然會失敗。5.5版本及以下的沒有表空間這一項。
2.新建的數據庫表結構,表名/表字段數量,必須和備份文件中的一致。
總結
以上是生活随笔為你收集整理的mysql frm和ibd怎么恢复数据库_mysql数据库通过frm和ibd恢复数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php mysql切换版本5.7_php
- 下一篇: python怎么样处理excel教程_p