MySQL通過(guò)ibd文件恢復(fù)數(shù)據(jù)的操作過(guò)程
一、介紹
通常,在InnoDB存儲(chǔ)引擎下,一個(gè)表由三部分組成:數(shù)據(jù)字典(.frm文件)、表空間(.ibd文件)和日志文件。其中,.frm文件存儲(chǔ)了表的定義,.ibd文件存儲(chǔ)了表的數(shù)據(jù)和索引,而日志文件記錄了對(duì)表的修改操作。
二、操作過(guò)程
前提:擁有舊表的ibd文件
- 先創(chuàng)建一個(gè)新的表(表結(jié)構(gòu)為被恢復(fù)表,需要知道被恢復(fù)表的表結(jié)構(gòu));
- 丟棄當(dāng)前表的表空間;
- 關(guān)閉數(shù)據(jù)庫(kù)服務(wù);
- 將新表的ibd文件替換舊表的ibd文件(在丟棄表空間操作中新表的ibd文件可能已經(jīng)被刪除,只需要就將舊表的ibd文件放入指定目錄即可);
- 開啟數(shù)據(jù)庫(kù)服務(wù);
- 檢查原始表是否有任何物理或邏輯錯(cuò)誤;
- 導(dǎo)入新的表空間。
所以,正確執(zhí)行上述過(guò)程的命令應(yīng)該是:
丟棄現(xiàn)有表空間:
ALTER TABLE table_name DISCARD TABLESPACE;
關(guān)閉數(shù)據(jù)庫(kù)服務(wù):
service mysql stop
替換新的.ibd文件
使用cp命令或者mv命令
開啟數(shù)據(jù)庫(kù)
service mysql start
檢查原始表是否有任何物理或邏輯錯(cuò)誤
使用 mysqlcheck 或 CHECK TABLE 命令檢查原始表是否有任何物理或邏輯錯(cuò)誤。
CHECK TABLE
導(dǎo)入新的表空間:
ALTER TABLE table_name IMPORT TABLESPACE;
請(qǐng)注意,這種操作應(yīng)該在數(shù)據(jù)庫(kù)關(guān)閉或者沒有其他事務(wù)正在訪問(wèn)這個(gè)表的情況下進(jìn)行,以避免數(shù)據(jù)不一致或錯(cuò)誤。同時(shí),IMPORT TABLESPACE功能不會(huì)檢查數(shù)據(jù)的一致性,例如外鍵約束等,所以在導(dǎo)入前要確保備份數(shù)據(jù)的完整性。
三、報(bào)錯(cuò)記錄
- 執(zhí)行ALTER TABLE table_name IMPORT TABLESPACE
提示Tablespace is missing for table table_name.
或者提示 Internal error: Cannot reset LSNs in table table_name : Tablespace not found
原因:
- 沒有檢查原始表是否有任何物理或邏輯錯(cuò)誤就導(dǎo)入新的表空間會(huì)提示:表table_name缺少表空間。
- 文件丟失或損壞:.ibd 文件可能被意外刪除、移動(dòng)或者損壞。檢查文件系統(tǒng)中是否存在名為 table_name.ibd 的文件,并確保它沒有損壞。
- 文件路徑錯(cuò)誤:如果InnoDB存儲(chǔ)引擎配置了非默認(rèn)的數(shù)據(jù)目錄,那么 .ibd 文件可能不在預(yù)期的位置。查看 MySQL 配置文件(如 my.cnf 或 my.ini),確認(rèn)數(shù)據(jù)目錄設(shè)置是否正確。
- 權(quán)限問(wèn)題:確保MySQL服務(wù)有足夠的權(quán)限訪問(wèn) .ibd 文件??梢試L試使用 ls -l 命令來(lái)檢查文件的所有權(quán)和權(quán)限。
- 表空間未被丟棄:在導(dǎo)入新的 .ibd 文件之前,需要先使用 ALTER TABLE st_company_info DISCARD TABLESPACE; 來(lái)丟棄現(xiàn)有的表空間。
- 版本不兼容:如果你正在恢復(fù)的是從不同版本的MySQL備份的 .ibd 文件,可能存在版本不兼容的問(wèn)題。確保備份文件是從與當(dāng)前運(yùn)行的MySQL服務(wù)器相同或兼容的版本創(chuàng)建的。
- 其他問(wèn)題:還有可能是由于數(shù)據(jù)庫(kù)損壞或其他一些罕見的情況導(dǎo)致的。在這種情況下,你可能需要尋求專業(yè)的幫助來(lái)解決問(wèn)題。
為了進(jìn)一步診斷問(wèn)題,你可以嘗試以下步驟:
- 檢查數(shù)據(jù)目錄下是否存在正確的 .ibd 文件。
- 使用 mysqlcheck 或 CHECK TABLE 命令檢查原始表是否有任何物理或邏輯錯(cuò)誤。
- 如果有必要,嘗試重新創(chuàng)建 .ibd 文件,例如通過(guò)備份恢復(fù)或使用第三方工具。
- 在安全模式下啟動(dòng)MySQL服務(wù)器,看看能否解決這個(gè)問(wèn)題。
以上就是MySQL通過(guò)ibd文件恢復(fù)數(shù)據(jù)的操作過(guò)程的詳細(xì)內(nèi)容,更多關(guān)于MySQL ibd恢復(fù)數(shù)據(jù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- MySQL通過(guò)binlog實(shí)現(xiàn)恢復(fù)數(shù)據(jù)
- Python MySQL如何通過(guò)Binlog獲取變更記錄恢復(fù)數(shù)據(jù)
- MySQL通過(guò)日志恢復(fù)數(shù)據(jù)的操作步驟
- MySQL開啟配置binlog及通過(guò)binlog恢復(fù)數(shù)據(jù)步驟詳析
- mysql binlog如何恢復(fù)數(shù)據(jù)到某一時(shí)刻
- MySQL誤刪后使用binlog恢復(fù)數(shù)據(jù)的實(shí)現(xiàn)方法
- mysql數(shù)據(jù)損壞,如何通過(guò)ibd和frm文件批量恢復(fù)數(shù)據(jù)庫(kù)數(shù)據(jù)
- Mysql如何通過(guò)ibd文件恢復(fù)數(shù)據(jù)
- mysql如何根據(jù).frm和.ibd文件恢復(fù)數(shù)據(jù)表
- 一步步教你如何使用mysql?binlog恢復(fù)數(shù)據(jù)
- MySql恢復(fù)數(shù)據(jù)方法梳理講解
- Mysql通過(guò)ibd文件恢復(fù)數(shù)據(jù)的詳細(xì)步驟
- MySQL數(shù)據(jù)庫(kù)通過(guò)Binlog恢復(fù)數(shù)據(jù)的詳細(xì)步驟
- Mysql如何通過(guò)binlog日志恢復(fù)數(shù)據(jù)詳解
- mysql5.7使用binlog 恢復(fù)數(shù)據(jù)的方法
- MySQL通過(guò)binlog恢復(fù)數(shù)據(jù)
- mysql8.0無(wú)備份通過(guò)idb文件恢復(fù)數(shù)據(jù)的方法、idb文件修復(fù)和tablespace?id不一致處理
相關(guān)文章
詳解記錄MySQL中l(wèi)ower_case_table_names的坑
這篇文章主要介紹了詳解記錄MySQL中l(wèi)ower_case_table_names的坑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03詳解Mysql數(shù)據(jù)庫(kù)平滑擴(kuò)容解決高并發(fā)和大數(shù)據(jù)量問(wèn)題
本文主要介紹了Mysql數(shù)據(jù)庫(kù)平滑擴(kuò)容解決高并發(fā)和大數(shù)據(jù)量問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05MySQL數(shù)據(jù)庫(kù)事務(wù)transaction示例講解教程
這篇文章主要為大家介紹了MySQL數(shù)據(jù)庫(kù)事務(wù)transaction的示例講解教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10在MySQL中使用GTIDs復(fù)制協(xié)議和中斷協(xié)議的教程
這篇文章主要介紹了在MySQL中使用GTIDs復(fù)制協(xié)議和中斷協(xié)議的教程,主要用于多個(gè)服務(wù)器之間的通信,需要的朋友可以參考下2015-04-04mysql 正則表達(dá)式查詢含有非數(shù)字和字符的記錄
這篇文章主要介紹了mysql 正則表達(dá)式查詢含有非數(shù)字和字符的記錄的相關(guān)資料,需要的朋友可以參考下2016-12-12macOS 下的 MySQL 8.0.17 安裝與簡(jiǎn)易配置教程圖解
這篇文章主要介紹了macOS 下的 MySQL 8.0.17 安裝與簡(jiǎn)易配置教程,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09mysql存儲(chǔ)過(guò)程游標(biāo)之loop循環(huán)解讀
這篇文章主要介紹了mysql存儲(chǔ)過(guò)程游標(biāo)之loop循環(huán)解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07MYSQL插入數(shù)據(jù)時(shí)檢查字段值是否重復(fù)的方法詳解
這篇文章主要給大家介紹了關(guān)于MYSQL插入數(shù)據(jù)時(shí)檢查字段值是否重復(fù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01