由於一些原因,MariaDB 出問題了,提示
Table 'tbl_name' doesn't exist
好在 MariaDB 的容器預設啓用 InnoDB File-Per-Table Tablespaces。其他方式恢復無果後打算直接從 .ibd
恢復資料。
- 新建一個 database;
- 用
mysqlfrm
或者dbsake
讀取原先的.frm
獲得 schema; - 用原先的 schema 重建 table,但去掉除
PRIMARY KEY
外的所有KEYS
; - 執行
ALTER TABLE table_name DISCARD TABLESPACE;
; - 將舊有的
.frm
和.ibd
複製到新 database 的資料夾內; - 執行
ALTER TABLE table_name IMPORT TABLESPACE;
。
基本上,如果 .ibd
還正常的話就可以看到 columns 了,最起碼能恢復一些資料備用。
更多參考:
- InnoDB File-Per-Table Tablespaces
- MariaDB/MySQL — Restore Database From .frm And .ibd Files by Badal Naik on 2019-02-17