一.安裝:
.tar -xvf percona-data-recovery-tool-for-innodb-0.5.tar.gz
.cd percona-data-recovery-tool-for-innodb-0/mysql-source/
../configure
.cd percona-data-recovery-tool-for-innodb-0
.make
二.解析ibd檔案:
此過程會將表的idb檔案解析為很多的page,innodb的page分為兩大部分,一部分一級索引部分(primary key),另一部分為二級索引部分(secondary key),所以解析出來的idb包括了主鍵資料和索引資料兩大部分(如果該錶有多個二級索引,則會生成多個檔案)
./page_parser -5 -f t_bibasic_storage.ibd
引數解釋:
-5:代表 row format為compact
-f:代表要解析的檔案
結果如下:
pages-1377707810/fil_page_index
0-161 0-325 0-463 0-464 0-465
可以看到t_bibasic_storage.ibd解析出來5個檔案(161為主鍵索引的index_id,325,463,464,465為二級索引的index_id,該id可以通過開啟innodb_table_monitor知曉)
三.生成表定義:
由於該工具在解析資料pages的時候,需要獲得該table的表結構定義,所以需要執行如下命令:
./create_defs.pl –host 60.216.75.45 –port 3306 –user root –password qwehdysjsb20130413 –db didb –table t_bibasic_storage >include/table_defs.h
上面的命令會將t_bibasic_storage表的表結構定義傳入到table_defs.h中,在生成了表結構定義後,重新make該恢復工具:
.make
四.開始恢復pages中刪除的資料:
在重新編譯工具後,執行如下命令:
./constraints_parser -5 -d -f pages-1377707810/fil_page_index/0-161 >/tmp/t_bibasic_salessend.sql
引數:-5 -f的引數和page_parser相同;
-d:該引數的含義為代表恢復刪除的資料頁;
恢復完成後生成如下語句和檔案:
load data infile 『/tmp/t_bibasic_proinfo.dmp』 replace into tablet_bibasic_proinfo
fields terminated by 『\t』 optionally enclosed by 『」『 lines starting by 『t_bibasic_proinfo\t』 (id, procode, skuoid, skucode, skuname, catatt, dutydepoid, dutydepname, seasonatt, brandatt, prostatus, choosedate, syear, smonth, sday, created, unioncomcode);
/tmp/t_bibasic_salessend.sql 該檔案就是我們需要load data的文字檔案;
總結:1)。該恢復工具只支援innodb儲存引擎,檔案的格式需要為:compact
2)。資料被誤刪除後,需要盡快將保護現場,停止資料庫,把idb檔案拷貝出來,防止ibd檔案寫入資料被覆蓋(筆者恢復的乙個表中,由於資料刪除後,表中仍有大量寫入,導致大部分資料沒有恢復出來);
3)。千叮囑萬囑咐,資料庫的備份重於泰山;
oracle 恢復資料
備份資料 create table plan tem 20150812 as select from z fm cashplan 查詢操作錯誤的表的移動功能是否開啟 enable為開啟 select row movement,t.from user tables t where table name...
Oracle恢復資料
今天同事誤將oracle表中資料刪除 當時心裡就是涼涼 立刻上網搜尋有沒有恢復資料的方法 好在oracle的強大以及網路的發達 恩 廢話就這麼多 其實恢復的方法很簡單 首先,執行表記錄恢復 一般先根據時間進行查詢,查詢語句模式為 select from tb as of timestamp to t...
binlog恢復資料
記一次誤刪恢復資料 通過binlog日誌檔案生成時間和誤操作刪除資料的時間對比,分析出生成到哪個檔案中 兩種恢復方式 1 通過時間段 usr local mysql bin mysqlbinlog start datetime 2019 10 11 19 00 00 stop datetime 20...