千家信息网

怎么从MySQL/InnoDB数据文件中的恢复数据

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容主要讲解"怎么从MySQL/InnoDB数据文件中的恢复数据",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么从MySQL/InnoDB数据文件中
千家信息网最后更新 2026年11月02日怎么从MySQL/InnoDB数据文件中的恢复数据

本篇内容主要讲解"怎么从MySQL/InnoDB数据文件中的恢复数据",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么从MySQL/InnoDB数据文件中的恢复数据"吧!

1. 简述恢复原理

因为文档中较为详细的描述,这里只简单说明。所有InnoDB的数据都是索引的方式组织的,而且所有的数据都是存储在16KB的数据块中。恢复的过程分几步,分解所有数据文件为单个16KB大小的页面,根据每个页面的标记的数据起点开始尝试匹配,如果与给定表定义的size合适,认为匹配成功,则输出记录。

2. 并行的恢复

数据恢复通常是争分夺秒的,PDRTI工具本身是一个基础工具,如果使用该工具做做串行恢复,时间会非常长,通过简单的shell脚本可以让constraints_parser脚本并行工作,这样可以大大缩短数据的恢复时间。根据实际经验,机器稍微好点,实际恢复时间可以缩短到串行的二十分之一。也就是说,原来需要40小时,通过并行可能2个小时就可以了。

以下是两个并行恢复的脚本,供参考:

#!/bin/bash ws=/u01/recovery pagedir=/u01/recovery/pages-1372436970/FIL_PAGE_INDEX logdir=/u01/recovery/log rectool=/u01/recovery/percona-data-recovery-tool-for-innodb-0.5/constraints_parser cd `dirname $rectool` count=0 page_count=353894 page_done=0 startdate=`date +%s` for d1 in `ls $pagedir` do   count=$(($count+1))   echo "in page $d2 at dir $d1" > $logdir/$count.log   thedate=`date +%s`   echo "$page_done / $page_count at $thedate from $startdate"   total=`ls -l $pagedir/$d1/|wc -l`   page_done=$(($page_done+$total))   threads=`ps axu|grep parser_jobs|grep -v grep|wc -l`   echo $threads   while [ $threads -gt 48 ];   do     sleep 1     threads=`ps axu|grep parser_jobs|grep -v grep|wc -l`   done   $ws/parser_jobs.sh $pagedir/$d1 > $ws/job.log 2>&1 & done
#!/bin/bash pagedir=/u01/recovery/pages-1372436970/FIL_PAGE_INDEX logdir=/u01/recovery/log rectool=/u01/recovery/percona-data-recovery-tool-for-innodb-0.5/constraints_parser logfile="$logdir/`basename $1`.log" echo "$1" > $logfile if [ -d $1 ];then   for d2 in `ls $1`   do     $rectool -5 -f $1/$d2 >> $logfile 2>/dev/null   done fi

3. 从索引中恢复

如果知道数据表的索引结构,如果数据部分损坏,但是索引部分完整,可以通过这个办法提取出来更多的字段信息。

4. 紧急情况下的问题处理

这次下厨房的技术总结中提到,"***时间停止MySQL防止硬盘继续写入这个应急措施是错误的",正常如果进程没有被关闭,进程所打开的文件是不会被覆盖的,可以通过从/proc文件系统拷贝的方式恢复出当前仍然打开的文件(参考:Recovering files from /Proc)。如果数据文件和日志文件都能够cp出来,那么有希望让MySQL自己启动,并根据事务日志恢复出当前一致的数据。

到此,相信大家对"怎么从MySQL/InnoDB数据文件中的恢复数据"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

数据 文件 时间 索引 实际 工具 脚本 内容 可以通过 小时 方式 日志 更多 进程 部分 页面 参考 学习 合适 更深 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 什么是科技互联网 互联网科技公司排名 互联网科技有限公司经营范围 远拓互联网科技 广西互联网科技公司 上海卓越科技 互联网 成都仁贤领冠互联网科技有限公司 智腾互联网科技有限公司 晓花互联网科技有限公司网址 江阴互联网智能科技产品进口 互联网科技产业特征 互联网在线教育科技创业 滨湖区互联网智能科技产品有哪些 工业互联网山东科技大学 国大互联网教育科技有限公司薪资 普陀区互联网教育科技管理办法 艺电能源互联网科技有限公司招聘 玉溪新华互联网科技怎么选 平安好医生打造互联网科技医疗 重庆科技产业互联网有哪些 蓝思科技飞鸽互联网 上海互联网科技有限公司 喔噻互联网科技 奇酷互联网科技 互联网科技logo 蓝色互联网科技 互联网第三次科技革命特征 江苏互联网智能科技软件 互联网金融运营模式中的金融科技 数字科技和互联网金融哪个好
0