[发明专利]一种恢复MySQL数据库的innodb压缩数据的方法有效
申请号: | 201811453262.8 | 申请日: | 2018-11-30 |
公开(公告)号: | CN109271463B | 公开(公告)日: | 2022-06-07 |
发明(设计)人: | 梁效宁;许超明;张强;朱星海;董超;刘涛 | 申请(专利权)人: | 四川巧夺天工信息安全智能设备有限公司 |
主分类号: | G06F16/28 | 分类号: | G06F16/28;G06F16/22;G06F16/174 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 641000 四*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 恢复 mysql 数据库 innodb 压缩 数据 方法 | ||
1.一种恢复MySQL数据库的innodb压缩数据的方法,其特征在于包括以下步骤:
S100:判断当前数据是否为压缩数据,如果是,执行步骤S200,否则,结束流程;所述压缩数据的页结构如下表1所示,
表1:压缩数据的页结构
文件头 页头 ZLIB头 原压缩数据 压缩数据校验和 未删除数据 压缩页修改日志 空闲空间 外部存储页的列记录指针数组 事务id和回滚指针 页目录
所述文件头具有如下表2所示的数据结构,
表2:文件头的数据结构
步骤S100中的具体步骤如下:
S101:根据所述表2的数据结构,读取当前文件头第25、第26字节的内容作为页类型,判断当前页类型是否为压缩数据,如果是,执行步骤S102,否则执行步骤S103;
S102:以页起始地址为首地址,向后偏移0x36字节,连续读取4字节内容作为标志字节,将所述4字节内容与0x00000020进行逻辑与运算,判断结果是否等于0x00000020,如果是,执行步骤S103,否则,结束流程;
S103:读取ZLIB压缩标志并与0x80进行逻辑与运算,判断结果是否等于0x80,如果是,执行步骤S200,否则,结束流程,其中,所述ZLIB压缩标志为当前页第0x60字节的内容;
S200:计算当前压缩数据的页大小;步骤S200的具体步骤如下:
S201:设置当前压缩数据的页大小,所述页大小为不大于0x4000的正整数;
S202:从当前页的起始地址向后偏移,偏移的字节长度为一个页大小,读取字节长度为0x5E的数据,将所读取的数据按所述表1、表2的数据结构中各项进行一一对应,判断所读取的数据是否满足所述表1、表2的数据结构,如果是,执行步骤S204,否则,执行步骤S203;
S203:将页大小重新赋值并判断是否大于0x4000:页大小=当前页大小*2,判断页大小是否大于0x4000,如果是,结束流程,否则执行步骤S202;
S204:从当前页的起始地址向后偏移,偏移的字节长度为当前页大小-2,读取2字节的内容作为当前页的第一条数据的起始地址,判断起始地址是否不小于0x63且不大于阀值,所述阀值=当前页大小-页内记录总数*(页目录中单个槽的长度+单条事务ID长度+单条回滚指针长度),如果是,执行步骤S300,否则,执行步骤S203;
S300:根据压缩数据的页结构和表结构,计算当前压缩数据的起始地址;
S400:采用ZLIB解压压缩数据后,根据所述压缩数据的页结构确定每一记录条目的地址;
S500:采用非压缩数据页格式恢复MySQL数据库的innodb压缩数据,步骤S500包括以下步骤:
S501:根据表结构计算出NULL标志所占字节数;
S502:寻址至记录在非压缩页中的相对地址,从后往前分别读取NULL标志所占字节数,得到NULL标志;
S503:根据表结构计算出变长度字段个数;
S504:获取变长字段长度,包括以下步骤:
S5041:寻址至记录的起始地址+NULL标志所占字节数,读取并存储当前地址中1字节的内容作为变长字段长度,cnt赋初值为所述变长字段个数;
S5042:所读取1字节的内容与0x80进行逻辑与运算,判断结果是否为0x80,如果是,执行步骤S5044,否则,执行步骤S5043;
S5043:当前地址=当前地址-1,cnt=cnt-1,执行步骤S5046;
S5044:当前地址=当前地址-2;
S5045:读取并存储当前地址中2字节的内容作为变长字段长度,cnt=cnt-1;
S5046:判断当前cnt是否为0,如果是,执行步骤S505,否则,执行步骤S5041;
S505:寻址至记录的起始地址并根据表结构、NULL标志以及步骤S504中所获取的各个变长字段长度,对数据进行解析;
S506:重复执行步骤S501到步骤S505,直至所有记录解析完毕并存储为恢复的所述MySQL数据库的innodb压缩数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于四川巧夺天工信息安全智能设备有限公司,未经四川巧夺天工信息安全智能设备有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811453262.8/1.html,转载请声明来源钻瓜专利网。