根據.frm .ibd檔案恢復表
阿新 • • 發佈:2021-10-28
恢復思路:
1、使用dbsake獲取建表語句
https://github.com/abg/dbsake
2、使用mysql表傳輸功能
https://dev.mysql.com/doc/refman/8.0/en/innodb-table-import.html
恢復步驟:
1、根據github下載安裝dbsake
root@ip-172-31-30-45:~# curl -s get.dbsake.net > dbsake root@ip-172-31-30-45:~# chmod u+x dbsake
2、獲取 .frm 檔案表結構,併到資料庫中建表
root@ip-172-31-30-45:~# ./dbsake frmdump ./tt.frm-- -- Table structure for table `tt` -- Created with MySQL Version 5.7.34 -- CREATE TABLE `tt` ( `id` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; root@ip-172-31-30-45:~#
mysql> CREATE TABLE `tt` (
-> `id` int(11) NOT NULL,
-> PRIMARY KEY (`id`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.01 sec)
mysql>
3、解除安裝tt 表
mysql> alter table tt discard tablespace; Query OK, 0 rows affected (0.00 sec)
4、拷貝 tt.ibd 到資料目錄
root@ip-172-31-30-45:/usr/local/mysql57/data/ceshi# cp /root/tt.ibd /usr/local/mysql57/data/ceshi
5、匯入 tt 表
mysql> alter table tt import tablespace; Query OK, 0 rows affected, 1 warning (0.03sec)
6、查詢資料
mysql> select * from tt; +----+ | id | +----+ | 2 | | 3 | | 4 | +----+ 3 rows in set (0.00 sec)