mysql實驗--誤刪資料庫表.frm文件,但.ibd文件存在該如何恢復?

2020-01-13     波波說運維

概述

今天主要做個實驗,當某張資料庫表.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方面的內容,感興趣的朋友可以關注下~


文章來源: https://twgreatdaily.com/RfVYoG8BUQOea5OwVeW-.html