由於一些原因,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