概述
今天主要做個實驗,當某張資料庫表.frm文件被刪除後,只剩下.ibd文件,應該如何去恢復呢?
一、環境模擬
1、環境準備
create database test;use test;CREATE TABLE `t` ( `id` int(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert into t values(1),(2),(3);
2、手動刪除.frm文件
rm -rf t.frm
二、在不重啟資料庫情況下恢復
1、在另一個資料庫實例新建相同表結構的表
use sys;CREATE TABLE `t` ( `id` int(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2、把新庫的.ibd文件遷移到源庫下
cp -a ../sys/t.frm .
3、查看數據
三、重啟資料庫情況下
1、重啟資料庫
systemctl restart mysqld
2、在另一個資料庫實例新建相同表結構的表
use mysql;CREATE TABLE `t` ( `id` int(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3、把新庫的.ibd文件遷移到源庫下後測試
cp -a ../mysql/t.frm .
可以發現已恢複數據。
覺得有用的朋友多幫忙轉發哦!後面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注下~