1. 程式人生 > 其它 >根據.frm .ibd檔案恢復表

根據.frm .ibd檔案恢復表

恢復思路:

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.03
sec)

6、查詢資料

mysql> select * from tt;
+----+
| id |
+----+
|  2 |
|  3 |
|  4 |
+----+
3 rows in set (0.00 sec)