千家信息网

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

发表于:2025-02-12 作者:千家信息网编辑
千家信息网最后更新 2025年02月12日,本篇内容主要讲解"怎么从MySQL/InnoDB数据文件中的恢复数据",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么从MySQL/InnoDB数据文件中
千家信息网最后更新 2025年02月12日怎么从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安全错误 数据库的锁怎样保障安全 绝地求生新服务器怎么玩 南昌关于软件开发的工作 关系型数据库原理 广西格灵根软件开发有限公司招聘 达梦数据库数据导入编码不一致 网络技术的应用及未来 二年级网络安全知识演讲稿 我的世界一人建一个服务器 商众联服务器托管 杭州鲸熹网络技术有限公司 怎么拷文件到服务器上 闵行区推广软件开发信息推荐 全球科技与互联网 苏州智能刀片服务器直销 租服务器建公司网站 数码网络安全 数据库理论数据表 湖北生活频道网络安全视频 软件开发有限公司成立条件 sql看数据库日志文件 我市网络安全纪实 小冰冰传奇服务器龙王之终 电脑服务器主机怎么关闭 数据库英文简答题 戴尔C8000服务器参数 常州网络营销软件开发推荐咨询 快手软件开发直播99人气限制 网络安全责任制考核网址 惠普服务器阵列卡读不到硬盘 嘟嘟网络技术有限公司客服
0