一种对MySQL数据库全库的恢复方法技术

技术编号:19009030 阅读:29 留言:0更新日期:2018-09-22 08:55
本发明专利技术公开了一种对MySQL数据库全库的恢复方法,其特征在于包括以下步骤:S100:雕复MySQL数据库文件:扫描磁盘,查找文件特征并获取具有文件特征的表数据文件及表结构文件,根据数据页编号和表空间标识重组文件,保存表定义文件;S200:关联数据库文件:将雕复MySQL数据库文件与MySQL数据库的引擎种类进行匹配,将表结构文件与相应的表数据文件关联;S300:恢复表结构:判断表数据文件是否与相应的表结构文件关联,如果是,则执行步骤S400;否则,根据引擎种类恢复表结构;S400:恢复数据库文件。

A recovery method for MySQL database full library

The invention discloses a method for recovering MySQL database full-database, which is characterized by the following steps: S100: carving MySQL database files: scanning disk, searching file characteristics and acquiring table data files and table structure files with file characteristics, reorganizing files according to data page numbers and table space identification, and saving table definitions. S200: Associated database file: matches the type of engine that carves and replicates the MySQL database file with the MySQL database, associates the table structure file with the corresponding table data file; S300: Restores the table structure: Determines whether the table data file is associated with the corresponding table structure file, if so, executes S1400; Otherwise, according to Engine type recovery table structure; S400: restore database files.

【技术实现步骤摘要】
一种对MySQL数据库全库的恢复方法
本专利技术属于数据恢复领域,具体涉及一种对MySQL数据库全库的恢复方法。
技术介绍
随着信息时代的来临,对数据的管理和应用都离不开数据库。而MySQL作为一款免费、开源的数据库,深受许多人的钟爱。在MySQL的使用过程中,难免会遇到误操作、人为恶意破坏、软硬件故障等原因对数据库造成损坏,丢失重要数据。此时,对MySQL数据库进行恢复并找回重要数据就至关重要。目前,现有技术中的恢复方案是通过数据库备份和日志的方式进行恢复,更深层次一些的恢复方案是利用文件雕复技术从磁盘中恢复数据库,但这些方法都面临以下一些缺陷:1.需要在备份文件、日志文件或者表结构定义文件完整的情况下做恢复,一旦文件缺失或者损坏将无能为力;2.只能针对特定的MySQL引擎进行恢复;3.针对MySQL压缩数据的恢复显得心有余而力不足;4.很多时候只能针对某个固定表进行恢复。
技术实现思路
本专利技术针对现有技术的不足问题,提出了一种对MySQL数据库全库的恢复方法,通过雕复MySQL数据库文件、关联数据库文件、恢复表结构并最终恢复数据库文件,达到恢复MySQL数据库全库的目的,包括以下步骤:S100:雕复MySQL数据库文件:扫描磁盘,查找文件特征并获取具有所述文件特征的表数据文件及表结构文件,根据数据页编号和表空间标识重组文件,保存表定义文件,其中,所述文件特征包括表结构文件特征和表数据文件特征;S200:关联所述数据库文件:将雕复MySQL数据库文件与MySQL数据库的引擎种类进行匹配,将表结构文件与相应的表数据文件关联;S300:恢复表结构:判断表数据文件是否与相应的表结构文件关联,如果是,则执行步骤S400;否则,根据所述引擎种类恢复表结构;S400:恢复所述数据库文件:提取表数据文件和表结构文件中各字段数据并组合为表记录,所述表记录为恢复的数据库文件;对于不存在关联表结构的表空间文件进行模糊处理并组合为表记录,所述表记录为恢复的数据库文件。优选地,步骤S100包括以下步骤:S101:扫描所述磁盘并查找表结构文件特征和表数据文件特征;S102:判断文件特征是否为所述表结构文件特征,如果是,执行步骤S103,否则为所述表数据文件特征,执行步骤S104;S103:保存表结构文件,然执行步骤S107;S104:根据表数据文件中的表空间标识判断是否存在表空间队列,如果是,执行步骤S106;否则,执行步骤S105;S105:以所述表数据文件的表空间标识为关键字,创建新的表空间队列,将新的表数据文件加入到当前创建的表空间队列中,执行步骤S107;S106:将新的表数据文件加入到当前表空间队列中;S107:判断是否完成磁盘扫描,如果是,执行S108;否则,执行步骤S101;S108:将表空间队列中的表数据文件按数据页中的编号从小到大排序为有序的表数据文件,所述有序的表数据文件称为表空间文件。优选地,所述步骤S200包括以下步骤:S201:加载步骤S100所获取的表空间文件;S202:匹配表空间文件的引擎种类;S203:匹配表空间文件的表结构文件:根据表空间文件的行数据格式匹配表结构文件,具体地,根据表空间文件中行数据包含的字段数、各个字段的类型及各个字段的顺序与表结构文件匹配,不能匹配则执行步骤S204;S204:判断是否所有的表空间文件都已完成引擎种类的匹配,如果是,则执行步骤S300,否则,执行步骤S201。优选地,所述S300包括以下步骤:S301:加载步骤S200所获取的表空间文件;S302:判断表空间文件是否已与表结构文件关联;如果是,则执行步骤S400,否则,执行步骤303;S303:根据引擎种类,针对尚未与表结构文件关联的表空间文件,恢复表结构;S304:判断是否所有的表空间文件已经检查关联文件,如果是,则执行步骤S400;否则,执行步骤301。优选地,所述S400包括以下步骤:S401:加载步骤S300所获取的表空间文件;S402:判断表空间文件是否有关联的表结构文件或者已存在表结构,如果是,则执行步骤S403,否则执行步骤S404;S403:对于存在关联表结构文件的表空间文件,解析表结构文件,根据表结构文件格式提取表结构,执行步骤S405;S404:对于不存在关联表结构的表空间文件进行模糊处理:先从表空间文件中提取一条表记录,根据记录中数据特征分析表结构,包括表字段数、表字段类型,将表结构作为表空间文件的关联表结构;S405:按照表结构的字段数、字段类型、主键信息,在表空间文件中提取表字段数据;S406:根据表结构中字段名称、字段顺序,将S405中提取的表字段数据插入到相应位置,获得完整的表记录;S407:判断是否所有表空间文件都已恢复,如果是,则结束流程,否则,执行步骤S401。本专利技术的有益效果是:1.在没有备份文件、日志文件或表结构文件的情况下能够对MySQL数据库全库进行恢复;2.可以对MySQL官方当前支持的引擎进行恢复;3.可以对MySQL压缩数据做到无损恢复;4.可以对MySQL数据库全库而不是特定表进行恢复;5.拥有多种途径对MySQL进行恢复,增加成功恢复的机率。附图说明图1为本专利技术的主流程图;图2为本专利技术中步骤S100的详细流程图;图3为本专利技术中步骤S200的详细流程图;图4为本专利技术中步骤S300的详细流程图;图5为本专利技术中步骤S400的详细流程图。具体实施方式下面结合附图和实施例对本专利技术作进一步阐述。如图1所示,本专利技术的方法包括以下步骤:S100:雕复MySQL数据库文件:扫描磁盘,查找文件特征并获取具有所述文件特征的表数据文件及表结构文件,根据数据页编号和表空间标识重组文件,保存表定义文件,其中,所述文件特征包括表结构文件特征和表数据文件特征,包括如图2所示的以下步骤:S101:扫描磁盘并查找表结构文件特征和表数据文件特征;本实施例中,表结构文件特征为0xfe01。对于表数据文件特征,分为如下情况:引擎种类为InnoDB的表数据文件特征:InnoDB数据按页存储,页大小分为16k、8k、4k、2k、1k。在每页的起始位置向后偏移0x18字节的连续两字节内容为0x45bf且在每页的起始位置向后偏移0x40字节的一字节内容为0x00的页即为InnoDB数据文件页;引擎种类为MyISAM的表数据文件特征:MyISAM数据不按页存储,文件大小随着数据的增多而增多;文件开头按表的行类型分为:fixed行:以0xff开头;dynamic行:以0x00到0x0D这14个数值中的任一开头;compressed行:以0xfefe0802开头;引擎种类为ARCHIVE的表数据文件特征:以0xfe03开头;引擎种类为CSV的表数据文件特征:CSV引擎以纯文本存储数据,以0x0A作为行结束标记,以0x2C作为表字段分隔符;S102:判断文件特征是否为表结构文件特征,如果是,执行步骤S103,否则为表数据文件特征,执行步骤S104;S103:保存表结构文件,然执行步骤S107;S104:根据表数据文件中的表空间标识判断是否存在表空间队列,如果是,执行步骤S106;否则,执行步骤S105;S105:以表数据文件的表空间标识为关键字,创建新的表空间队列,将新的表数据文件加入到当前创建的表空间队本文档来自技高网...
一种对MySQL数据库全库的恢复方法

【技术保护点】
1.一种对MySQL数据库全库的恢复方法,其特征在于包括以下步骤:S100:雕复MySQL数据库文件:扫描磁盘,查找文件特征并获取具有所述文件特征的表数据文件及表结构文件,根据数据页编号和表空间标识重组文件,保存表定义文件,其中,所述文件特征包括表结构文件特征和表数据文件特征;S200:关联所述数据库文件:将雕复MySQL数据库文件与MySQL数据库的引擎种类进行匹配,将表结构文件与相应的表数据文件关联;S300:恢复表结构:判断表数据文件是否与相应的表结构文件关联,如果是,则执行步骤S400;否则,根据所述引擎种类恢复表结构;S400:恢复所述数据库文件:提取表数据文件和表结构文件中各字段数据并组合为表记录,所述表记录为恢复的数据库文件;对于不存在关联表结构的表空间文件进行模糊处理并组合为表记录,所述表记录为恢复的数据库文件。

【技术特征摘要】
1.一种对MySQL数据库全库的恢复方法,其特征在于包括以下步骤:S100:雕复MySQL数据库文件:扫描磁盘,查找文件特征并获取具有所述文件特征的表数据文件及表结构文件,根据数据页编号和表空间标识重组文件,保存表定义文件,其中,所述文件特征包括表结构文件特征和表数据文件特征;S200:关联所述数据库文件:将雕复MySQL数据库文件与MySQL数据库的引擎种类进行匹配,将表结构文件与相应的表数据文件关联;S300:恢复表结构:判断表数据文件是否与相应的表结构文件关联,如果是,则执行步骤S400;否则,根据所述引擎种类恢复表结构;S400:恢复所述数据库文件:提取表数据文件和表结构文件中各字段数据并组合为表记录,所述表记录为恢复的数据库文件;对于不存在关联表结构的表空间文件进行模糊处理并组合为表记录,所述表记录为恢复的数据库文件。2.根据权利要求1所述的一种对MySQL数据库全库的恢复方法,其特征在于,步骤S100包括以下步骤:S101:扫描所述磁盘并查找表结构文件特征和表数据文件特征;S102:判断文件特征是否为所述表结构文件特征,如果是,执行步骤S103,否则为所述表数据文件特征,执行步骤S104;S103:保存表结构文件,然执行步骤S107;S104:根据表数据文件中的表空间标识判断是否存在表空间队列,如果是,执行步骤S106;否则,执行步骤S105;S105:以所述表数据文件的表空间标识为关键字,创建新的表空间队列,将新的表数据文件加入到当前创建的表空间队列中,执行步骤S107;S106:将新的表数据文件加入到当前表空间队列中;S107:判断是否完成磁盘扫描,如果是,执行S108;否则,执行步骤S101;S108:将表空间队列中的表数据文件按数据页中的编号从小到大排序为有序的表数据文件,所述有序的表数据文件称为表空间文件。3.根据权利要求2所述的一种对MySQL数据库全库的恢复方法,其特征在于,所述步骤S200...

【专利技术属性】
技术研发人员:梁效宁许超明张强
申请(专利权)人:四川巧夺天工信息安全智能设备有限公司
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1