国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

利用MySQL中InnoDB數據文件中的恢復數據

2024-07-24 12:37:08
字體:
來源:轉載
供稿:網友

1.簡述恢復原理

因為文檔中較為詳細的描述,這里只簡單說明。所有InnoDB的數據都是索引的方式組織的,而且所有的數據都是存儲在16KB的數據塊中?;謴偷倪^程分幾步,分解所有數據文件為單個16KB大小的頁面,根據每個頁面的標記的數據起點開始嘗試匹配,如果與給定表定義的size合適,認為匹配成功,則輸出記錄。

2.并行的恢復

數據恢復通常是爭分奪秒的,PDRTI工具本身是一個基礎工具,如果使用該工具做做串行恢復,時間會非常長,通過簡單的shell腳本可以讓constraints_parser腳本并行工作,這樣可以大大縮短數據的恢復時間。根據實際經驗,機器稍微好點,實際恢復時間可以縮短到串行的二十分之一。也就是說,原來需要40小時,通過并行可能2個小時就可以了。

以下是兩個并行恢復的腳本,供參考,代碼如下:

  1. #!/bin/bash 
  2. ws=/u01/recovery 
  3. pagedir=/u01/recovery/pages-1372436970/FIL_PAGE_INDEX 
  4. logdir=/u01/recovery/log 
  5. rectool=/u01/recovery/percona-data-recovery-tool-for-innodb-0.5/constraints_parser 
  6. cd `dirname $rectool` 
  7. count=0 
  8. page_count=353894 
  9. page_done=0 
  10. startdate=`date +%s` 
  11. for d1 in `ls $pagedir` 
  12. do 
  13.   count=$(($count+1)) 
  14.   echo "in page $d2 at dir $d1" > $logdir/$count.log 
  15.   thedate=`date +%s` 
  16.   echo "$page_done / $page_count at $thedate from $startdate" 
  17.   total=`ls -l $pagedir/$d1/|wc -l` 
  18.   page_done=$(($page_done+$total)) 
  19.   threads=`ps axu|grep parser_jobs|grep -v grep|wc -l` 
  20.   echo $threads 
  21.   while [ $threads -gt 48 ]; 
  22.   do 
  23.     sleep 1 
  24.     threads=`ps axu|grep parser_jobs|grep -v grep|wc -l` 
  25.   done 
  26.   $ws/parser_jobs.sh $pagedir/$d1 > $ws/job.log 2>&1 & 
  27. done#!/bin/bash 
  28. pagedir=/u01/recovery/pages-1372436970/FIL_PAGE_INDEX 
  29. logdir=/u01/recovery/log 
  30. rectool=/u01/recovery/percona-data-recovery-tool-for-innodb-0.5/constraints_parser 
  31. logfile="$logdir/`basename $1`.log" 
  32. echo "$1" > $logfile 
  33. if [ -d $1 ];then 
  34.   for d2 in `ls $1` 
  35.   do   //Vevb.com 
  36.     $rectool -5 -f $1/$d2 >> $logfile 2>/dev/null 
  37.   done 
  38. fi 

3.從索引中恢復

如果知道數據表的索引結構,如果數據部分損壞,但是索引部分完整,可以通過這個辦法提取出來更多的字段信息.

4.緊急情況下的問題處理

這次下廚房的技術總結中提到,"第一時間停止MySQL防止硬盤繼續寫入這個應急措施是錯誤的",正常如果進程沒有被關閉,進程所打開的文件是不會被覆蓋的,可以通過從/proc文件系統拷貝的方式恢復出當前仍然打開的文件(參考:Recovering files from /Proc),如果數據文件和日志文件都能夠cp出來,那么有希望讓MySQL自己啟動,并根據事務日志恢復出當前一致的數據.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 五常市| 上杭县| 沛县| 申扎县| 宁明县| 思茅市| 鹿邑县| 合阳县| 南投市| 乐平市| 井冈山市| 云南省| 台中市| 岐山县| 当雄县| 保康县| 鲁山县| 曲沃县| 理塘县| 松原市| 云梦县| 蓬溪县| 淮北市| 大城县| 河北省| 文水县| 扬州市| 泸溪县| 武威市| 镇坪县| 上林县| 恩平市| 松江区| 临猗县| 安宁市| 裕民县| 邵东县| 太和县| 漳平市| 分宜县| 北安市|