逻辑日志生成方法、数据库备份/恢复方法与系统的制作方法

文档序号:6612922阅读:181来源:国知局

专利名称::逻辑日志生成方法、数据库备份/恢复方法与系统的制作方法
技术领域
:本发明涉及计算机领域,尤其涉及一种逻辑日志生成方法及数据库备份方法、恢复方法和数据库备份系统。
背景技术
:随着计算机技术的不断发展,数据库的备份成为保存数据库信息的一个重要手段,而数据库管理系统就是用来管理大量的数据库凄t据的系统。目前所用的数据库备份方法主要包括物理备份和逻辑日志备份两种。物理备份是将某时间点数据库的存储内容复制到多个存储设备如磁带、磁盘上保存起来的过程,它是数据库备份中采用的基本手段。若单独采用物理备份,则在备份过程中必须禁止用户对数据库的访问,即物理备份期间数据库应当处于关闭状态,否则如果在物理备份过程中有用户对正在备份的数据库进行访问,例如该访问对存储空间内的存储结果进行了修改,则在修改时间点之前已备份的存储空间的最后修改结果没有得到备份,此次物理备份只备份了修改时间点之后进行备份的存储空间的修改结果。可见,现有技术物理备份过程中需要阻塞操作请求,即物理备份过程会阻塞用户的新的操作请求,反而言知,每次物理备份必须避开操作请求时间,在对数据库的长时间连续的业务请求情况下,两次物理备份的时间间隔会需要很长,进一步会导致数据库备份不及时,在数据库出现故障时,容易丢失大量有用数据;如果物理备份时间间隔较短,则导致系统频繁地进行备份,新的操作请求不断受阻。曰志是用来记录每次对数据库的访问操作的文件。逻辑日志备份是指对数据库进行访问时,将该次访问的数据库的过程记录在逻辑日志中,并将该逻辑日志进行存储。可见,逻辑日志备份是备份数据库的存储空间的变化过程。现有的逻辑日志中对操作的描述大部分为直接描述,因此重复执行某一条逻辑日志时,如果两次操作描述中操作对象的基础状态不同或操作对象不同会使得多次执行逻辑日志的结果不一致。例如某一次对数据库的操作在逻辑日志中的操作描述可能是"把数据A的值增加5",则恢复数据库时,多次重复执行这个操作后,后一次数据区中的数据值总比前一次大5。可见,操作对象的基础状态不同影响多次的操作结果;又例如某一次对数据库的操作在逻辑日志中的操作描述为"修改属性类型为A且属性值等于1的记录,将其属性值修改成2;修改属性类型为A且属性值等于2的记录,将其属性值修改成3",则恢复数据库时,按照上述操作描述对数据区重新执行该操作时,由于第一次执行操作时将属性类型为A且属性值等于1的记录中的该属性值修改成2,因此,第二次执行操作时,相对于第一次操作来说,"属性类型为A且属性值等于2的记录"这一操作描述包含的操作对象的范围变化了,则第二次执行操作后,会把最初属性类型为A且属性值等于1的记录也归属到属性类型为A且属性值等于3的集合中。可见,对于同一条逻辑日志,该逻辑日志的操作描述包含的操作对象不同也影响多次执行逻辑日志的操作结果。若单独采用逻辑日志备份方法对数据库进行备份,每次备份时必须把对数据库的存储空间的所有历史逻辑日志都记录下来,这样导致备份的数据量过大,且在恢复数据库时,恢复延迟太大,有碍系统效率。为解决上述单独采用逻辑日志备份的缺陷,现有一种物理备份和逻辑曰志备份组合的数据库备份方法,具体实施方法为使用物理备份方法定期对数据库进行备份,每次物理备份完成时间点之后对数据库进行逻辑日志备份。即每次物理备份开始时间点之前的逻辑日志执行结果都体现在物理备份中,物理备份完成时间点之后至卞一次物理备份开始之前的时间段间的逻辑日志执行结果体现在逻辑日志备份中。该方法在每次物理备份时只需要备份本次物理备份完成时间点之后的逻辑日志,无需备份所有历史逻辑日志。但是采用该方法进行数据库备份时,物理备份过程仍然需要阻塞操作请求,否则即使在物理备份过程中进行了逻辑日志备份,但是恢复数据库时,无法根据错误的物理备份结果恢复出正确的数据。例如,假设某次物理备份启动时数据库中有两个数据A-10和B-10,在物理备份过程中,当物理备份完数据A且还没开始备份数据B的某个时刻tl,如果对数据库进行的一项操作请求包含操作描述为"将数据库中的所有数据的当前值都增加5"的操作请求,则此时数据库中的数据A和数据B的值都变为15,如果某个时刻t2(t2>tl)开始物理备^f分数据B,则物理备份完成后数据B的值为15,而由于数据A的值在数据库才艮据上述操作请求进行相应操作时已经备份完成了,因此最后物理备份的结果为A=10,B=15。而物理备份过程中的逻辑日志记录中的描述为将数据库中的所有数据的值都增加5,因此,当恢复数据库时,会根据物理备份的结果"A=10,B=15"以及上述逻辑日志,把数据库中的数据恢复为"A=5,B=10"。或者,如果以物理备份的结果A:IO,B=15"为操作对象,重新执行描述为"将数据库中的所有数据的值都增加5"的逻辑日志,则执行一次该逻辑日志后,恢复出的数据库数据为A=15,B=20。可见,现有的物理备份和逻辑日志备份组合方法中,物理备份过程仍然需要阻塞操作请求。综上所述,本发明人发现现有的对数据库进行物理备份的过程中,数据库管理系统不允许接收新的操作请求。
发明内容本发明实施例提供一种逻辑日志生成方法及数据库备份方法、恢复方法和数据库备份系统,用以解决现有技术中存在的物理备份过程中数据库管理系统无法接收新的操作请求的问题。本发明实施例提供一种逻辑日志生成方法,包括获取对数据库进行操作的操作请求中包含的操作描述;根据所述操作描述生成包含操作对象的唯一确定标识和操作类型标识的逻辑日志;其中,所述操作类型标识包含删除操作类型标识或覆盖操作类型标识;当所述操作类型标识为覆盖操作类型标识时,所述逻辑日志还包括对操作对象进行覆盖操作的覆盖数据。采用上述的逻辑日志生成方法,本发明实施例还提供一种数据库备份方法,包括对数据区进行新的物理备份;将上一次物理备份启动时刻之后至所述新的物理备份启动时刻之前记录的逻辑日志备份至第一目录下;将所述新的物理备份启动时刻之后的逻辑曰志备份至第二目录下。此外,本发明实施例还提供一种数据库恢复方法,应用于对采用上述的数据库备份方法备份的数据库进行恢复,该方法包括使用物理备份的数据恢复出所述物理备份启动时刻之前的数据区数据;执行所述物理备4分启动时刻后备份的逻辑日志。此外,本发明实施例还提供一种数据库备份系统,包括逻辑日志生成模块、物理备份模块、逻辑日志备份模块和数据区,其中逻辑日志生成模块,用于根据对数据库进行操作的操作请求中包含的操作描述,生成包含操作对象的唯一确定标识、并包含操作类型标识为覆盖操作类型标识或删除操:作类型标识的逻辑日志;物理备份模块,用于根据物理备份触发条件对所述数据区中存储的数据进行物理备份;逻辑日志备份模块,用于对逻辑日志生成模块生成的逻辑日志进行实时备份;并将所述物理备份启动时刻之前的逻辑日志和所述物理备份启动时刻之后的逻辑日志分别进行备份;数据区,用于存储数据库数据。本发明实施例提供的数据库备份方法中,对数据区进行物理备份;将对数据库进行操作的操作请求记录为逻辑日志并对生成的逻辑日志进行实时备份;记录逻辑日志时,先根据对数据库进行操作的操作请求包含的搡作描述生成包含操作对象的唯一确定标识及操作类型标识为覆盖操作类型标识或删除操作类型标识的逻辑日志;备份逻辑日志时,对逻辑日志进行分流备份,具体为将上一次物理备份启动时刻之后至本次物理备份启动时刻之前记录的逻辑日志备份至第一目录下;将本次物理备份启动时刻之后的逻辑日志备份至第二目录下。因此,采用此方法实施例对数所库备份时可实现如下有益效果1、数据库的物理备份过程中逻辑日志可记录下数据库的所有动作,实现对数据库的实时备份,物理备份过程不再阻塞操作请求,实现了数据库备份过程不中断业务的要求,提高了系统的备份效率;2、逻辑备份时不需要备份所有的历史逻辑日志,而只需要根据物理备份启动时刻,备份上一次物理备份启动时刻至本次物理备份启动时刻之间的逻辑日志,极大地减少了逻辑日志的备份量,缩短了系统的备份时间,再次提高了系统的备份效率。采用本发明实施例提供的数据库备份方法,对数据库进行恢复时,使用物理备份的数据恢复出物理备份启动时刻之前的数据区数据;执行物理备份启动时刻后备份的逻辑日志即可。由于备份的逻辑日志中,对数据库进行操作的所有操作请求包含的操作描述都转换成操作对象以唯一固定的标识表示的覆盖操作类型或删除操作类型的操作描述,因此,在恢复数据库过程中执行逻辑日志能带来如下有益效果1、可以使数据库在物理备份过程中接收新的操作请求,且能提高数据库备份以及数据库恢复的准确性和可靠性;2、数据库恢复过程不需要重做所有的历史逻辑日志,减少了数据库的恢复时间,提高了数据库恢复效率。图1为本发明实施例提供的数据库备份方法中一次物理备份启动之后逻辑日志的实时备份流程图;图2为本发明实施例提供的一种数据库备份系统结构示意图。具体实施方式本发明实施例^提供一种逻辑日志生成方法,用该方法生成逻辑日志时,先获取对数据库进行操作的操作请求包含的操作描述;然后根据该操作描述生成包含操作对象的唯一确定标识和操作类型标识的逻辑日志。此外,当生成逻辑曰志还可以包括对操作对象进行覆盖操作的覆盖数据。采用本发明实施例提供的方法,能实现多次执行逻辑日志后操作对象的操作结果与执行逻辑日志的次数无关。上述生成逻辑日志的过程中,将原操作请求中的操作描述转换成操作对象以唯一确定标识表示的、操作类型标识为覆盖操作类型标识或删除操作类型标识的操作描述。下面结合具体例子对本发明实施例提供的逻辑日志的生成方法进行详细描述。首先,为满足在多次执行逻辑日志时操作对象都相同的要求,实行如下操作描述转换将每次操作涉及的操作对象分别使用表示唯一且范围不可变的标识表示。较佳地,由于数据库中的存取单位的地址或者存取单位的标识(ID)是一种唯一且固定不变的标识,因此对于每个操作描述,可以使用数据库存储空间的最小存取单位的地址或者存取单位的ID代表该操作描述包含的操作对象。例如一次删除表数据的操作请求可能涉及几个数据区内记录的删除,则进行操作描述转换时,可以将被删除记录对应的存取单位的ID来表示对应的操作对象。其次,为了满足操作对象的基础状态不影响操作结果的要求,实行如下操作类型转换将操作描述包含的操作类型转换成覆盖操作类型或删除操作类型。实行该操作类型转换后,对同一个操作对象,重复执行逻辑日志时是以转换后的操作描述中的内容对操作对象的现有内容进行覆盖或删除,因此无论将该逻辑日志运行多少次,对操作对象的操作结果都与操作一次的结果一致。如下表1所示,假设数据库创建初期数据库中一存储区的标识(ID)为ChunklO,该存储区ChunklO被均分为10个存储单位,每个存储单位用Slot表示,设每个存储单位的标识用XMID表示,并设每一个存储区只存放同一个数据表,每一个存储单位Slot对应存储一条记录。每个Slot包括头部信息区SoltHead和数据区SoltData:SoltHead中主要存储可用操作类型标识;SoltData用于存储用户数据。假设SoltData中存储的数据长度为8位,且每个SoltData中存储的数据包括属性标识(attributeID)和数值(value)两部分,其中前4^f立存》文value^f直只十应的attributeID,后44立存方文value<直。表1<table>tableseeoriginaldocumentpage11</column></row><table>当数据库管理系统接收一个关于ChunklO的操作请求时,该操作请求的操作对象可能是ChunklO中的几个Slot的内容,因此可以先转换操作描述包含的操作对象,将操作描述涉及到的每个Slot使用其对应的XMID表示。然后再将操作描述包含的操作类型转换为覆盖或删除操作类型。转换操作描述后的逻辑日志记录格式为"XMID+OperateType+SlotData"。其中,XMID由两位ChunklD+两位SlotID表示(SlotID为该Chunk中对应的Slot的ID)。OperateType为操作类型标识,对应于存储区的SoltHead,该标识包括删除操作类型标识和覆盖操作类型标识两类删除操作类型标识对应于SoltHead的未使用状态标记,覆盖操作类型标识对应于SoltHead的使用状态标记。例如,如果存储区的SoltHead的使用状态标记包括"0"和'T,两种,其中SoltHead为"0"表示该存储单元没有使用,SoltHead为"1"表示该存储单元已用于存储数据,则可将OperateType根据两大类操作类型设定其可以取值为"0"和"1","0"表示删除操作类型,"1"表示覆盖操作类型,即OperateType取值为"0"表示删除该条逻辑日志所指的Slot的数据区内容;OperateType取值为"1"表示使用该条逻辑日志内记录的SlotData覆盖对应的Slot的数据区的数据。其中,删除操作类型标识对应删除操作,覆盖操作类型标识对应增加操作、更新操作和增量更新操作等其余非删除操作。下面举例对两种不同的操作类型标识的逻辑日志记录方法进行详细说明为表述方便,设所有的操作请求的操作对象都是存储区ChunklO:1、OperateType为覆盖操:作类型标识(非删除操作类型标识)a、i曾力"己^L才喿4乍例如设当前ChunklO处于表1所示的状态,数据库管理系统接收了一条操作描述为"增加记录(attributelD-0001,value=0011},,的操作请求,则先确定出该操作描述包含的操作对象,再根据该操作对象的存储单元地址记录逻辑曰志。例如要将所述记录增加到ChunklO中SlotID为01的数据区,则对应该操作请求的逻辑日志前4位为1001,第5位记为l表示覆盖操作类型,最终逻辑曰志可记为1001100010011,表示对SlotID为01的Slot的SoltHead使用1覆盖,并将该存储单元对应的SlotData数据以00010011进行覆盖;其中,按从左至右的顺序,前4位"1001"表示与SlotID为01对应的唯一标识XMID,第5位"1"表示操作类型为覆盖操作,后8位表示覆盖的具体数值为"00010011"。随后数据库管理系统又接收一条操作描述为"增加记录{attributeID=0002,value=0012}"和一条操作描述为"增力口记录{attributeID=0003,value=0010},,的操作请求,假设这两条操作描述包含的操作对象为ChunklO中SlotID为02和03的数据区,则逻辑日志可记为1002100020012和1003100030010,表示对SlotID为02的Slot的SoltHead使用1覆盖,并将该存储单元对应的SlotData数据以00020012进行覆盖,并对SlotID为03的Slot的SoltHead使用1覆盖,并将该存储单元对应的SlotData数据以00030010进行覆盖。增加后两条记录后存储区ChunklO的存储状态如表2所示表2<table>tableseeoriginaldocumentpage13</column></row><table>b、更新记录纟喿作例如当ChunklO处于表2所示的状态时,数据库管理系统接收了一条操作描述为"将所有attributelD^0002的记录对应的Slot的attributeID更新为0001"的操作请求,则写逻辑日志的时候,需要先找出该操作描述包含的所有操作对象,在本例中,操作对象为SlotID为02和03的两个存储单位,则逻辑日志的前4位分别记为1002和1003,逻辑日志的第5位记为1(覆盖操作),最终记录下的逻辑日志为1002100010012和1003100010010,表示对SlotID为02的Slot的SoltHead使用1覆盖,并将该存储单元对应的SlotData数据以00010012进行覆盖,并对SlotID为03的Slot的SoltHead使用1覆盖,并将该存储单元对应的SlotData数据以00010010进行覆盖,覆盖后的ChunklO存储状态如表3所示表3<table>tableseeoriginaldocumentpage14</column></row><table>c、增量更新操作例如当ChunklO处于表3所示的状态时,数据库管理系统接收了一条操作描述为"将attributeID为0001的记录对应的value的末位值都增加1"的操作请求,则写逻辑日志前,先确定出才喿作对象为SlotID为01,02和03的三个存储单位,然后记录逻辑日志的前4位分别为1001、1002和1003,逻辑曰志的第5位均记为1(覆盖操作),最终记录下的逻辑日志为1001100010012,1002100010013和1003100010011,执行该操作请求后,ChunklO存储状态如表4所示表4<table>tableseeoriginaldocumentpage14</column></row><table><table>tableseeoriginaldocumentpage15</column></row><table>2、OperateType为删除操作类型标识例如当Chunkl0处于表3所示的状态时,数据库管理系统接收了一条才喿作描述为"将attributeID为0001的记录删除"的操作请求,则写逻辑日志前,先确定出操作对象为SlotID为01,02和03的三个存储单位,然后可记录逻辑日志为1001000000000,1002000000000和1003000000000。其中,逻辑曰志的第5位记录为O表示将对应存储单位的数据区内容删除(释放),写完逻辑日志后数据库执行该操作,ChunklO的操作结果如表5所示表5<table>tableseeoriginaldocumentpage15</column></row><table>以上两种操作类型中,对于删除操作,由于OperateType为0表示将对应存储单位的数据区内容删除,因此写逻辑日志时,无需设定其中的SlotData的值为00000000,即删除操作描述对应的逻辑日志还可记录为"XMID+OperateType+任意值的SlotData,,或者"XMID+OperateType,,。若以对应的存储区为操作对象重复运行这两种逻辑日志,则操作时都是将逻辑曰志中记录的XMID的使用状态标识置为未使用状态标记值(例如根据OperateType=0将SoltHead置为0),然后将该XMID对应的存储单位的数据区内容删除,最后的存储区的操作结果是一致的,操作结果均与逻辑日志中的SlotData没有关系,因此对于删除操作,逻辑日志中至少需要记录操作对象地址标识以及删除操作类型标识。对于OperateType为覆盖操作类型标识的逻辑日志,由于对应于非删除搮:作,因此覆盖操作的逻辑日志还可记录为"XMID+OperateType(删除操作类型标识外的任意值)+SlotData",例如,如果删除#:作类型标识设定为0,则记录非删除操作请求对应的逻辑日志时,可以将逻辑日志中的OperateType记为非0的任意允许设定的值,以表示该逻辑日志记录的操作请求为覆盖操作(非删除操作)。重复运行逻辑日志"XMID+OperateType(删除操作类型标识外的任意值)+SlotData"时,可规定将XMID对应的slot的SoltHead置为1。综上所述,对应于某条梯:作请求,逻辑日志可记录为标准方式"XMID+OperateType+SlotData",其中,OperateType根据操作类型可设置为两种值,具体记录方式见前面所述内容,不再重述。除上述方法外,记录逻辑日志时还可规定OperateType为某一值时表示删除操作,对于非删除操作请求,可将OperateType记录为与非删除操作不同的任意值,重新运行该逻辑曰志时,如果OperateType对应的值为设定的删除操作值,则无论OperateType后的SlotData为多少,都将该逻辑日志中XMID对应的存储单位的SoltHead值置为非使用状态标识值,并删除该XMID对应的存储单位的存储区数据;如果OperateType对应的值不是设定的删除操作值,则无论OperateType的值为多少,都将该逻辑日志中XMID对应的存储单位的SoltHead值置为使用状态标识值,并将该逻辑日志中记录的SlotData数据覆盖原XMID对应的存储单位的存储区数据。由上可见,对于删除操作,即使多次重复运行转换后的逻辑日志,操作结果都是将对应存储区的数据删除,操作结果与逻辑日志重复运行的次数无关;对于非删除操作,由于转换后的逻辑日志使用了覆盖操作,因此逻辑日志即使多次重复运行也不会改变对应的存储单位数据,操作对象的操作结果都是逻辑日志中记录的SlotData值。基于上述逻辑日志生成方法,本发明提供一种数据库备份方法,该方法包括使用本发明提供的逻辑日志生成方法将对数据库进行操作的操作请求写为逻辑日志,并对生成的逻辑日志进行实时备份;根据定期发起(或用户发起)的数据区备份请求对数据存储区存储的数据进行物理备份。其中,进行逻辑日志备份时,将上一次物理备份启动时刻至本次物理备份启动时刻之间备份的逻辑日志做为本次物理备份之前的逻辑日志,将本次物理备份启动时刻之后的逻辑日志备份与本次物理备份之前的逻辑日志分别进行备份。具体实施时,将本次物理备份启动时刻之后(下一次物理备份启动时刻之前)生成的逻辑日志实时备份至第二目录下;在每一次物理备份结束时,可将上一次物理备份启动时刻至本次物理备份启动时刻之间的记录的逻辑日志备份至第一目录下。图1所示为一次物理备份启动之后逻辑日志的实时备份方法流程图,包括S101:接收数据区备份请求,将当前第二目录下存储的逻辑日志转存至第三目录下。其中,转存时,直接使用当前第二目录下存储的逻辑日志覆盖原第三目录下的内容。S102:将本次数据区物理备份过程中存储在緩冲区的逻辑日志实时备份至所述第二目录下。其中,如果数据区进行物理备份过程中,数据库管理系统接收了新的操作请求,则根据前面提供的逻辑日志备份方法,将该操作请求包含的操作描述转换后备份为逻辑日志并存储在緩冲区中,该操作请求对应的操作结束后,将緩冲区中备份的逻辑日志实时备份至所述第二目录下。S103:判断是否有数据区备份结束请求,如果有,则继续执行S104,否则返回执行S102。S104:将当前第三目录下存储的上一次物理备份启动时刻至本次物理备份启动时刻之间记录的逻辑日志转存至所述第一目录。S105:将緩沖区的逻辑日志实时备份至第二目录,并继续执行S106。S106:判断是否有新的数据区备份请求,如果有,则返回执行S101,否则返回执行S105。其中,上述步骤S101-S104中,在数据区备份结束之前,使用第三目录备份本次物理备份启动时刻之前存储于第二目录下的逻辑日志,而不直接将本次物理备份启动时刻之前存储于第二目录下的逻辑日志备份至第一目录的原因为如果本次物理备^f分失败,则可以将转存至第三目录下的本次物理备份启动时刻之前的逻辑日志简单恢复至第二目录下,等待下一次数据区备份请求的到来。否则,如果在步骤S101中直接将本次物理备份启动时刻之前存储于第二目录下的逻辑日志备份至第一目录下,则如果本次数据区备份失败,需要恢复第一目录下存储的大量数据;或者,由于第一目录的存储容量有限,在将本次物理备份启动时刻之前存储于第二目录下的逻辑日志备份至第一目录下时,会覆盖原第一目录下备份的部分内容,导致不能完整恢复本次物理备份启动时间点之前第一目录下的内容。较佳地,可将备份到第二目录下的物理备份过程中的逻辑日志和本次物理备份完成之后的逻辑日志分别进行备份。例如可预先在逻辑日志中创建一个LogOld目录,一个LogDirty目录,一个Log目录,进行某次物理备份时,将本次物理备^f分启动时刻前的逻辑日志(即上一次成功完成物理备^f分时刻至本次物理备份启动时刻之间的逻辑日志)备份到LogOld目录下;将物理备份过程中的逻辑日志实时备4分到LogDirty目录下;将物理备份完成时刻之后的逻辑曰志实时备份到Log目录下。这样,可以方便地将物理备份过程中的逻辑日志进一步作另行备份或供其余操作使用,同时可以进一步降低另行备份时的备份量。本发明实施例提供的数据库备份方法中,将每次物理备份前、物理备份过程中以及物理备份完成之后的逻辑日志进行了逻辑日志的实时备份,因此,对数据库的所有操作都能得到实时备份;此外,整个数据库备份过程中的逻辑日志备份不需要备份所有的历史逻辑日志,只需要备份前后两次物理备份间隔时长内记录的逻辑日志即可。可见此种数据库备份方法大大降低了逻辑日志备4分量,相应的恢复数据库时也不再需要执行所有的历史逻辑日志。此外,本发明实施例提供的数据库备份方法中,由于将对数据库进行操作的操作请求包含的操作描述转换成操作对象以唯一确定标识表示、操作类型标识为覆盖或删除操作类型标识的操作描述,因此,即使多次执行转换后的操作描述对应的操作,操作结果都是相同的,从而在恢复数据库时,可以以某次物理备份结果为操作对象,执行该次物理备份过程中以本发明提供的方法记录的逻辑日志,即可完整且正确的恢复数据库。可见,使用本发明提供的逻辑日志备份方法,物理备份过程不再需要阻塞操作请求。对应于本发明实施例提供的数据库备份方法,本发明实施例还提供一种数据库恢复方法,该方法包括使用物理备份的数据恢复物理备份启动时刻之前的数据区数据;以恢复出的数据区数据为操作对象执行物理备份启动时刻后备份的逻辑日志。如果对数据库备份时在物理备份启动时刻之后,对物理备份过程的逻辑日志和物理备份完成之后的逻辑日志分别进行了备份,则上述数据库恢复方法中执行物理备份启动时刻之后备份的逻辑日志,包括1)、执行物理备份过程中备份的逻辑曰志;2)、执行物理备份完成后备份的逻辑日志。以下为表述方便,以前述存储区ChunklO的某次物理备份过程和恢复方法为例,对本发明实施例提供的数据库恢复方法进行详细说明。例如某次物理备份启动时刻需要备份的存储区Chunk10的数据状态如前面的表2所示,设物理备份启动时刻为tl,设在物理备份过程中的t2时刻(t2>tl),数据库管理系统接收了一个操作描述为"将所有attributelD^0002的记录对应的attributeID更新为0001"的新的操作请求(设整个物理备份过程数据库管理系统只接收了这一次新操作),假设t2时刻物理备份已经完成对ChunklO中SlotID为02的存储单位中数据的备份,但是还没开始备份SlotID为03的存储单位中的数据,则物理备份完成之后,ChunklO的物理备份结果^口表6戶斤示表6<table>tableseeoriginaldocumentpage20</column></row><table>可见,物理备份过程中没有备份下SlotID为02的Slot对应的SlotData数据执行操作后的变更的数据。按照本发明实施例提供的逻辑日志生成方法,t2时刻数据库管理系统接收的#:作所对应的逻辑日志按照标准记录方式记为1002100010012和1003100010010。因此,采用本发明实施例提供的数据库恢复方法恢复tl时刻之后存储区ChunklO的数据时,首先采用物理备份的数据恢复出表6所示的数据,然后执行备除的逻辑日志1002100010012和1003100010010,可知执行逻辑日志后,对ChunklO中SlotID为02的Slot对应的SlotData数据以00010012进行覆盖,因此,该存储单位的数据区中错误的物理备份数据00020012被覆盖后变为00010012;对SlotID为03的Slot对应的SlotData数据以00010010进行覆盖,由于覆盖前和覆盖后该存储单位中的数据一致,因此,覆盖后的数据也是正确的数据库操作结果。覆盖后的ChunklO数据状态如表7所示表7<table>tableseeoriginaldocumentpage21</column></row><table>上述数据库恢复方法中,由于以物理备份恢复出的数据为操作对象,重新执行了逻辑日志备份中备份的逻辑日志,将逻辑日志中记录的各存储单位的数据分别覆盖了物理备份恢复出的对应存储单位的数据,使恢复出的数据库数据准确可靠。图2所示为本发明实施例提供的一种数据库系统,该系统包括逻辑日志生成模块21、物理备份模块22、逻辑日志备份模块23和数据区24,其中逻辑日志生成模块21,根据对数据库进行操作的操作请求包含的操作描述,将接收的操作请求包含的操作描述转换成操作对象以唯一且固定不变的标识表示的覆盖类型或删除类型的操作描述,并生成相应逻辑日志。物理备份模块22,根据物理备份触发条件对数据区24中存储的数据进行物理备份。逻辑日志备份模块23,对逻辑日志生成模块21生成的逻辑日志进行实时备份;并将物理备份启动时刻之前的逻辑日志和启动时刻之后的逻辑日志分别进行备份。数据区24,用于存储数据库数据。通过本发明实施例提供的上述技术方案,可以对数据库数据区的数据进行实时备份,且物理备份的过程中不再需要阻塞操作请求,在恢复数据库时可以将备份的逻辑日志重复执行,准确可靠地恢复出的对应数据区的存储的数据。明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。权利要求1、一种逻辑日志生成方法,其特征在于,包括获取对数据库进行操作的操作请求中包含的操作描述;根据所述操作描述生成包含操作对象的唯一确定标识和操作类型标识的逻辑日志;其中,所述操作类型标识包含删除操作类型标识或覆盖操作类型标识;当所述操作类型标识为覆盖操作类型标识时,所述逻辑日志还包括对操作对象进行覆盖操作的覆盖数据。2、如权利要求1所述的方法,其特征在于,所述根据操作描述生成包含操作对象的唯一确定标识和揭:作类型标识的逻辑日志,包括对获取的操作描述进行转换,使转换后的操作描述中包含转换前的操作描述包含的操作对象的唯一确定标识和操作类型标识;或者转换后的操作描述还包含对操作对象进行覆盖操作的覆盖数据;根据转换后的梯:作描述生成所述逻辑日志。3、如权利要求1或2所述的方法,其特征在于,所述操作对象的唯一确定标识为数据库存储空间的最小存取单位的地址,或者所述操作对象的唯一确定标识为数据库存储空间的最小存取单位的标识。4、如权利要求1所述的方法,其特征在于,所述逻辑日志包括第一字段和第二字段;所述第一字段为所述操作对象的唯一确定标识,所述第二字段为所述操作类型标识;或者所述逻辑日志包括第一字段、第二字段和第三字段;所述第一字段为所述操作对象的唯一确定标识,所述第二字段为所述操作类型标识,所述第三字段为所述对覆盖操作进行覆盖操作的覆盖数据。5、一种数据库备份方法,其特征在于,包括对数据区进行新的物理备份;将上一次物理备份启动时刻之后至所述新的物理备份启动时刻之前记录的逻辑日志备份至第一目录下;将所述新的物理备份启动时刻之后的逻辑日志备份至第二目录下;其中,所述逻辑日志包含#:作对象的唯一确定标识和#:作类型标识;所述操作类型标识包含删除梯:作类型标识或覆盖操:作类型标识;或者,所述逻辑日志还包括对操作对象进行覆盖操作的覆盖数据。6、如权利要求5所述的方法,其特征在于,所述将新的物理备份启动时刻之后的逻辑日志备份至第二目录下之后,当再次接收到对数据库的数据区备份请求时,所述数据库备份方法还包括以下步骤将当前第二目录下存储的逻辑日志转存至第三目录下;在所述再次数据区物理备份过程中,将存储在緩冲区的逻辑日志实时备份至所述第二目录下;接收到数据区备份结束请求后,将所述第三目录下存储的逻辑日志转存至所述第一目录下;在接收下一次数据区备份请求前,将存储在緩冲区的逻辑日志实时备份至所述第二目录下。7、如权利要求5所述的方法,其特征在于,还包括将所述新的物理备份过程中的逻辑日志和所述新的物理备份完成之后的逻辑日志分别进行备份。8、一种数据库恢复方法,其特征在于,包括使用物理备份的数据恢复出所述物理备份启动时刻之前的数据区数据;执行所述物理备份启动时刻后备份的逻辑日志;其中,所述逻辑日志包括操作对象的唯一确定标识和操:作类型标识;所述操作类型标识包括删除操作类型标识或覆盖操作类型标识;或者,所述逻辑曰志还包括对操作对象进行覆盖操作的覆盖数据;所述该次物理备份启动时刻后备份的逻辑日志包括该次物理备份过程中的逻辑日志和该次物理备份完成之后的逻辑日志。9、如权利要求8所述的方法,其特征在于,所述执行物理备份启动时刻后备份的逻辑日志,包括根据所述逻辑日志中包含的操作对象及操作类型,对所述操作对象对应的数据进行操作。10、如权利要求9所述的方法,其特征在于,所述根据所述逻辑日志中包含的操作对象及操作类型,对所述操作对象对应的数据进行操作,具体包括当所述操作类型为删除操作类型时,删除所述操作对象对应的数据;当所述操作类型为覆盖操作类型时,用所述逻辑日志中包含的对操作对象进行覆盖操作的覆盖数据覆盖所述操作对象对应的数据。11、一种数据库备份系统,其特征在于,包括逻辑日志生成模块、物理备份模块、逻辑日志备份模块和数据区,其中逻辑日志生成模块,用于根据对数据库进行操作的l喿作请求中包含的操作描述,生成包含操作对象的唯一确定标识、并包含操作类型标识为覆盖操作类型标识或删除操作类型标识的逻辑日志;物理备份模块,用于根据物理备份触发条件对所述数据区中存储的数据进行物理备份;逻辑日志备份模块,用于对逻辑日志生成模块生成的逻辑日志进行实时备份;并将所述物理备份启动时刻之前的逻辑日志和所述物理备份启动时刻之后的逻辑日志分别进行备份;数据区,用于存储数据库数据。全文摘要本发明公开了一种逻辑日志生成方法,包括获取对数据库进行操作的操作请求中包含的操作描述;根据所述操作描述生成包含操作对象的唯一确定标识和操作类型标识的逻辑日志;其中,所述操作类型标识包含删除操作类型标识或覆盖操作类型标识。采用所述的逻辑日志生成方法,本发明还提供一种基于上述逻辑日志生成方法的数据库备份方法和数据库恢复方法,使用本发明提供的方法对数据库进行物理备份时数据库可以接收其余操作请求,且在恢复数据库时可以得到物理备份过程中数据的完全恢复。文档编号G06F11/34GK101122924SQ20071016422公开日2008年2月13日申请日期2007年9月30日优先权日2007年9月30日发明者唐金根,明方,郭育洲申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1