一、找回表結構,如果表結構沒有丟失直接到下一步
a、先建立乙個資料庫,這個資料庫必須是沒有表和任何操作的。
b、建立乙個表結構,和要恢復的表名是一樣的。表裡的字段無所謂。一定要是innodb引擎的。
create
table
`test`( `testid` bigint(20)) engine=innodb default charset=utf8;
c、關閉mysql, service mysqld stop;
d、用需要恢復的frm檔案覆蓋剛新建的frm檔案;
e、修改my.ini 裡 innodb_force_recovery=1 , 如果不成修改為 2,3,4,5,6。
f、 啟動mysql,service mysqld start;show create table test就能夠看到表結構資訊了。
二、找回資料
a、建立乙個資料庫,根據上面匯出的建立表的sql執行建立表。
b、找到記錄點。先要把當前資料庫的表空間廢棄掉,使當前ibd的資料檔案和frm分離。
alter
table test discard tablespace;
d、把之前要恢復的 .ibd檔案複製到新的表結構資料夾下,frm 保留。 使當前的ibd 和frm發生關係。
alter
table test import tablespace;
d、將恢復好的資料匯出就行了
frm和 ibd恢復資料
昨日晚上開發告訴我不小心truncate兩個表的資料,要求還原。結果在阿里雲上找到了備份內容,結果是物理備份檔案.frm ibd。心中一萬個草泥馬啊。沒辦法,開始還原吧。1 檢視測試機mysql配置檔案位置 root localhost mysql which mysqld usr sbin mys...
mysql由 frm和 ibd恢復資料
資料小常識 frm存放資料庫的表結構 ibd存放資料內容 1 建立資料庫 2 建立需要恢復的表 這樣就會在對應的資料庫下產生.frm和.ibd檔案 跳坑 建立表時候的字段和需要被恢復的表的一致 3 執行 alter table 表名字 discard tablespace 比如 alter tabl...
通過frm和ibd恢復資料庫
新建空的資料庫,匯入上述表結構 刪除對應的表空間,將表對應的ibd檔案複製到資料目錄下 重新插入表空間 mysql 備份var目錄,初始化資料庫mysqld initialize insecure通過mysqlfrm可以從frm中獲取表結構 新建空的資料庫,匯入上述表結構 刪除對應的表空間,將表對應...