操作系统簇大小一般是4K,而innoDB的页大小一般是16K,那么就有可能16K的页没有存储在连续的簇中,这样扫描软件就不会扫描出来这样的页面.为了解决这个问题,决定给软件增加半页扫描功能.

在第一次扫描的时候把所有页头部特征正确,但尾部特征不正确的页保存在单独的文件中,并生成一个非完整页信息列表文件.

第二次再扫描(开发一个专门的程序)时,根据非完整页信息列表,搜索可能的非完整页下半部分,并保存在另外的文件中,同时也生成一个下半部分的页页信息列表.

第三次,再做一个专门的程序,来组合成完整的页面,并验证页面的正确完整性,并把正确的页面保存在文件中.

第四次再用第一次的扫描程序对第三次生成的文件扫描,把页面再按INDEX_ID分类提取出来.

按这样的原理,理论上只要是只一个页面只存在于两个磁盘碎片中的都可以扫描提取出来.

mysql innodb 数据打捞(三)innodb 簇不连接页的扫描提取(计划)的更多相关文章

  1. mysql innodb 数据打捞(一)innodb 页面结构特征

    如果文件系统损坏或意外删除了数据库文件,只要磁盘空间没有被覆盖,其实数据都还在磁盘的扇区中,还是可以恢复出来的,有些通用的文件恢复工具好象也可以恢复文件 ,但这里要研究的是在通用文件 恢复工具失效的时 ...

  2. mysql innodb 数据打捞(二)innodb 页面打捞编程

    有了页面的结构和特征,需要编程实现数据库页面的打捞工作: 为了方便windows and linux 的通用,计划做成C语言的控制台应用,并且尽量只用ansi c;关于多线程,计划做成多线程的程序,最 ...

  3. mysql innodb 数据打捞(四)innodb 簇不连续页扫描提取(试验)

    一,用winhex把正常页有意做成不连续的两部分,把后8K向后移动4K,中间隔开4K,启动第一次扫描; 扫描结果是,没有提取到有效页面,但在输出目录生成两个文件:upper.pages和upper.l ...

  4. MySQL冗余数据的三种方案

    一,为什么要冗余数据 互联网数据量很大的业务场景,往往数据库需要进行水平切分来降低单库数据量. 水平切分会有一个patition key,通过patition key的查询能够直接定位到库,但是非pa ...

  5. 细看InnoDB数据落盘 图解 MYSQL 专家hatemysql

    http://hatemysql.com/?p=503 1.  概述 前面很多大侠都分享过MySQL的InnoDB存储引擎将数据刷新的各种情况.我们这篇文章从InnoDB往下,看看数据从InnoDB的 ...

  6. MySQL · 引擎特性 · InnoDB 数据页解析

    前言 之前介绍的月报中,详细介绍了InnoDB Buffer Pool的实现细节,Buffer Pool主要就是用来存储数据页的,是数据页在内存中的动态存储方式,而本文介绍一下数据页在磁盘上的静态存储 ...

  7. __细看InnoDB数据落盘 图解 MYSQL

    http://hatemysql.com/?p=503 1.  概述 前面很多大侠都分享过MySQL的InnoDB存储引擎将数据刷新的各种情况.我们这篇文章从InnoDB往下,看看数据从InnoDB的 ...

  8. mysql的innodb数据存储结构

    ​ 数据库磁盘读取与系统磁盘读取 1,系统从磁盘中读取数据到内存时是以磁盘块(block)为基本单位,位于同一个磁盘块中的数据会被一次性读取出来. 2,innodb存储引擎中有页(Page)的概念,页 ...

  9. MySQL数据库系列(三)- MySQL常用引擎MyISAM和InnoDB区别详解

    概述 InnoDB:在MySQL 5.5及之后的版本,InnoDB是MySQL默认的事务型引擎,也是最重要和使用最广泛的存储引擎.它被设计成为大量的短期事务,短期事务大部分情况下是正常提交的,很少被回 ...

随机推荐

  1. JavaScript要点(七) 函数调用

    JavaScript 函数有 4 种调用方式. 每种方式的不同方式在于 this 的初始化. this 关键字  注意: this 是保留关键字,你不能修改 this 的值. ⚠️一般而言,在Java ...

  2. 传微软欲收购Xamarin:未来有望通过VS开发iOS和Android应用?

    据CRN报道,其援引匿名人士的消息称,微软将收购一家创建C#移动应用工具的公司或进行注资,并且谈判已经到了最终阶段.这家公司的名字叫做Xamarin,创建于2011年.对于微软来说,收购Xamarin ...

  3. ThinkPHP3.2.3新特性之:数据库设置

    ThinkPHP3.2.3版本数据库驱动采用PDO完全重写,配置和使用上面也比之前版本更加灵活和强大,我们来了解下如何使用. 首先,3.2.3的数据库配置信息有所调整,完整的数据库设置包括: /* 数 ...

  4. Compiling aSmack

    For a recent mobile project we used XMPP. It worked really well and I’m keen to use it again. But, i ...

  5. java_Cookie添加和删除

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, ...

  6. 【转】Singleton单例模式

    对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务:一个系统只能有一个窗口管理器或文件系统:一个系统只能有一个计时工具或ID(序号)生成器. ...

  7. Java基础知识强化之IO流笔记66:Properties的概述 和 使用(作为Map集合使用)

    1. Properties的概述  Properties:属性集合类.是一个可以和IO流相结合使用的集合类. 该类主要用于读取以项目的配置文件(以.properties结尾的文件 和 xml文件). ...

  8. 读取Log日志并打印到sdcard

    @SuppressLint("SimpleDateFormat") private static SimpleDateFormat sdf = new SimpleDateForm ...

  9. oracle 事务简介,锁的概念,java访问数据库注意事项

    java链接oracle和连接其他数据库一样有两种方式:1 桥接 jdbc-obdc2 jbdc insert语句一次插入大量数据 insert into table (列1,列2,列3) selec ...

  10. Mac Mysql5.7.11安装和卸载

    初学者,被mysql的安装弄晕了,所以在此记录一下. 安装 去http://www.mysql.com/downloads/, 选择最下方的MySQL Community Edition,点击MySQ ...