一种数据库恢复方法和装置制造方法及图纸

技术编号:28941510 阅读:19 留言:0更新日期:2021-06-18 21:46
本申请实施例提供一种由数据库服务器执行的数据库恢复方法和装置,所述数据库服务器中存储有恢复文件,所述方法包括:在数据库服务器故障后,从恢复文件中获取在检查时刻数据表中每个记录行的数据的存储地址;在内存中生成第一映射表,将恢复文件中记录的所述数据表的每个记录行的数据的存储地址记录至所述第一映射表中每个记录行对应的行中。通过所述方法和装置加快了数据库恢复时间,节省了存储资源和计算资源。

【技术实现步骤摘要】
一种数据库恢复方法和装置
本申请涉及数据库
,尤其涉及一种生成数据库恢复文件的方法、以及恢复数据库的方法。
技术介绍
通常,在数据库系统中通过预写式日志(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

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

1