Mysql如何通過ibd文件恢復(fù)數(shù)據(jù)
Mysql ibd文件恢復(fù)問題
恢復(fù)步驟
1、創(chuàng)建數(shù)據(jù)庫(隨意創(chuàng)建)
2、創(chuàng)建數(shù)據(jù)表(備注:表結(jié)構(gòu)要和要恢復(fù)的表結(jié)構(gòu)一致,row_format要和ibd文件的row_format一致,否則,會提示兩者不一致。 當前row_format=dynamic)
3、表的屬性查看
我們使用:show table status like ‘matlab’\G,查看表的屬性
備注:創(chuàng)建表時候的row_format和表屬性的不一致,基于innodb是,要把row_format設(shè)置成dynamic時,需要修改mysql的全局配置,直接在myql命令中修改:set global innodb_file_format=Barracuda;
4、表錯誤信息查看 show warnings
5、說明我們在恢復(fù)表的時候,要保證row_format和ibd文件的一致,如果ibd文件是compact的話,需要建表的時候,設(shè)置成row_format=compact,在恢復(fù)的時候,自行解決,從第6步開始,重點說明如何去恢復(fù)。
6、恢復(fù)第一步:移除表空間
**alter table matlab DISCARD TABLESPACE;**
7、恢復(fù)第二步:將備份的ibd文件,放到mysql->data->創(chuàng)建的數(shù)據(jù)庫名稱->,將ibd拷貝到此目錄下,如下所示具體路徑查看
-- 使用sql查詢數(shù)據(jù)目錄 **show global variables like '%datadir%';**
8、恢復(fù)第三步:重新導(dǎo)入表空間
**alter table matlab IMPORT TABLESPACE;**
9、當執(zhí)行到上一步完成后,我們發(fā)現(xiàn)數(shù)據(jù)庫中的數(shù)據(jù)已經(jīng)完全恢復(fù)過來了
10、數(shù)據(jù)表的結(jié)構(gòu)一定要和恢復(fù)前的數(shù)據(jù)表結(jié)構(gòu)一致,否則恢復(fù)失敗,導(dǎo)致mysql進程重啟,詳細情況需要查看mysql的error日志進行分析,另外,mysql的CE工具提供了便捷的mysql參數(shù)配置修改功能
mysql基于idb文件恢復(fù)數(shù)據(jù)問題
適用于mysql8.0+,mysql5版本沒測試過
數(shù)據(jù)庫因為磁盤損壞起不來了,好在data目錄下的idb文件還在,可以基于idb文件恢復(fù)數(shù)據(jù)
步驟:
- 創(chuàng)建schem和表
- 將新建表關(guān)聯(lián)
- 復(fù)制idb文件
- import表
注意執(zhí)行順序
創(chuàng)建shcema
需要找一個同版本的mysql數(shù)據(jù)庫,創(chuàng)建一個空的schema
create database test;
然后創(chuàng)建一個相同結(jié)構(gòu)的表結(jié)構(gòu)
//測試環(huán)境數(shù)據(jù)庫損壞,我登錄開發(fā)環(huán)境切換到對應(yīng)db下,查看對應(yīng)的表結(jié)構(gòu) //如果有備份的庫也可以,導(dǎo)入一個schmea查看表結(jié)構(gòu)。或者從開發(fā)人員那里索要表結(jié)構(gòu) show create table dev; //這里是我在開發(fā)環(huán)境上看到的表結(jié)構(gòu) CREATE TABLE `match_rules` ( ? `id` bigint NOT NULL AUTO_INCREMENT, ? `app_id` varchar(32) DEFAULT NULL, ? `rule_id` varchar(32) DEFAULT NULL, ? `rule_type` int DEFAULT NULL, ? `conditions` json DEFAULT NULL, ? `results` json DEFAULT NULL, ? `show_data` json DEFAULT NULL, ? `create_time` datetime DEFAULT NULL, ? `update_time` datetime DEFAULT NULL, ? `valid` int DEFAULT NULL, ? `version_number` int DEFAULT NULL, ? PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=149 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; //粘貼上面的表結(jié)構(gòu),到新建的庫下執(zhí)行,注意切換到對應(yīng)的schema上
將新建表關(guān)聯(lián)
上面我們把表結(jié)構(gòu)創(chuàng)建好了,接下來需要將表關(guān)聯(lián)
ALTER TABLE your_table DISCARD TABLESPACE;
復(fù)制idb文件
首先,將 .ibd 文件復(fù)制到 MySQL 數(shù)據(jù)目錄中,例如 /var/lib/mysql/your_database/ 目錄。
請確保文件具有正確的權(quán)限,并且 MySQL 用戶可以訪問該文件
import表
//執(zhí)行完后我們可以切換到對應(yīng)的表下面,可以看到數(shù)據(jù)了 ALTER TABLE your_table IMPORT TABLESPACE;
//如果是給開發(fā)人員使用,記得授權(quán)
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- MySQL通過binlog實現(xiàn)恢復(fù)數(shù)據(jù)
- Python MySQL如何通過Binlog獲取變更記錄恢復(fù)數(shù)據(jù)
- MySQL通過日志恢復(fù)數(shù)據(jù)的操作步驟
- MySQL通過ibd文件恢復(fù)數(shù)據(jù)的操作過程
- MySQL開啟配置binlog及通過binlog恢復(fù)數(shù)據(jù)步驟詳析
- mysql binlog如何恢復(fù)數(shù)據(jù)到某一時刻
- MySQL誤刪后使用binlog恢復(fù)數(shù)據(jù)的實現(xiàn)方法
- mysql數(shù)據(jù)損壞,如何通過ibd和frm文件批量恢復(fù)數(shù)據(jù)庫數(shù)據(jù)
- mysql如何根據(jù).frm和.ibd文件恢復(fù)數(shù)據(jù)表
- 一步步教你如何使用mysql?binlog恢復(fù)數(shù)據(jù)
- MySql恢復(fù)數(shù)據(jù)方法梳理講解
- Mysql通過ibd文件恢復(fù)數(shù)據(jù)的詳細步驟
- MySQL數(shù)據(jù)庫通過Binlog恢復(fù)數(shù)據(jù)的詳細步驟
- Mysql如何通過binlog日志恢復(fù)數(shù)據(jù)詳解
- mysql5.7使用binlog 恢復(fù)數(shù)據(jù)的方法
- MySQL通過binlog恢復(fù)數(shù)據(jù)
- mysql8.0無備份通過idb文件恢復(fù)數(shù)據(jù)的方法、idb文件修復(fù)和tablespace?id不一致處理
相關(guān)文章
MySQL?LOAD?DATA與INSERT導(dǎo)入大批量數(shù)據(jù)示例代碼
MySQL LOAD DATA是一個用于快速從文件中批量導(dǎo)入數(shù)據(jù)到表中的命令,這篇文章主要介紹了MySQL?LOAD?DATA與INSERT導(dǎo)入大批量數(shù)據(jù)的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-09-09
MySQL中CHAR和VARCHAR類型的區(qū)別及說明
這篇文章主要介紹了MySQL中CHAR和VARCHAR類型的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-08-08
如何修改mysql數(shù)據(jù)庫的max_allowed_packet參數(shù)
本篇文章是對修改mysql數(shù)據(jù)庫的max_allowed_packet參數(shù)進行了詳細的分析介紹,需要的朋友參考下2013-06-06
mysql出現(xiàn)Error performing load command的解決方法
一般就是數(shù)據(jù)庫表字段類型問題,大家參考下面的方法解決下2008-06-06
MySql數(shù)據(jù)庫之a(chǎn)lter表的SQL語句集合
mysql之a(chǎn)lter表的SQL語句集合,包括增加、修改、刪除字段,重命名表,添加、刪除主鍵等。本文給大家介紹MySql數(shù)據(jù)庫之a(chǎn)lter表的SQL語句集合,感興趣的朋友一起學習吧2016-04-04

