Mysql資料恢復

2021-10-07 02:36:18 字數 2530 閱讀 8699

2、innodb引擎資料表恢復

二、後記

三、引用

本博講解的是應對資料庫崩潰無法恢復,但是仍舊可以獲取到資料庫原檔案的前提下,針對資料庫原檔案進行的資料恢復。主要講解mysiaminnodb兩種引擎資料表的恢復方法。

這兩種資料表的位置均在 /var/lib/mysql,不同的安裝方式可能位置不一樣
centos7、mysql8.0.13

進行以下方法的資料恢復,首先要保證,之前被破壞的資料庫和新的資料庫版本完全一致,否則會報告原資料庫表版本同新資料庫不一致。

每個mysiam引擎資料表都有乙個表結構檔案sdi,其內所存的便是該錶的版本、表結構等資訊。其中必須要保證以下三個欄位同新資料庫版本完全一致,這三個欄位均在sdi檔案的第一行。

不確定的話可以開啟新資料庫中的隨意乙個sdi檔案,對比是否是自己需要的資料庫版本。當然,如果版本不一致可以現在別的地方安裝乙個同sdi檔案同樣版本的資料庫,先把資料匯出來再往新資料庫轉移也是可以的嘛!!!

mysqld_version_id":80013,"dd_version":80013,"sdi_version":1
mysiam引擎資料表:每張表包括三個字尾分別為sdimydmyi的檔案。

> create database dd;
/var/lib/mysql/dd
>show variables like '%secure_file_priv%';
/var/lib/mysql-files
表名:     linxia_search_usergaokuan

檔名: linxia_search_us_393.sdi

明顯重構後的檔名不是表名,所以我們需要將sdi檔名修改為表名。若不清楚原表名,可以開啟檔案sdi檔案(普通的json格式文件)檢視 dd_object 下的 name 關鍵字,即為原表名。

$ mv linxia_search_us_393.sdi linxia_search_usergaokuan.sdi
> use dd;

> import table from '/var/lib/mysql-files/*.sdi'

此方法應該適用於所有mysql版本。mysql8.0後,新版本innodb資料表不再是分為以frm為字尾的表結構檔案和以ibd為字尾的資料檔案,而是全部集中在ibd檔案中。

innodb引擎資料表:每張表包括乙個字尾為ibd的檔案。

> create database db;
最後匯出的是關於表的所有資訊,太多冗餘,不利於提取建表的關鍵資訊

最後匯出的資料表結構如下圖

以下為批量匯出資料表結構指令碼

其實關於其中很多原理細節我沒有提及,詳細說明我會不定時更新。

mysql如何利用ibd檔案恢復資料?

【mysql】mysql8.0 ibd2sdi 根據ibd檔案恢復表結構

mysql工具ibd2sdi官方文件

mysql利用mysiam原檔案恢復資料官方文件

mysql配置資料恢復 MySQL 資料恢復

前言 前兩天因為沒注意的誤操作,直接把某個資料表清掉了,心慌慌.怪自己學藝不精,當時整了一下午也沒把資料找回來.當晚回來閉關研究,終於在凌晨1點多整出來了,特此記錄,以備不時之需.對於 mysql 資料的備份,主要有兩種 全量備份和增量備份.全量備份 將資料庫中的所有資料全部進行備份.相當於複製貼上...

MySQL 資料恢復

原理 mysql資料庫在系統上是以乙個資料夾的形式出現的,你建立了ac資料庫,那麼在磁碟上就會出現名稱為ac的目錄,而ac資料庫的全域性配置則是ac資料夾中的db.opt檔案來管理的。mysql的資料檔案在datadir下,你在資料庫中執行 show variables like datadir 就...

mysql資料恢復 mysqlbinlog

恢復資料的關鍵是資料庫開啟了log bin window下my.ini裡 log bin mysql bin 日誌檔案的字首,可修改,如 mysql bin.000001 然後預設放在資料庫根目錄的data資料夾裡 如果誤刪了資料庫,可以用之前備份的資料庫 如2014 05 12 doc命令列下用m...