【技术实现步骤摘要】
一种数据库恢复方法和装置
本申请涉及数据库
,尤其涉及一种生成数据库恢复文件的方法、以及恢复数据库的方法。
技术介绍
通常,在数据库系统中通过预写式日志(Write-AheadLogging,WAL)来确保数据完整性。WAL的中心思想是,对数据库文件的修改必须只能发生在这些修改已经记录到日志之后,从而在将这些修改记录到日志之后,便可以返回修改成功,而不需要等到将数据页写入持久性存储介质之后。在出现数据库崩溃的情况下,可通过日志来恢复数据库。另外,在WAL技术中,还使用检查点技术(CheckPoint,CKPT)来缩短数据库恢复时间。检查点与预设的时间点相对应,检查点技术是在预设的时间点将内存中在该检查点之前被修改的数据写入持久性介质中,从而,在通过日志恢复数据库时,可只对检查点之后数据通过日志进行恢复,从而可减少WAL日志的回放量,缩短数据库的恢复时间。目前的存储介质都是以固定粒度为单位读写数据,例如固态硬盘(SolidStateDrive,SSD)以页为单位读写数据,而硬盘(HardDiskDrive,HDD)以扇区为单位读写数据,但对数据库中的一条记录的修改可能只占用所述固定粒度中的几个字节。以存储在SSD中的数据库为例,在通过日志对对检查点之后被修改的记录进行恢复时,由于SSD以页为单位读写数据,即便是待恢复的记录只占用了一页中的几个字节,也需要把整页数据读出到内存,从而使增加了数据库恢复的时间。
技术实现思路
本专利技术一方面提供一种由数据库服务器执行的数据库恢复方法,所述数 ...
【技术保护点】
1.一种数据库恢复方法,由数据库服务器执行,所述数据库服务器中存储有恢复文件,所述恢复文件包括在预设时刻数据表中的每个记录行的数据的存储地址,所述方法包括:/n在所述数据库服务器故障后,从所述恢复文件中获取在预设时刻所述数据表中每个记录行的数据的存储地址;/n在所述数据库服务器的内存中生成第一映射表,所述第一映射表中包括与所述数据表的记录行一一对应的各行,将所述恢复文件中记录的所述数据表的每个记录行的数据的存储地址记录至所述第一映射表中每个记录行对应的行中。/n
【技术特征摘要】
1.一种数据库恢复方法,由数据库服务器执行,所述数据库服务器中存储有恢复文件,所述恢复文件包括在预设时刻数据表中的每个记录行的数据的存储地址,所述方法包括:
在所述数据库服务器故障后,从所述恢复文件中获取在预设时刻所述数据表中每个记录行的数据的存储地址;
在所述数据库服务器的内存中生成第一映射表,所述第一映射表中包括与所述数据表的记录行一一对应的各行,将所述恢复文件中记录的所述数据表的每个记录行的数据的存储地址记录至所述第一映射表中每个记录行对应的行中。
2.根据权利要求1所述的方法,还包括,在生成所述第一映射表之后,获取在所述预设时刻之后所述数据表中的记录行的数据变化;基于所述数据表中的记录行的数据变化修改所述第一映射表中与所述记录行对应的行。
3.根据权利要求1所述的方法,其特征在于,在所述数据库服务器故障前,所述方法还包括:
每隔一段时间设置一个检查时刻,每到达一个检查时刻,从所述数据库服务器的内存中存储的所述数据表对应的第二映射表中获取在该检查时刻所述数据表的每个记录行的数据的存储地址,所述第二映射表在所述数据库服务器故障前用于记录所述数据表中的记录行的数据的存储地址,所述第二映射表中包括与所述数据表的记录行一一对应的各行;
生成全量检查点文件,将获取的在所述检查时刻所述数据表的每个记录行的数据的存储地址记录至全量检查点文件中;
在所述数据库服务器故障后,将对应的检查时刻离所述数据库故障的时间最近的全量检查点文件作为所述恢复文件。
4.根据权利要求1所述的方法,其特征在于,在所述数据库服务器故障前,所述方法还包括:
每隔一段时间设置一个检查时刻,每到达一个检查时刻,判断所述数据表的热度是否大于一预设值;
若所述数据表的热度大于等于所述预设值,则从所述数据库服务器的内存中存储的所述数据表对应的第二映射表中获取在该检查时刻所述数据表的每个记录行的数据的存储地址,所述第二映射表在所述数据库服务器故障前用于记录所述数据表中的记录行的数据的存储地址,所述第二映射表中包括与所述数据表的记录行一一对应的各行;生成全量检查点文件,将获取的在所述检查时刻所述数据表的每个记录行的数据的存储地址记录至全量检查点文件中;
若所述数据表的热度小于所述预设值,则从所述第二映射表中获取在上次检查时刻与本次检查时刻之间产生的所述数据表的记录行的新数据的存储地址,并从所述第二映射表中获取在上次检查时刻与本次检查时刻之间删除的数据表的记录行;生成增量检查点文件,将所述新数据对应的第二映射表中的行标识及所述新数据的存储地址记录至增量检查点文件,并将所述删除的记录行对应的第二映射表中的行标识及对其的预定标注记录至增量检查点文件;
在所述数据库服务器故障后,将检查时刻离所述数据库故障的时间最近的全量检查点文件、及检查时刻在该全量检查点文件之后的增量检查点文件作为所述恢复文件。
5.根据权利要求4所述的方法,所述数据库服务器中还存储有控制文件,所述方法还包括,每到达一个检查时刻,在该检查时刻之后,在所述控制文件中记录数据表中在该检查时刻之后存入的数据的存储地址,其中,在所述数据库服务器故障后,获取在所述检查时刻之后所述数据表中被更改的记录行的数据的存储地址包括,在所述数据库服务器故障后,基于所述控制文件获取在所述检查时刻之后所述数据表中被更改的记录行的数据的存储地址。
6.根据权利要求1所述的方法,其特征在于,在所述数据库服务器故障前,所述数据库服务器的内存中包括第二映射表,所述第二映射表在所述数据库服务器故障前用于记录所述数据表中的记录行的数据的存储地址,所述第二映射表中包括与所述数据表的记录行一一对应的各行,所述第二映射表被划分为多个分区,每个分区包括多个行;所述方法还包括:
每隔一段时间设置一个检查时刻,每到达一个检查时刻时,判断每个分区对应的数据表的记录行的热度是否大于一预设值;
若所述分区对应的数据表的记录行的热度大于等于所述预设值,则从所述分区中获取在该检查时刻所述分区中的每个记录行的数据的存储地址;生成该分区的全量检查点文件,将获取的在该检查时刻所述分区对应的每个记录行的数据的存储地址记录至所述全量检查点文件中;
若所述分区对应的数据表的记录行热度小于所述预设值,则从所述分区中获取在上次检查时刻与本次检查时刻之间产生的所述数据表的记录行的新数据的存储地址,并从所述分区中获取在上次检查时刻与本次检查时刻之间删除的数据表的记录行;生成该分区的增量检查点文件,将所述新数据对应的第二映射表中的行标识及所述新数据的存储地址记录至增量检查点文件,并将所述删除的记录行对应的第二映射表中的行标识及对其的预定标注记录至增量检查点文件;
在所述数据库服务器故障后,将检查时刻离所述数据库故障的时间最近的所述分区的全量检查点文件、及检查时刻在该全量检查点文件之后的所述分区的增量检查点文件作为所述分区的恢复文件。
7.一种数据库恢复装置,部署于数据库服务器中,所述数据库服务器中存储有恢复文件,所述恢复文件包括在检查时刻数据表中的每个记录行的数据的存储地址,所述装置包括:
第一获取单元,用于在所述数据库服务器故障后,从所述恢复文件中获取在检查时刻所述数据表...
【专利技术属性】
技术研发人员:陈平增,邹蛟同,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。