CN103049355B - 一种数据库系统恢复方法及设备 - Google Patents
一种数据库系统恢复方法及设备 Download PDFInfo
- Publication number
- CN103049355B CN103049355B CN201210570176.1A CN201210570176A CN103049355B CN 103049355 B CN103049355 B CN 103049355B CN 201210570176 A CN201210570176 A CN 201210570176A CN 103049355 B CN103049355 B CN 103049355B
- Authority
- CN
- China
- Prior art keywords
- daily record
- node
- database instance
- subregion
- record subregion
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明实施例公开了一种数据库系统恢复方法,包括:第一节点将所述第一节点上运行的第一数据库实例包含的数据相关日志,按照预先设定的划分规则划分为N个日志分区,并按照预先设定的标识规则为每个所述日志分区设置分区标识;第一节点获取所述第一数据实例的第一日志分区和其它各个数据库实例的第二日志分区;第一节点恢复所述获取的第一日志分区所记录的事务以及各个第二日志分区所记录的事务。相应地本发明实施例公开了一种节点设备。本发明实施例可以在数据库系统宕机或基于时间点的恢复时,提高日志恢复的效率,从而提高数据库系统的可用性。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种数据库系统恢复方法及设备。
背景技术
在数据库系统中每个数据库实例都有重做日志(Redo日志),Redo日志的作用是用于恢复数据库中已提交的事务,从而保证在数据库系统宕机时,恢复用户已提交的事务,使数据库达到与在数据库系统宕机前一致的状态。在数据库系统宕机后,系统重启时,数据库系统会恢复指定区间的所有事务;其中,上述指定区间是指从参考点到待恢复点之间的区间,上述参考点可以包括用户预先设置的检查点、备份点或者归档点,上述待恢复点可以是数据库系统发生宕机的时间点。
目前的数据库系统主要是通过数据库实例包含的Redo日志恢复上述参考点到恢复点之间的所有提交的事务。恢复过程如下:
第一数据库实例打开数据库系统中每个数据实例的Redo日志中上述指定区间的第一条日志所记录的事务;上述第一数据库实例为数据库系统中的一个数据库实例;
第一数据库实例依据日志标识符从小到大的顺序恢复所述打开的日志所记录的事务;
第一数据库实例打开数据库系统中每个数据实例的Redo日志中上述指定区间的第二条日志,再依据日志标识符从小到大的顺序恢复所述打开的日志所记录的事务;再根据上述恢复规则恢复每个数据库实例的Redo日志的事务。
上述技术中,整个恢复过程全由一个数据库实例完成,而在实际中数据库系统在上述指定区间中需要恢复的事务很多,这样由一个数据库实例来完成,恢复时间过长,且在恢复过程中数据库系统会处于不可使用的状态,这样无疑降低了数据库系统的可用性。
发明内容
本发明实施例提供了一种数据库系统恢复方法及设备,可以在数据库系统宕机或基于时间点的恢复时,提高日志恢复的效率,从而提高数据库系统的可用性。
本发明第一方面提供一种数据库系统恢复方法,包括:
第一节点将所述第一节点上运行的第一数据库实例包含的数据相关日志,按照预先设定的划分规则划分为N个日志分区,并按照预先设定的标识规则为每个所述日志分区设置分区标识,且每个日志分区能够实现独立恢复所记录的事务;其中,所述数据相关日志指用于记录数据页改动的事务的日志;N为所述数据库系统中包含的数据库实例个数,每个数据库实例运行在所述数据库系统的一个节点上,且每个所述节点设置有节点标识;
所述第一节点获取所述第一数据实例的第一日志分区和其它各个数据库实例的第二日志分区;其中,所述第一日志分区为划分的所述N个日志分区中,与所述第一节点对应的日志分区,所述其它各个数据库实例中,每个数据库实例的第二日志分区是所述每个数据库实例所在节点将所述每个数据库实例包含的数据相关日志,按照所述预先设定的划分规则划分,并按照所述预先设定的标识规则设置分区标识后得到的日志分区中,与所述第一节点对应的日志分区;其中,与所述第一节点对应的日志分区具体为预先设定的节点标识与分区标识的映射关系所指示的与所述第一节点的标识对应的分区标识所对应的日志分区,所述其它数据库实例为所述N个数据库实例中除所述第一数据库实例之外的所有数据库实例;
所述第一节点恢复所述获取的第一日志分区所记录的事务以及各个第二日志分区所记录的事务。
在第一方面的第一种可能的实现方式中,所述第一节点获取所述第一数据实例的第一日志分区和其它各个数据库实例的第二日志分区,包括:
所述第一节点接收所述其它各个数据库实例所在的各个节点发送的所述其它各个数据库实例的第二日志分区;或者所述第一节点接收所述其它各个数据库实例所在的各个节点发送的所述其它各个数据库实例的第二日志分区的路径信息,根据所述路径信息读取所述其它各个数据库实例的第二日志分区;所述路径信息为存储第二日志分区的存储地址信息;
所述第一节点根据预先设定的节点标识与分区标识的映射关系,从划分得到的所述N个日志分区中,读取与所述第一节点的标识相对应分区标识所对应的第一日志分区
结合第一方面,在第二种可能的实现方式中,所述第一节点获取所述第一数据实例中的第一日志分区和其它各个数据库实例的第二日志分区包括:
所述第一节点接收所述数据库系统的中心协调节点发送的所述其它各个数据库实例的第二日志分区的路径信息,所述路径信息为存储第二日志分区的存储地址信息;
所述第一节点根据所述路径信息从所述其它各个数据库实例所在的各个节点上,分别读取所述其它各个数据库实例的第二日志分区;
所述第一节点根据预先设定的节点标识与分区标识的映射关系,从划分得到的所述N个日志分区中,读取与所述第一节点的标识相对应分区标识所对应的第一日志分区。
结合上述任一实现方式,在第三种可能的实现方式中,所述第一节点将所述第一节点上运行的第一数据库实例包含的数据相关日志,按照预先设定的划分规则划分为N个日志分区,包括:
所述第一节点计算所述第一数据库实例包含的数据相关日志的哈希值,所述哈希值指所述数据相关日志的数据页的数据页标识的哈希值,所述数据页为所述数据相关日志所记录的事务的数据页;
所述第一节点将计算得到的哈希值,按照预先设定的划分规则划分为N个集合;
所述第一节点将哈希值为同一集合的所有数据页作为一个日志分区,以得到N个日志分区。
结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述第一节点计算第一数据库实例包含的数据相关日志的哈希值之前,所述方法还包括:
所述第一节点基于所述第一数据库实例包含的数据相关日志的数据页所在表空间的标识、所述数据页所在数据库的内部ID、所述数据页所在表的内部ID和所述数据页的页号计算得到所述数据相关日志的数据页的数据页标识,以便于根据计算得到的所述数据页标识,计算所述第一数据库实例包含的数据相关日志的哈希值。
结合第一方面或第一方面的第一种可能的实现方式或第二种可能的实现方式,在第五种可能的实现方式中,所述第一节点按照按照预先设定的标识规则为每个所述日志分区设置分区标识之后,所述方法还包括:
所述第一节点将第一数据库实例包含的其它日志分区的内容按照所述节点标识与分区标识的映射关系发送至所述其它数据库实例所在的节点,所述其它分区是指所述第一数据库实例中除第一日志分区之外的其它分区。
结合第一方面或第一方面的第一种可能的实现方式或第二种可能的实现方式或第三种可能实现的方式,在第六种可能的实现方式中,所述第一节点将所述第一节点上运行的第一数据库实例包含的数据相关日志,按照预先设定的划分规则划分为N个日志分区包括:
所述第一节点将所述第一节点上运行的第一数据库实例包含的指定区间的数据相关日志,按照预先设定的划分规则划分为N个日志分区;
其中,所述指定区间包括:
位置区间或时间区间。
结合第一方面或第一方面的第一种可能的实现方式或第二种可能的实现方式,在第七种可能的实现方式中,所述方法还包括:
所述第一节点恢复所述第一数据库实例包含的非数据日志所记录的事务,以使所述第一节点根据所述非数据日志所记录的事务,恢复的所述第一日志分区所记录的事务以及各个第二日志分区所记录的事务,恢复出完整的数据页;所述非数据日志指用于记录非数据页改动的事务的日志。
本发明第二方面提供的一种节点设备,所述节点设备为数据库系统中的一个节点,所述节点设备包括:划分单元、获取单元和第一恢复单元,其中:
所述划分单元,用于将所述节点设备上运行的第一数据库实例包含的数据相关日志,按照预先设定的划分规则划分为N个日志分区,并按照预先设定的标识规则为每个所述日志分区设置分区标识,且每个日志分区能够实现独立恢复所记录的事务;其中,N为所述节点设备所在的数据库系统包含的数据库实例的个数,每一个数据库实例运行在一个所述节点设备上,且每个节点设备设置有节点标识;
所述获取单元,用于获取所述第一数据实例的第一日志分区和其它各个数据库实例的第二日志分区;其中,所述第一日志分区为划分的所述N个日志分区中,与所述节点设备对应的日志分区,所述其它各个数据库实例中,每个数据库实例的第二日志分区是所述每个数据库实例所在节点将所述每个数据库实例包含的数据相关日志,按照所述预先设定的划分规则划分,并按照所述预先设定的标识规则设置分区标识后得到的日志分区中,与所述节点设备对应的日志分区;其中,与所述节点设备对应的日志分区具体为预先设定的节点标识与分区标识的映射关系所指示的与所述节点设备节点设备的标识对应的分区标识所对应的日志分区,所述其它数据库实例为所述N个数据库实例中除所述第一数据库实例之外的所有数据库实例;
所述第一恢复单元,用于恢复所述获取单元获取第一日志分区所记录的事务以及各个第二日志分区所记录的事务。
在第二方面的第一种可能的实现方式中,所述获取单元具体用于接收所述其它各个数据库实例所在的各个节点发送的所述其它各个数据库实例的第二日志分区;所述第一节点读取所述第一数据库实例的第一日志分区的数据相关日志;或者接收所述其它各个数据库实例所在的各个节点发送的所述其它各个数据库实例的第二日志分区的路径信息,根据所述路径信息读取所述其它各个数据库实例的第二日志分区;所述路径信息为存储第二日志分区的存储地址信息;
根据预先设定的节点标识与分区标识的映射关系,从划分得到的所述N个日志分区中,读取与所述节点设备的标识相对应分区标识所对应的第一日志分区。
结合第二方面,在第二种可能的实现方式中,所述获取单元包括:
接收单元,用于接收所述数据库系统的中心协调节点发送的所述其它各个数据库实例的第二日志分区的路径信息,所述路径信息为存储第二日志分区的存储地址信息;
第一读取单元,用于根据所述路径信息从所述其它各个数据库实例所在的各个节点上,分别读取所述其它各个数据库实例的第二日志分区;
第二读取单元,用于根据预先设定的节点标识与分区标识的映射关系,从划分得到的所述N个日志分区中,读取与所述节点设备的标识相对应分区标识所对应的第一日志分区。
结合第二方面的上述任一实现方式,在第三种可能的实现方式中,所述划分单元包括:
第一计算单元,用于计算所述第一数据库实例包含的数据相关日志的哈希值,所述哈希值指所述数据相关日志的数据页的数据页标识的哈希值,所述数据页为所述数据相关日志所记录的事务的数据页;
划分子单元,用于将计算得到的哈希值,按照预先设定的划分规则划分为N个集合;
分区单元,用于将哈希值为同一集合的所有数据页作为一个日志分区,以得到N个日志分区。
结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述设备还包括:
第二计算单元,用于基于所述第一数据库实例包含的数据相关日志的数据页所在表空间的标识、所述数据页所在数据库的内部ID、所述数据页所在表的内部ID和所述数据页的页号计算得到所述数据相关日志的数据页的数据页标识,以便于所述第一计算单元根据计算得到的所述数据页标识,计算所述第一数据库实例包含的数据相关日志的哈希值。
结合第二方面或第二方面的第一种可能的实现方式或第二种可能的实现方式,第五种可能的实现方式中,所述设备还包括:
发送单元,用于将第一数据库实例包含的其它日志分区的内容按照所述节点标识与分区标识的映射关系发送至所述其它数据库实例所在的节点,所述其它分区是指所述第一数据库实例中除第一日志分区之外的其它分区。
结合第二方面或第二方面的第一种可能的实现方式或第二种可能的实现方式,第六种可能的实现方式中,所述划分单元具体用于将所述节点设备上运行的第一数据库实例包含的指定区间的数据相关日志,按照预先设定的划分规则划分为N个日志分区;
其中,所述指定区间包括:
位置区间或时间区间。
结合第二方面或第二方面的第一种可能的实现方式或第二种可能的实现方式,第七种可能的实现方式中,所述设备还包括:
第二恢复单元,用于恢复所述第一数据库实例包含的非数据日志所记录的事务,以使所述第一节点根据所述非数据日志所记录的事务,恢复的所述第一日志分区所记录的事务以及各个第二日志分区所记录的事务,恢复出完整的数据页;所述非数据日志指用于记录非数据页改动的事务的日志。
本发明第三方面提供的一数据库系统,中心协调节点和多个处理节点,所述多个处理节点上运行有N个数据库实例,每一个数据库实例运行在一个处理节点上,每个所述处理节点均设置有节点标识,其中:
所述处理节点,用于将所述自身运行的数据库实例包含的数据相关日志,按照预先设定的划分规则划分为N个日志分区,并按照预先设定的标识规则为每个所述日志分区设置分区标识,且每个日志分区能够实现独立恢复所记录的事务;其中,所述数据相关日志指用于记录数据页改动的事务的日志;根据预先设定的节点标识与分区标识的映射关系,从划分得到的所述N个日志分区中,读取与所述处理节点的标识相对应分区标识所对应的第一日志分区,并将所述N个日志分区中除所述第一日志分区之外的其它日志分区发送给所述中心协调节点。
所述中心协调节点,用于接收各个处理节点发送的日志分区,并根据预先设定的节点标识与分区标识的映射关系,将接收到的每个日志分区发送给与该日志分区的分区标识对应的节点标识所对应的处理节点;
所述处理节点还用于,恢复读取的所述第一日志分区所记录的事务,以及接收到的所述中心协调节点发送的各个日志分区所记录的事务。
上述技术方案中,第一节点将所述第一节点上运行的第一数据库实例包含的数据相关日志划分为N个分区,且为每个分区设置有分区号;第一节点获取所述第一数据实例的第一日志分区和其它各个数据库实例的第二日志分区;其中,所述第一日志分区为划分的所述N个日志分区中,与所述第一节点对应的日志分区,所述其它各个数据库实例中,每个数据库实例的第二日志分区是所述每个数据库实例所在节点将所述每个数据库实例包含的数据相关日志,按照所述预先设定的划分规则划分,并按照所述预先设定的标识规则设置分区标识后得到的日志分区中,与所述第一节点对应的日志分区;第一节点恢复所述获取的第一日志分区所记录的事务以及各个第二日志分区所记录的事务。这样可以实现由数据库系统中每个数据库实例所在的节点恢复与该节点对应的日志分区的日志所记录的事务,相比现有技术由一个数据库实例所在的设备恢复整个数据库系统中日志所记录的事务,本发明可以在数据库系统宕机或基于时间点的恢复时,提高日志恢复的效率,从而提高数据库系统的可用性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种数据库系统恢复方法的流程示意图;
图2是本发明实施例提供的另一种数据库系统恢复方法的流程示意图;
图3是本发明实施例提供的另一种数据库系统恢复方法的流程示意图;
图4是本发明实施例提供的一种节点设备的结构示意图;
图5是本发明实施例提供的另一种节点设备的结构示意图;
图6是本发明实施例提供的另一种节点设备的结构示意图;
图7是本发明实施例提供的另一种节点设备的结构示意图;
图8是本发明实施例提供的另一种节点设备的结构示意图;
图9是本发明实施例提供的另一种节点设备的结构示意图;
图10是本发明实施例提供的另一种节点设备的结构示意图;
图11是本发明实施例提供的一种数据库系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明技术方案的典型应用场景为集群数据库系统,尤其是面向OLTP(On-Line Transaction Processing,联机事务处理)应用等需要产生大量REDO日志的共享磁盘集群数据库系统,在集群数据库系统中,多个数据库实例(instance)运行在不同的服务器(或节点)上,所有节点访问共享磁盘的一个数据库,数据库instance之间通过高速互联网络设备交换信息。
图1是本发明实施例提供的一种数据库系统恢复方法的流程示意图,本发明实施例描述的数据库系统包含N个数据库实例,每一个数据库实例运行在一个节点上,即上述数据库系统中不同的节点上运行有不同的数据库实例,且每个节点设置有节点标识,N为大于0的整数,如图1所示,该方法包括:
101、第一节点将所述第一节点上运行的第一数据库实例包含的数据相关日志,按照预先设定的划分规则划分为N个日志分区,并按照预先设定的标识规则为每个所述日志分区设置分区标识,且每个日志分区能够实现独立恢复所记录的事务;
其中,所述数据相关日志指用于记录数据页改动的事务的日志;N为所述数据库系统中包含的数据库实例个数,每个数据库实例运行在所述数据库系统的一个节点上,且每个所述节点设置有节点标识。
需要说明的是,每个日志分区能够实现独立恢复所记录的事务是指,在后继恢复过程中,节点可以使用一个日志分区的日志恢复该日志分区的日志所记录的事务,且在恢复过程中不会影响其它日志分区。还可以是每个日志分区的日志所记录的事务都可以独立重做。
可选的,在本发明实施例描述的数据库系统包含N个数据库实例,这样该系统中包含N个节点,其中上述第一节点可以是这N个节点中的任一个,即该系统中每个节点都会将该节点内的数据库实例的数据相关日志,按照上述划分规则划分为N个日志分区,并按照上述方式为每个日志分区设置有分区标识。这样该系统包含N个数据库实例都被划分为N个日志分区,且每个数据库实例都是按照统一划分规则划分的,以及按照统一方式设置每个日志分区的分区标识。这样就可以将该系统的N个数据库实例的数据相关日志,看作N个集合,每个集合包含分区标识相同的N个日志分区。
可选的,在本发明实施例中对数据库实例的数据相关日志的划分,可以是将存储数据相关日志的存储地址进行划分,即第一节点将用于存储第一数据库实例的指定区间内数据相关日志的存储地址划分为N个分区。
可选的,上述数据相关日志为用于记录数据页改动的事务的日志,可以是指用于记录对数据页的内容进行改动的事务的日志,即数据相关日志所记录的事务都是对数据页的内容进行改动的事务。
102、第一节点获取所述第一数据实例的第一日志分区和其它各个数据库实例的第二日志分区;
其中,所述第一日志分区为划分的所述N个日志分区中,与所述第一节点对应的日志分区,所述其它各个数据库实例中,每个数据库实例的第二日志分区是所述每个数据库实例所在节点将所述每个数据库实例包含的数据相关日志,按照所述预先设定的划分规则划分,并按照所述预先设定的标识规则设置分区标识后得到的日志分区中,与所述第一节点对应的日志分区;其中,与所述第一节点对应的日志分区具体为预先设定的节点标识与分区标识的映射关系所指示的与所述第一节点的标识对应的分区标识所对应的日志分区,所述其它数据库实例为所述N个数据库实例中除所述第一数据库实例之外的所有数据库实例;
可选的,在本发明实施例中,节点标识和分区标识可以系统自动配置的,也可以用户设置的,系统中包含N个数据库实例,即可以包含N个节点,那么就可以设置这N个节点的节点标识为ABCD...N,或者1234...N,同样,上述分区的标识也可以是系统自动设置的,或者用户设置的,设置上述一个数据库实例包含的N个日志分区的分区标识为ABCD...N,或者1234...N,其它N-1数据库实例N个日志分区的分区标识也相应设置为ABCD...N,或者1234...N。这样上述映射关系是可以可以A与A对应,B与B对应等,或者,1与1对应,2与2对应等。例如,第一节点的节点标识为1,这样步骤102可以是获取第一日志分区和第二日志分区的分区标识就可以为1。当然在本发明实施例中节点标识和分区标识包含但不限于上述列出的标识,以及映射关系包含不限于上述列出的映射关系,只要系统中每个节点的节点标识唯一不重复,且每个数据库实例的所有日志分区的分区标识也不重复,而且只要预先设置的所述映射关系,能够保证系统中的所有节点的节点标识与每个数据库实例中的所有分区标识一一映射或一一对应即可实现本发明的目的。
103、第一节点恢复所述获取的第一日志分区所记录的事务以及各个第二日志分区所记录的事务。
可选的,上述获取为数据相关日志,这样步骤103恢复的事务就是数据页改动的事务。
作为一种可选的实施方式,实现本发明的设备,即PN可以是任一数据库系统中的节点设备,例如,计算机、网络中节点设备,如基站、控制器设备等。
上述技术方案中,第一节点将所述第一节点上运行的第一数据库实例包含的数据相关日志划分为N个分区,且为每个分区设置有分区号;第一节点获取所述第一数据实例的第一日志分区和其它各个数据库实例的第二日志分区;其中,所述第一日志分区为划分的所述N个日志分区中,与所述第一节点对应的日志分区,所述其它各个数据库实例中,每个数据库实例的第二日志分区是所述每个数据库实例所在节点将所述每个数据库实例包含的数据相关日志,按照所述预先设定的划分规则划分,并按照所述预先设定的标识规则设置分区标识后得到的日志分区中,与所述第一节点对应的日志分区;第一节点恢复所述获取的第一日志分区所记录的事务以及各个第二日志分区所记录的事务。这样可以实现由数据库系统中每个数据库实例所在的节点恢复与该节点对应的日志分区的日志所记录的事务,相比现有技术由一个数据库实例所在的设备恢复整个数据库系统中日志所记录的事务,本发明可以在数据库系统宕机或基于时间点的恢复时,提高日志恢复的效率,从而提高数据库系统的可用性。
图2是本发明实施例提供的一种数据库系统恢复方法的流程示意图,本发明实施例描述的数据库系统包含N个数据库实例,每一个数据库实例运行在一个节点上,即上述数据库系统中不同的节点上运行有不同的数据库实例,且每个节点设置有节点标识,N为大于0的整数,如图2所示,该方法包括:
201、第一节点将所述第一节点上运行的第一数据库实例包含的数据相关日志,按照预先设定的划分规则划分为N个日志分区,并按照预先设定的标识规则为每个所述日志分区设置分区标识,且每个日志分区能够实现独立恢复所记录的事务;
其中,所述数据相关日志指用于记录数据页改动的事务的日志;N为所述数据库系统中包含的数据库实例个数,每个数据库实例运行在所述数据库系统的一个节点上,且每个所述节点设置有节点标识。
作为一种可选的实施方式,步骤201中的第一节点将第一数据库实例包含的的数据相关日志,按照预先设定的划分规则划分为N个分区可以包括:
第一节点计算第一数据库实例包含的数据相关日志的哈希值,所述哈希值指所述数据相关日志的数据页的数据页标识的哈希值,所述数据页为所述数据相关日志所记录的事务的数据页;
第一节点将计算得到的哈希值,按照预先设定的划分规则划分为N个集合;
第一节点将哈希值为同一集合的所有数据页作为一个日志分区,以得到N个日志分区。
可选的,该实施方式中,上述计算哈值可以是计算第一数据库实例包括的指定区间内的每个数据相关日志的哈希值,即计算每个数据相关日志的数据页的数据页标识的哈希值,当上述指定区间内包含100个数据相关日志时,就可以计算出这100个数据相关日志的数据页的数据页标识的哈希值,即计算出100个哈希值,当然这100个哈希值中可以有一些是相同或相似的。例如有2个数据相关日志所记录的事务都是对同一个数据页进行改动时,那么这2个数据相关日记记录的哈希值就可以是相同的。
可选的,该实施方式中,上述预先设定的划分规则可以是将哈希值相近的哈希值划分为一个集合,或者将哈希值中某一特征相似的哈希划分为一个集合;例如,计算得100个哈希值,就可以在这100个哈希值划分为10区间,每个区间对应不同的哈希值,将在同个区间的哈希值作为一个集合,这样就得到10个集合,当然每个集合包含的哈希值的数量可能是不同的;又如,计算得100个哈希值,就可以是将哈希值的每个数值或最后一个数值相同或相似的哈希值作为一个集合。
可选的,上述将哈希值为同一集合的所有数据页作为一个分区,即将哈希值为不同集合的数据相关日志作为不同的日志分区。而每个集合中的哈希值是基于数据页的数据页标识计算得到,这样就可以保证每个日志分区的数据相关日志所记录的事务的数据页都是相似或相同,或者是某个数据页区间的。
可选的,该实施方式中,其它数据库实例所在的节点,也可以按照上述计算哈希值的方式将这其它数据库实例的数据相关日志划分为N个分区,且都按照上述标识规则为每个日志分区设置分区标识。这样上述N个数据库实例包含的分区标识相同的日志分区的日志的哈希值在同一个集合内,而日志的哈希值都是数据相关日志的数据页的数据页标识的哈希值,从而可以保证上述N个数据库实例包含的分区标识相同的日志分区的日志所记录的事务的数据页都是相似或相同,或者在同一数据页区间区间内。在后续恢复过程中,每个节点获取到上述N个数据库实例包含的与该节点对应的日志分区的日志,即每个节点获取的日志分区的日志所记录的事务的数据页都是相似或相同,或者在同一数据页区间区间内。例如,第一节点的节点标识为1,第一节点就获取到上述N个数据库实例包含的分区标识为1的日志分区的日志,而所有分区标识为1的日志分区的日志所记录的事务的数据页都是相似或相同,或者在同一数据页区间内,即第一节点获取上述N个数据库实例包含的所有的记录的事务的数据页与第一数据库实例的分区标识为1分区内所记录的事务的数据页相似或相同,或者在同一区间内的日志,并恢复获取的日志所记录的事务。这样就可以保证数据库系统中的N个节点获取的日志分区中日志所记录的事务的数据页都是不同的,从而可以避免多个节点恢复过程对同一数据页进行变动。
可选的,该实施方式中,第一节点计算第一数据库实例包含的数据相关日志的哈希值之前,所述方法还可以包括:
第一节点基于所述第一数据库实例包含的数据相关日志的数据页所在表空间(TableSpace)的标识、所述数据页所在数据库的内部ID、所述数据页所在表的内部ID和所述数据页的页号计算得到所述数据相关日志的数据页的数据页标识,以便于根据计算得到的所述数据页标识,计算所述第一数据库实例包含的数据相关日志的哈希值。
这里计算可以是指分别计算所述第一数据库实例包含的每个数据页的数据页标识如,上述TableSpace的标识为TableSpace,数据库的内部ID为Databace,上述表的内部ID为Relation,上述页号为BlockNo,上述哈希值可以是对TableSpace×1000+Databace×100+Relation×10+BlockNo进行哈希运算得到的哈希值。
202、第一节点获取所述第一数据实例的第一日志分区和其它各个数据库实例的第二日志分区;
其中,所述第一日志分区为划分的所述N个日志分区中,与所述第一节点对应的日志分区,所述其它各个数据库实例中,每个数据库实例的第二日志分区是所述每个数据库实例所在节点将所述每个数据库实例包含的数据相关日志,按照所述预先设定的划分规则划分,并按照所述预先设定的标识规则设置分区标识后得到的日志分区中,与所述第一节点对应的日志分区;其中,与所述第一节点对应的日志分区具体为预先设定的节点标识与分区标识的映射关系所指示的与所述第一节点的标识对应的分区标识所对应的日志分区,所述其它数据库实例为所述N个数据库实例中除所述第一数据库实例之外的所有数据库实例。
作为一种可选的实施方式,步骤202可以包括:
第一节点接收所述其它各个数据库实例所在的各个节点发送的所述其它各个数据库实例的第二日志分区;
第一节点根据预先设定的节点标识与分区标识的映射关系,从划分得到的所述N个日志分区中,读取与所述第一节点的标识相对应分区标识所对应的第一日志分区;
可选的,在该实施方式中,上述其它各个数据库实例所在节点预先可以获取到节点标识与分区标识的映射关系,例如,该映射关系可以是上述其它各个数据库实例所在各个节点和第一节点预先协商好的。当上述其它各个数据库实例所在各个节点将上述其它数据库实例包含的数据相关日志划分为N个日志分区,以及设置每个日志分区的分区标识后,就可以根据上述映射关系将划分后的日志分区的日志发送至对应的节点,如将第二日志分区发送至第一节点。
作为一种可选的实施方式,步骤202还可以包括:
第一节点接收所述其它各个数据库实例所在的各个节点发送的所述其它各个数据库实例的第二日志分区的路径信息,根据所述路径信息读取所述其它各个数据库实例的第二日志分区;所述路径信息为存储第二日志分区的存储地址信息;
第一节点根据预先设定的节点标识与分区标识的映射关系,从划分得到的所述N个日志分区中,读取与所述第一节点的标识相对应分区标识所对应的第一日志分区。
可选的,该实施方式中,上述其它数据库实例所在节点发送的是第二日志分区的数据相关日志的路径信息,第一节点再根据这些路径信息读取相应的日志。
203、第一节点恢复所述获取的第一日志分区所记录的事务以及各个第二日志分区所记录的事务。
可选的,上述获取为数据相关日志,这样步骤203恢复的事务就是数据页改动的事务。
作为一种可选的实施方式,所述方法可以包括:
204、第一节点恢复所述第一数据库实例包含的非数据日志所记录的事务,以使所述第一节点根据所述非数据日志所记录的事务,恢复的所述第一日志分区所记录的事务以及各个第二日志分区所记录的事务,恢复出完整的数据页;所述非数据日志指用于记录非数据页改动的事务的日志。
可选的,步骤203中第一节点恢复所述获取的第一日志分区所记录的事务以及各个第二日志分区所记录的事务,加上步骤204第一节点恢复所述第一数据库实例包含的非数据日志所记录的事务,从而第一节点就可以恢复出数据库系统的完整的数据页。
作为一种可选的实施方式,步骤204还可以包括:
当所述其它个数据库实例所在节点未恢复所述其它数据库实例中包括的所述指定区间内的非数据日志所记录的事务时,第一节点恢复所述第一数据库实例包含的非数据日志所记录的事务,以使所述第一节点根据所述非数据日志所记录的事务,恢复的所述第一日志分区所记录的事务以及各个第二日志分区所记录的事务,恢复出完整的数据页;所述非数据日志指用于记录非数据页改动的事务的日志。
可选的,在本发明实施例描述的数据库系统中每个数据库实例包含的非数据日志可以是相同的,这样在整个数据库系统中只需要一个节点恢复非数据日志所记录的事务就行。当然在某一节点恢复非数据日志所记录的事务时,该节点还可以向其它节点发送用于指示非数据日记记录所记录的事务已恢复的消息。例如,在本实施例中,步骤204之后,第一节点向其它其它数据库实例所在的节点发送用于指示非数据日记记录所记录的事务已恢复的消息。这样其它节点接收到该消息后就会进行对非数据日志进行恢复。
作为一种可选的实施方式,该方法还可以包括:
205、第一节点将第一数据库实例包含的其它日志分区的内容按照所述映射关系发送至所述其它各个数据库实例所在的各个节点,所述其它分区是指所述第一数据库实例中从划分得到的所述N个日志分区中除第一日志分区之外的其它分区。
而第一节点为数据库系统中任一节点,也就是说该数据库系统中每个节点都会执行步骤205,这样就可以使每个节点获取上述映射关系指示的与该节点对应的日志分区。
可选的,在该实施方式中,步骤205还可以包括:
第一节点将第一数据库实例包含的其它分区的日记记录按照所述映射关系发送至上述其它各个数据库实例所在的各个节点;或者
第一节点将第一数据库实例包含的其它分区的日记记录的路径信息按照所述映射关系发送至上述其它各个数据库实例所在的各个节点。这样各个节点就可以根据发送单元55发送的路径信息,从上述节点设备中读取第一数据库实例中与各个节点对应的日志分区。
这样数据库系统中每个数据库实例所在的节点都可以获取与该节点对应的分区的日志。每个数据库实例所在的节点再执行如步骤203所示恢复事务。这样整个数据库系统内的日志所记录的事务都被恢复。
作为一种可选的实施方式,本发明实施例中第一节点可以通过互联网与上述其它数据库实例所在节点进行信息数据的交换。
需要说明的是,步骤203、步骤204和步骤205都不存在时间先后顺序。
作为一种可选的实施方式,本发明实施例中在对数据相关日志进行划分区时都可以是以整条数据相关日志为单位进行划分的,即在划分过程中不会将一整条数据相关日志拆分开,即每个分区包含的都是整数条数据相关日志,即每个日志分区能够实现独立恢复所记录的事务。
作为一种可选的实施方式,步骤201中第一节点将所述第一节点上运行的第一数据库实例包含的数据相关日志,按照预先设定的划分规则划分为N个日志分区,可以包括:
第一节点将所述第一节点上运行的第一数据库实例包含的指定区间的数据相关日志,按照预先设定的划分规则划分为N个日志分区;
其中,上述指定区间可以包括:
位置区间和时间区间;
可选的,该实施方式中,位置区间可以是预先设置的检查点位置与数据库系统发生宕机时数据库实例生成最新的日志的位置之间的位置区间,该位置可以存储日志的存储位置;上述检查点位置可以用户预先设置的,或者第一节点自动设置的。该实施方式中,不同节点的位置区间可以是不同的,但生成这位置区间的规则是相同的。
可选的,该实施方式中,时间区间可以是归档时间点或备份时间点与数据库系统发生宕机的时间点之间的时间区间,这样本发明就只需要对该时间区间的日志进行恢复就行。该实施方式中,不同节点的时间区间可以是不同的。
作为一种可选的实施方式,本发明实施例中的数据相关日记和非数据日志都可以是Redo日志。本发明实施例中恢复日记所记录的事务可以是重做日志所记录的事务。
上述技术方案中,在上面实施例的基础对分区进行了详细说明,以实现更多实施方式可以提供数据库系统的可用性。
图3是本发明实施例提供的另一种数据库系统恢复方法的流程示意图,本发明实施例描述的数据库系统包含N个数据库实例,每一个数据库实例运行在一个节点上,即上述数据库系统中不同的节点上运行有不同的数据库实例,且每个节点设置有节点标识,该数据库系统还包括中心协调节点,该中心协调节点与上述包含数据库实例的节点连接,N为大于0的整数,如图3所示,该方法包括:
301、第一节点将所述第一节点上运行的第一数据库实例包含的数据相关日志,按照预先设定的划分规则划分为N个日志分区,并按照预先设定的标识规则为每个所述日志分区设置分区标识,且每个日志分区能够实现独立恢复所记录的事务;
其中,所述数据相关日志指用于记录数据页改动的事务的日志;N为所述数据库系统中包含的数据库实例个数,每个数据库实例运行在所述数据库系统的一个节点上,且每个所述节点设置有节点标识。
作为一种可选的实施方式中,上述划分规则和上述标识规则都可以中心协调节点设置的,并发送给每个数据库实例所在的节点。上述划分规则和上述标识规则还可以是各个数据库实例所在的节点之间预先协商的。
302、第一节点接收所述数据库系统的中心协调节点发送的所述其它各个数据库实例的第二日志分区的路径信息,所述路径信息为存储第二日志分区的存储地址信息。
其中,所述其它各个数据库实例中,每个数据库实例的第二日志分区是所述每个数据库实例所在节点将所述每个数据库实例包含的数据相关日志,按照所述预先设定的划分规则划分,并按照所述预先设定的标识规则设置分区标识后得到的日志分区中,与所述第一节点对应的日志分区。
作为一种可选的实施方式,中心协调节点预先获取上述划分规则,以及上述分区规则,且还会预先获取每个数据库实例中每个日志分区的路径信息,可以是每个数据库实例所在的节点预先将数据库实例的路径信息发送至中心协调节点,这样中心协调节点就可以通过上述划分规则得知每个日志分区的路径信息;还可以在各节点在划分完分区后,将每个日志分区的路径信息发送至中心协调节点。
303、第一节点根据所述路径信息从所述其它各个数据库实例所在的各个节点上,分别读取所述其它各个数据库实例的第二日志分区。
304、第一节点根据预先设定的节点标识与分区标识的映射关系,从划分得到的所述N个日志分区中,读取与所述第一节点的标识相对应分区标识所对应的第一日志分区。
可选的,在步骤304之后,第一节点获取到上述N个数据库实例的与第一节点对应的日志分区的数据相关日志后,第一节点还可以向中心调协节点发送获取完成的消息。在第一节点获取到上述N个数据库实例包含的所有与第一节点对应的日志分区的数据相关日志时,上述其它各个数据库实例所在的各个节点也可以获取上述N个数据库实例包含上述映射关系所指示的对应的数据相关日志。在中心协调得知所有节点都获取完后,还可以是给每个节点发送用于指示恢复获取的日志所记录的事务的指示消息。各节点接收到该指示消息后开始恢复获取的日志所记录的事务。
305、第一节点恢复所述获取的第一日志分区所记录的事务以及各个第二日志分区所记录的事务。
作为一种可选的实施方法,所述方法还可以包括:
306、第一节点恢复所述第一数据库实例包含的非数据日志所记录的事务,以使所述第一节点根据所述非数据日志所记录的事务,恢复的所述第一日志分区所记录的事务以及各个第二日志分区所记录的事务,恢复出完整的数据页;所述非数据日志指用于记录非数据页改动的事务的日志。
可选的,在步骤306之后,该方法还可以包括:
第一节点向中心协调节点发送用于指示恢复完毕的消息。
这样中心协调节点接收到该消息,以及接收到上述其它数据库实例所在的节点发送的该消息时,就确认整个数据库系统恢复完毕,数据库系统进入可用状态。
需要说明的是,在该数据库系统中,即包含的中心协调节点的数据库系统同样可以使用第一和第二个实施例来实现日志所记录的事务进行恢复。
作为一种可选的实施方式,步骤301中第一节点将所述第一节点上运行的第一数据库实例包含的数据相关日志,按照预先设定的划分规则划分为N个日志分区,可以包括:
第一节点将所述第一节点上运行的第一数据库实例包含的指定区间的数据相关日志,按照预先设定的划分规则划分为N个日志分区;
其中,所述指定区间可以包括:
位置区间或时间区间。
可选的,该实施方式,在步骤301之前,该方法还包括:
第一节点接收中心协调节点发送的指定区间的信息。
可选的,该指定区间可以是位置区间和时间区间。这样步骤301就将该区间内的数据相关日志划分为N个区域,以及执行后续步骤。
上述技术方案中,在上面实施例的基础上,对包含中心协调节点的数据库系统进行日志所记录的事务进行恢复。同样,可以在数据库系统宕机或基于时间点的恢复时,提高日志恢复的效率,从而提高数据库系统的可用性。
下面为本发明装置实施例,本发明装置实施例用于执行本发明方法实施例一至三实现的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例一、实施例二和实施三。
图4是本发明实施例提供的一种节点设备的结构示意图,该节点设备为数据库系统中的一个节点,该系统包含N个数据库实例,每一个数据库实例运行在一个节点上,且该系统中每个节点设置有节点标识,N为大于0的整数,如图4所示,该节点设备包括:划分单元41、获取单元42和第一恢复单元43,其中:
划分单元41,用于将所述节点设备上运行的第一数据库实例包含的数据相关日志,按照预先设定的划分规则划分为N个日志分区,并按照预先设定的标识规则为每个所述日志分区设置分区标识,且每个日志分区能够实现独立恢复所记录的事务;
其中,所述数据相关日志指用于记录数据页改动的事务的日志;N为所述数据库系统中包含的数据库实例个数,每个数据库实例运行在所述数据库系统的一个节点上,且每个所述节点设置有节点标识。
其中,N为所述节点设备所在的数据库系统包含的数据库实例的个数,每一个数据库实例运行在一个所述节点设备上,且每个节点设备设置有节点标识。
需要说明的是,每个日志分区能够实现独立恢复所记录的事务是指,在后继恢复过程中,节点可以使用一个日志分区的日志恢复该日志分区的日志所记录的事务,且在恢复过程中不会影响其它日志分区。还可以是每个日志分区的日志所记录的事务都可以独立重做。
可选的,在本发明实施例描述的数据库系统包含N个数据库实例,这样该系统中包含N个节点,其中上述第一节点可以是这N个节点中的任一个,即该系统中每个节点都会将该节点内的数据库实例的数据相关日志,按照上述划分规则划分为N个日志分区,并按照上述方式为每个日志分区设置有分区标识。这样该系统包含N个数据库实例都被划分为N个日志分区,且每个数据库实例都是按照统一划分规则划分的,以及按照统一方式设置每个日志分区的分区标识。这样就可以将该系统的N个数据库实例的数据相关日志,看作N个集合,每个集合包含分区标识相同的N个日志分区。
可选的,在本发明实施例中对数据库实例的数据相关日志的划分,可以是将存储数据相关日志的存储地址进行划分,即节点将用于存储第一数据库实例的指定区间内数据相关日志的存储地址划分为N个分区。
可选的,上述数据相关日志为用于记录数据页改动的事务的日志,可以是指用于记录对数据页的内容进行改动的事务的日志录,即数据相关日志所记录的事务都是对数据页的内容进行改动的事务。
获取单元42,用于获取所述第一数据实例的第一日志分区和其它各个数据库实例的第二日志分区;
其中,所述第一日志分区为划分的所述N个日志分区中,与所述节点设备对应的日志分区,所述其它各个数据库实例中,每个数据库实例的第二日志分区是所述每个数据库实例所在节点将所述每个数据库实例包含的数据相关日志,按照所述预先设定的划分规则划分,并按照所述预先设定的标识规则设置分区标识后得到的日志分区中,与所述节点设备对应的日志分区;其中,与所述节点设备对应的日志分区具体为预先设定的节点标识与分区标识的映射关系所指示的与所述节点设备的标识对应的分区标识所对应的日志分区,所述其它数据库实例为所述N个数据库实例中除所述第一数据库实例之外的所有数据库实例。
第一恢复单元43,用于恢复获取单元42获取的第一日志分区所记录的事务以及各个第二日志分区所记录的事务;
可选的,上述获取为数据相关日志,这样第一恢复单元43恢复的事务就是数据页改动的事务。
作为一种可选的实施方式,上述节点设备可以是任一数据库系统中的节点设备,例如,计算机、网络中节点设备,如基站、控制器设备等。
上述技术方案中,节点设备将所述第一节点上运行的第一数据库实例包含的数据相关日志划分为N个分区,且为每个分区设置有分区号;节点设备获取所述第一数据实例的第一日志分区和其它各个数据库实例的第二日志分区;其中,所述第一日志分区为划分的所述N个日志分区中,与所述节点设备对应的日志分区,所述其它各个数据库实例中,每个数据库实例的第二日志分区是所述每个数据库实例所在节点将所述每个数据库实例包含的数据相关日志,按照所述预先设定的划分规则划分,并按照所述预先设定的标识规则设置分区标识后得到的日志分区中,与所述节点设备对应的日志分区;节点设备恢复所述获取的第一日志分区所记录的事务以及各个第二日志分区所记录的事务。这样可以实现由数据库系统中每个数据库实例所在的节点恢复与该节点对应的日志分区的日志所记录的事务,相比现有技术由一个数据库实例所在的设备恢复整个数据库系统中日志所记录的事务,本发明可以在数据库系统宕机或基于时间点的恢复时,提高日志恢复的效率,从而提高数据库系统的可用性。
图5是本发明实施例提供的另一种节点设备的结构示意图,该节点设备为数据库系统中的一个节点,该系统包含N个数据库实例,每一个数据库实例运行在一个节点上,且该系统中每个节点设置有节点标识,N为大于0的整数,如图5所示,该节点设备包括:划分单元51、获取单元52和第一恢复单元53,其中:
划分单元51,用于将所述节点设备上运行的第一数据库实例包含的数据相关日志,按照预先设定的划分规则划分为N个日志分区,并按照预先设定的标识规则为每个所述日志分区设置分区标识,且每个日志分区能够实现独立恢复所记录的事务;
其中,所述数据相关日志指用于记录数据页改动的事务的日志;N为所述数据库系统中包含的数据库实例个数,每个数据库实例运行在所述数据库系统的一个节点上,且每个所述节点设置有节点标识。
作为一种可选的实施方式,如图6所示,划分单元51可以包括:
第一计算单元511,用于计算第一数据库实例包含的数据相关日志的哈希值,所述哈希值指所述数据相关日志的数据页的数据页标识的哈希值,所述数据页为所述数据相关日志所记录的事务的数据页;
划分子单元512,用于将计算得到的哈希值,按照预先设定的划分规则划分为N个集合;
分区单元513,用于将哈希值为同一集合的所有数据页作为一个日志分区,以得到N个日志分区。
可选的,上述将哈希值为同一集合的所有数据页作为一个分区,即将哈希值为不同集合的数据相关日志作为不同的日志分区。而每个集合中的哈希值是基于数据页的数据页标识计算得到,这样就可以保证每个日志分区的数据相关日志所记录的事务的数据页都是相似或相同,或者是某个数据页区间的。
可选的,该实施方式中,所述设备还可以包括:
第二计算单元(附图中未画出),用于基于所述第一数据库实例包含的数据相关日志的数据页所在表空间(TableSpace)的标识、所述数据页所在数据库的内部ID、所述数据页所在表的内部ID和所述数据页的页号计算得到所述数据相关日志的数据页的数据页标识,以便于根据计算得到的所述数据页标识,计算所述第一数据库实例包含的数据相关日志的哈希值。
可选的,这里计算可以是指分别计算所述第一数据库实例包含的每个数据页的数据页标识。例如,上述TableSpace的标识为TableSpace,数据库的内部ID为Databace,上述表的内部ID为Relation,上述页号为BlockNo,上述哈希值可以是对TableSpace×1000+Databace×100+Relation×10+BlockNo进行哈希运算得到的哈希值。
获取单元52,用于获取所述第一数据实例的第一日志分区和其它各个数据库实例的第二日志分区;
其中,所述第一日志分区为划分的所述N个日志分区中,与所述节点设备对应的日志分区,所述其它各个数据库实例中,每个数据库实例的第二日志分区是所述每个数据库实例所在节点将所述每个数据库实例包含的数据相关日志,按照所述预先设定的划分规则划分,并按照所述预先设定的标识规则设置分区标识后得到的日志分区中,与所述节点设备对应的日志分区;其中,与所述节点设备对应的日志分区具体为预先设定的节点标识与分区标识的映射关系所指示的与所述节点设备的标识对应的分区标识所对应的日志分区,所述其它数据库实例为所述N个数据库实例中除所述第一数据库实例之外的所有数据库实例。
需要说明的是,上述节点设备就是本发明实施例提供数据库系统中的节点设备。
作为一种可选的实施方式,获取单元52具体用于接收所述其它各个数据库实例所在的各个节点发送的所述其它各个数据库实例的第二日志分区;以及根据预先设定的节点标识与分区标识的映射关系,从划分得到的所述N个日志分区中,读取与所述第一节点的标识相对应分区标识所对应的第一日志分区。
可选的,在该实施方式中,上述其它各个数据库实例所在节点预先可以获取到节点标识与分区标识的映射关系,例如,该映射关系可以是上述其它各个数据库实例所在节点和上述各个节点设备预先协商好的。当上述其它各个数据库实例所在节点将上述其它数据库实例包含的数据相关日志划分为N个日志分区,以及设置每个日志分区的分区标识后,就可以根据上述映射关系将划分后的日志分区的日志发送至对应的节点,如将第二日志分区发送至上述节点设备。
作为一种可选的实施方式,获取单元52具体用于接收所述其它各个数据库实例所在的各个节点发送的所述其它各个数据库实例的第二日志分区的路径信息,根据所述路径信息读取所述其它各个数据库实例的第二日志分区;所述路径信息为存储第二日志分区的存储地址信息;以及还用于根据预先设定的节点标识与分区标识的映射关系,从划分得到的所述N个日志分区中,读取与所述第一节点的标识相对应分区标识所对应的第一日志分区。
可选的,该实施方式中,上述其它数据库实例所在节点发送的是第二日志分区的数据相关日志的路径信息,节点设备再根据这些路径信息读取相应的日志。
第一恢复单元53,用于恢复所述获取的第一日志分区所记录的事务以及各个第二日志分区所记录的事务。
作为一种可选的实施方式,所述设备还可以包括:
第二恢复单元54,用于恢复所述第一数据库实例包含的非数据日志所记录的事务,以使所述节点设备根据所述非数据日志所记录的事务,恢复的所述第一日志分区所记录的事务以及各个第二日志分区所记录的事务,恢复出完整的数据页;所述非数据日志指用于记录非数据页改动的事务的日志。
可选的,第一恢复单元53中第一节点恢复所述获取的第一日志分区所记录的事务以及各个第二日志分区所记录的事务,加上第二恢复单元54第一节点恢复所述第一数据库实例包含的非数据日志所记录的事务,从而第一节点就可以恢复出数据库系统的完整的数据页。
作为一种可选的实施方式,第二恢复单元54还可以用于当所述其它个数据库实例所在节点未恢复所述其它数据库实例中包括的所述指定区间内的非数据日志所记录的事务时,恢复所述第一数据库实例包含的非数据日志所记录的事务,以使所述第一节点根据所述非数据日志所记录的事务,恢复的所述第一日志分区所记录的事务以及各个第二日志分区所记录的事务,恢复出完整的数据页;所述非数据日志指用于记录非数据页改动的事务的日志。
作为一种可选的实施方式,如图5所示,上述节点设备还可以包括:
发送单元55,用于将第一数据库实例包含的其它日志分区的内容按照所述映射关系发送至所述其它各个数据库实例所在的各个节点,所述其它分区是指所述第一数据库实例中从划分得到的所述N个日志分区中除第一日志分区之外的其它分区。
而上述节点设备为数据库系统中任一节点,也就是说该数据库系统中每个节点都会执行发送单元55,这样就可以使每个节点获取上述映射关系指示的与该节点对应的日志分区。
可选的,在该实施方式中,发送单元55还可以用于将将第一数据库实例包含的其它分区的日记记录按照所述映射关系发送至上述其它各个数据库实例所在的各个节点;或者
发送单元55还可以用于将将第一数据库实例包含的其它分区的日记记录的路径信息按照所述映射关系发送至上述其它各个数据库实例所在的各个节点。这样各个节点就可以根据发送单元55发送的路径信息,从上述节点设备中读取第一数据库实例中与各个节点对应的日志分区。
这样数据库系统中每个数据库实例所在的节点都可以获取与该节点对应的分区的数据相关日志。每个数据库实例所在的节点再进行事务恢复。这样整个数据库系统内在上述指定区间内的日志所记录的事务都被恢复。
作为一种可选的实施方式,本发明实施例中在对数据相关日志进行划分区时都可以是以整条数据相关日志为单位进行划分的,即在划分过程中不会将一整条数据相关日志拆分开,即每个分区包含的都是整数条数据相关日志,即每个日志分区能够实现独立恢复所记录的事务。
作为一种可选的实施方式,划分单元51具体用于将所述节点设备上运行的第一数据库实例包含的指定区间的数据相关日志,按照预先设定的划分规则划分为N个日志分区;
其中,上述指定区间可以包括:
位置区间和时间区间
可选的,该实施方式中,位置区间可以是预先设置的检查点位置与数据库系统发生宕机时数据库实例生成最新的日志的位置之间的位置区间,该位置可以存储日志的存储位置;上述检查点位置可以用户预先设置的,或者第一节点自动设置的。该实施方式中,不同节点的位置区间可以是不同的,但生成这位置区间的规则是相同的。
作为一种可选的实施方式,本发明实施例中的数据相关日记和非数据日志都可以是Redo日志。本发明实施例中恢复日记所记录的事务可以是重做日志所记录的事务。
上述技术方案中,在上面实施例的基础对分区进行了详细说明,以实现更多实施方式可以提供数据库系统的可用性。
图7是本发明实施例提供的另一种节点设备的结构示意图,节点设备所在的数据库系统包含N个数据库实例,每一个数据库实例运行在一个节点上,即上述系统中不同数据库实例在不同的节点上,且每个节点设置有节点标识,该数据库系统还包括中心协调节点,该中心协调节点与上述包含数据库实例的节点连接,N为大于0的整数,如图7所示,该节点设备包括:划分单元61、获取单元62和第一恢复单元63,获取单元62包括接收单元621、第一读取单元622和第二读取单元623,其中:
划分单元61,用于将所述节点设备上运行的第一数据库实例包含的数据相关日志,按照预先设定的划分规则划分为N个日志分区,并按照预先设定的标识规则为每个所述日志分区设置分区标识,且每个日志分区能够实现独立恢复所记录的事务;
其中,所述数据相关日志指用于记录数据页改动的事务的日志;N为所述数据库系统中包含的数据库实例个数,每个数据库实例运行在所述数据库系统的一个节点上,且每个所述节点设置有节点标识。
作为一种可选的实施方式中,上述划分规则和上述标识规则都可以中心协调节点设置的,并发送给每个数据库实例所在的节点。上述划分规则和上述标识规则还可以是各个数据库实例所在的节点之间预先协商的。
接收单元621,用于接收所述数据库系统的中心协调节点发送的所述其它各个数据库实例的第二日志分区的路径信息,所述路径信息为存储第二日志分区的存储地址信息。
其中,所述其它各个数据库实例中,每个数据库实例的第二日志分区是所述每个数据库实例所在节点将所述每个数据库实例包含的数据相关日志,按照所述预先设定的划分规则划分,并按照所述预先设定的标识规则设置分区标识后得到的日志分区中,与所述第一节点对应的日志分区。
作为一种可选的实施方式,中心协调节点预先获取上述划分规则,以及上述分区规则,且还会预先获取每个数据库实例中每个日志分区的路径信息,可以是每个数据库实例所在的节点预先将数据库实例的路径信息发送至中心协调节点,这样中心协调节点就可以通过上述划分规则得知每个日志分区的路径信息;还可以在各节点在划分完分区后,将每个日志分区的路径信息发送至中心协调节点。
第一读取单元622,用于根据所述路径信息从所述其它各个数据库实例所在的各个节点上,分别读取所述其它各个数据库实例的第二日志分区。
第二读取单元623,用于根据预先设定的节点标识与分区标识的映射关系,从划分得到的所述N个日志分区中,读取与所述第一节点的标识相对应分区标识所对应的第一日志分区。
第一恢复单元63,用于恢复所述获取的第一日志分区所记录的事务以及各个第二日志分区所记录的事务;
作为一种可选的实施方式,所述节点设备还可以包括:
第二恢复单元64,用于恢复所述第一数据库实例包含的非数据日志所记录的事务,以使所述第一节点根据所述非数据日志所记录的事务,恢复的所述第一日志分区所记录的事务以及各个第二日志分区所记录的事务,恢复出完整的数据页;所述非数据日志指用于记录非数据页改动的事务的日志。
需要说明的是,在该数据库系统中,即包含的中心协调节点的数据库系统同样可以使用第一和第二个实施例来实现日志所记录的事务进行恢复。
作为一种可选的实施方式,划分单元61具体用于将所述节点设备上运行的第一数据库实例包含的指定区间的数据相关日志,按照预先设定的划分规则划分为N个日志分区;
其中,所述指定区间可以包括:
位置区间或时间区间。
可选的,上述节点设备还可以包括:
信息接收单元(附图中未画出),用于接收中心协调节点发送的指定区间的信息。
可选的,该指定区间可以是位置区间和时间区间。这样划分单元61就将该区间内的数据相关日志划分为N个区域,以及执行后续步骤。
需要说明的是,本发明实施例提供的装置实施例中各个功能单元的具体工作步骤,可以参照前述方法实施例的相应描述,此处不再赘述。
上述技术方案中,在上面实施例的基础上,对包含中心协调节点的数据库系统进行日志所记录的事务进行恢复。同样,可以在数据库系统宕机或基于时间点的恢复时,提高日志恢复的效率,从而提高数据库系统的可用性。
图8是本发明实施例提供的另一种节点设备的结构示意图,节点设备所在的数据库系统包含N个数据库实例,每一个数据库实例运行在一个节点上,即上述系统中不同数据库实例在不同的节点上,且每个节点设置有节点标识,如图8所示,该节点设备包括:存储器71、处理器72和接收器73,其中:
存储器71用于存储一组程序代码,处理器72用于调整存储器71所存储的程序代码用于执行如下操作:
将所述节点设备上运行的第一数据库实例包含的数据相关日志,按照预先设定的划分规则划分为N个日志分区,并按照预先设定的标识规则为每个所述日志分区设置分区标识,且每个日志分区能够实现独立恢复所记录的事务;其中,所述数据相关日志指用于记录数据页改动的事务的日志;N为所述数据库系统中包含的数据库实例个数,每个数据库实例运行在所述数据库系统的一个节点上,且每个所述节点设置有节点标识;
接收器73,用于获取所述第一数据实例的第一日志分区和其它各个数据库实例的第二日志分区;
其中,所述第一日志分区为划分的所述N个日志分区中,与所述节点设备对应的日志分区,所述其它各个数据库实例中,每个数据库实例的第二日志分区是所述每个数据库实例所在节点将所述每个数据库实例包含的数据相关日志,按照所述预先设定的划分规则划分,并按照所述预先设定的标识规则设置分区标识后得到的日志分区中,与所述节点设备对应的日志分区;其中,与所述节点设备对应的日志分区具体为预先设定的节点标识与分区标识的映射关系所指示的与所述节点设备的标识对应的分区标识所对应的日志分区,所述其它数据库实例为所述N个数据库实例中除所述第一数据库实例之外的所有数据库实例;
处理器72还用于执行如下操作:
恢复所述获取的第一日志分区所记录的事务以及各个第二日志分区所记录的事务。
作为一种可选的实施方式,上述节点设备可以是任一数据库系统中的节点设备,例如,计算机、网络中节点设备,如基站、控制器设备等。
上述技术方案中,节点设备将所述第一节点上运行的第一数据库实例包含的数据相关日志划分为N个分区,且为每个分区设置有分区号;节点设备获取所述第一数据实例的第一日志分区和其它各个数据库实例的第二日志分区;节点设备恢复所述获取的第一日志分区所记录的事务以及各个第二日志分区所记录的事务。这样可以实现由数据库系统中每个数据库实例所在的节点恢复与该节点对应的日志分区的日志所记录的事务,相比现有技术由一个数据库实例所在的设备恢复整个数据库系统中日志所记录的事务,本发明可以在数据库系统宕机或基于时间点的恢复时,提高日志恢复的效率,从而提高数据库系统的可用性。
图9是本发明实施例提供的另一种节点设备的结构示意图,该节点设备为数据库系统中的一个节点,该系统包含N个数据库实例,每一个数据库实例运行在一个节点上,且该系统中每个节点设置有节点标识,N为大于0的整数,如图9所示,该节点设备包括:存储器81、处理器82和接收器83,其中:
存储器81用于存储一组程序代码,处理器82用于调整存储器81所存储的程序代码用于执行如下操作:
计算运行的所述节点设备上的第一数据库实例包含的数据相关日志的哈希值,所述哈希值指所述数据相关日志的数据页的数据页标识的哈希值,所述数据页为所述数据相关日志所记录的事务的数据页;
将计算得到的哈希值,按照预先设定的划分规则划分为N个集合;
将哈希值为同一集合的所有数据页作为一个日志分区,以得到N个日志分区;
接收器83,用于获取所述第一数据实例的第一日志分区和其它各个数据库实例的第二日志分区;
其中,所述第一日志分区为划分的所述N个日志分区中,与所述节点设备对应的日志分区,所述其它各个数据库实例中,每个数据库实例的第二日志分区是所述每个数据库实例所在节点将所述每个数据库实例包含的数据相关日志,按照所述预先设定的划分规则划分,并按照所述预先设定的标识规则设置分区标识后得到的日志分区中,与所述节点设备对应的日志分区;其中,与所述节点设备对应的日志分区具体为预先设定的节点标识与分区标识的映射关系所指示的与所述节点设备的标识对应的分区标识所对应的日志分区,所述其它数据库实例为所述N个数据库实例中除所述第一数据库实例之外的所有数据库实例;
处理器82还用于执行如下操作:
恢复所述获取的第一日志分区所记录的事务以及各个第二日志分区所记录的事务;
恢复所述第一数据库实例包含的非数据日志所记录的事务,以使所述第一节点根据所述非数据日志所记录的事务,恢复的所述第一日志分区所记录的事务以及各个第二日志分区所记录的事务,恢复出完整的数据页;所述非数据日志指用于记录非数据页改动的事务的日志。
作为一种可选的实施方式,处理器82还可以用于执行如下操作:
基于所述第一数据库实例包含的数据相关日志的数据页所在表空间(TableSpace)的标识、所述数据页所在数据库的内部ID、所述数据页所在表的内部ID和所述数据页的页号计算得到所述数据相关日志的数据页的数据页标识,以便于根据计算得到的所述数据页标识,计算所述第一数据库实例包含的数据相关日志的哈希值。这里计算可以是指分别计算每个数据页的数据页标识如,上述TableSpace的标识为TableSpace,数据库的内部ID为Databace,上述表的内部ID为Relation,上述页号为BlockNo,上述哈希值可以是对TableSpace×1000+Databace×100+Relation×10+BlockNo进行哈希运算得到的哈希值。
作为一种可行的实施方式,接收器83还可以用于接收所述其它各个数据库实例所在的各个节点发送的所述其它各个数据库实例的第二日志分区;
可选的,处理器82进一步还可以用于执行如下操作:
根据预先设定的节点标识与分区标识的映射关系,从划分得到的所述N个日志分区中,读取与所述第一节点的标识相对应分区标识所对应的第一日志分区。
作为一种可行的实施方式,接收器83还可以用于接收所述其它各个数据库实例所在的各个节点发送的所述其它各个数据库实例的第二日志分区的路径信息所述路径信息为存储第二日志分区的存储地址信息;
可行的,处理器82进一步还可以用于执行如下操作:
根据所述路径信息读取所述其它各个数据库实例的第二日志分区,以及根据预先设定的节点标识与分区标识的映射关系,从划分得到的所述N个日志分区中,读取与所述第一节点的标识相对应分区标识所对应的第一日志分区。
可选的,该实施方式中,上述其它各个数据库实例所在各个节点发送的是与上述节点设备相匹配的分区的数据相关日志的路径信息,处理器82再根据这些路径信息读取相应的日志。
作为一种可选的实施方式,上述节点设备还可以包括:
发射器84,用于将将第一数据库实例包含的其它日志分区的内容按照所述映射关系发送至所述其它各个数据库实例所在的各个节点,所述其它分区是指所述第一数据库实例中从划分得到的所述N个日志分区中除第一日志分区之外的其它分区。
而第一节点为数据库系统中任一节点,也就是说该数据库系统中每个节点都会执行上述步骤,这样就可以使每个节点获取上述映射关系指示的与该节点对应的日志分区。
可选的,在该实施方式中,发射器84还可以用于将第一数据库实例包含的其它分区的日记记录按照所述映射关系发送至上述其它各个数据库实例所在的各个节点;或者
发射器84还可以用于将第一数据库实例包含的其它分区的日记记录的路径信息按照所述映射关系发送至上述其它各个数据库实例所在的各个节点
这样数据库系统中每个数据库实例所在的节点都可以获取与该节点相匹配的分区的数据相关日志。每个数据库实例所在的节点再进行事务恢复。这样整个数据库系统内在上述指定区间内的日志所记录的事务都被恢复。
作为一种可选的实施方式,本发明实施例中在对数据相关日志进行划分区时都可以是以整条数据相关日志为单位进行划分的,即在划分过程中不会将一整条数据相关日志拆分开,即每个分区包含的都是整数条数据相关日志,即每个日志分区能够实现独立恢复所记录的事务。
处理器82执行的计算运行的所述节点设备上的第一数据库实例包含的数据相关日志的哈希值的操作可以包括:
计算运行的所述节点设备上的第一数据库实例包含的指定区间的数据相关日志的哈希值
其中,上述指定区间可以包括:
位置区间和时间区间
作为一种可选的实施方式,本发明实施例中的数据相关日记和非数据日志都可以是Redo日志。本发明实施例中恢复日记所记录的事务可以是重做日志所记录的事务。
上述技术方案中,在上面实施例的基础对分区进行了详细说明,以实现更多实施方式可以提供数据库系统的可用性。
图10是本发明实施例提供的另一种节点设备的结构示意图,节点设备所在的数据库系统包含N个数据库实例,每一个数据库实例运行在一个节点上,即上述系统中不同数据库实例在不同的节点上,且每个节点设置有节点标识,该数据库系统还包括中心协调节点,该中心协调节点与上述包含数据库实例的节点连接,N为大于0的整数,如图10所示,该节点设备包括:存储器91、处理器92和接收器93,其中:
存储器91用于存储一组程序代码,处理器92用于调整存储器91所存储的程序代码用于执行如下操作:
将所述节点设备上运行的第一数据库实例包含的数据相关日志,按照预先设定的划分规则划分为N个日志分区,并按照预先设定的标识规则为每个所述日志分区设置分区标识,且每个日志分区能够实现独立恢复所记录的事务;其中,所述数据相关日志指用于记录数据页改动的事务的日志;N为所述数据库系统中包含的数据库实例个数,每个数据库实例运行在所述数据库系统的一个节点上,且每个所述节点设置有节点标识;
接收器93,用于接收所述数据库系统的中心协调节点发送的所述其它各个数据库实例的第二日志分区的路径信息,所述路径信息为存储第二日志分区的存储地址信息;
处理器92还用于执行如下步骤:
根据所述路径信息从所述其它各个数据库实例所在的各个节点上,分别读取所述其它各个数据库实例的第二日志分区;
根据预先设定的节点标识与分区标识的映射关系,从划分得到的所述N个日志分区中,读取与所述第一节点的标识相对应分区标识所对应的第一日志分区;
恢复所述获取的第一日志分区所记录的事务以及各个第二日志分区所记录的事务;
恢复所述第一数据库实例包含的非数据日志所记录的事务,以使所述节点设备根据所述非数据日志所记录的事务,恢复的所述第一日志分区所记录的事务以及各个第二日志分区所记录的事务,恢复出完整的数据页;所述非数据日志指用于记录非数据页改动的事务的日志。
其中,所述其它各个数据库实例中,每个数据库实例的第二日志分区是所述每个数据库实例所在节点将所述每个数据库实例包含的数据相关日志,按照所述预先设定的划分规则划分,并按照所述预先设定的标识规则设置分区标识后得到的日志分区中,与所述第一节点对应的日志分区。
作为一种可选的实施方式,处理器92执行的将所述节点设备上运行的第一数据库实例包含的数据相关日志,按照预先设定的划分规则划分为N个日志分区的步骤可以包括:
将所述节点设备上运行的第一数据库实例包含的指定区间的数据相关日志,按照预先设定的划分规则划分为N个日志分区。
其中,所述指定区间可以包括:
位置区间或时间区间。
可选的,该实施方式,接收器93还可以用于用于接收中心协调节点发送的指定区间的信息。
可选的,该指定区间可以是位置区间和时间区间。这样处理器92就将该区间内的数据相关日志划分为N个区域,以及执行后续操作。
上述技术方案中,在上面实施例的基础上,对包含中心协调节点的数据库系统进行日志所记录的事务进行恢复。同样,可以在数据库系统宕机或基于时间点的恢复时,提高日志恢复的效率,从而提高数据库系统的可用性。
图11是本发明实施例提供的一种数据库系统的结构示意图,该中心协调节点101和多个处理节点(如图11中的102、103、104),中心协调节点101和各个处理节点之间通过总线或高速互联网络设备交换信息;所述多个处理节点上运行有N个数据库实例,每一个数据库实例运行在一个处理节点上,每个所述处理节点均设置有节点标识,其中:
每个处理节点,用于将所述自身运行的数据库实例包含的数据相关日志,按照预先设定的划分规则划分为N个日志分区,并按照预先设定的标识规则为每个所述日志分区设置分区标识,且每个日志分区能够实现独立恢复所记录的事务;其中,所述数据相关日志指用于记录数据页改动的事务的日志;根据预先设定的节点标识与分区标识的映射关系,从划分得到的所述N个日志分区中,读取与所述处理节点的标识相对应分区标识所对应的第一日志分区,并将所述N个日志分区中除所述第一日志分区之外的其它日志分区发送给所述中心协调节点;
中心协调节点101,用于接收各个处理节点发送的日志分区,并根据预先设定的节点标识与分区标识的映射关系,将接收到的每个日志分区发送给与该日志分区的分区标识对应的节点标识所对应的处理节点;
处理节点还用于,恢复读取的所述第一日志分区所记录的事务,以及接收到的所述中心协调节点101发送的各个日志分区所记录的事务。
需要说明的是,上述仅列出了一个处理节点,而这个处理节点可以是数据库系统中任意一个处理节点,也就是说数据库系统中每个处理节点都会都将该节点上运行的数据库实例包含的数据相关日志,按照所述划分规则划分为N个日志分区,并按照所述标识规则为每个所述日志分区设置分区标识;根据预先设定的节点标识与分区标识的映射关系,从划分得到的所述N个日志分区中,读取与所述处理节点的标识相对应分区标识所对应的第一日志分区,并将所述N个日志分区中除所述第一日志分区之外的其它日志分区发送给所述中心协调节点,以及恢复读取的所述第一日志分区所记录的事务,以及接收到的所述中心协调节点发送的各个日志分区所记录的事务。
作为一种可选可选的实施方式,本实施例提供的系统为实现上面方法实施例的系统。
作为一种可选可选的实施方式,本实施例的日志划分方式可以参考前面方法实施例描述的划分方法。
作为一种可选可选的实施方式,本实施例的获取日志分区的数据相关日志获取的方式可以参考前面方法实施例描述的获取方法。
作为一种可选的实施方式工,上述第一节点还可以用于恢复所述第一数据库实例包含的非数据日志所记录的事务;以使所述处理节点根据所述非数据日志所记录的事务,恢复的所述第一日志分区所记录的事务以及各个第二日志分区所记录的事务,恢复出完整的数据页所述非数据日志指用于记录非数据页改动的事务的日志。
上述技术方案中,第一节点将所述第一节点上运行的第一数据库实例包含的数据相关日志划分为N个分区,且为每个分区设置有分区号,第一节点获取所述第一数据实例中的第一日志分区和其它数据库实例的第一日志分区的数据相关日志;其中,所述其它数据库实例的第一日志分区是所述其它数据库实例所在节点按照所述预先设定的划分规则划分的,且按照所述预先设定的标识规则设置分区标识的分区中的第一日志分区,第一节点恢复所述获取的数据相关日志所记录的事务。这样可以实现由数据库系统中每个数据库实例所在的节点恢复与该节点对应的日志分区的日志所记录的事务,相比现有技术由一个数据库实例所在的设备恢复整个数据库系统中日志所记录的事务,本发明可以在数据库系统宕机或基于时间点的恢复时,提高日志恢复的效率,从而提高数据库系统的可用性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存取存储器(Random Access Memory,简称RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (15)
1.一种数据库系统恢复方法,其特征在于,包括:
第一节点将所述第一节点上运行的第一数据库实例包含的数据相关日志,按照预先设定的划分规则划分为N个日志分区,并按照预先设定的标识规则为每个所述日志分区设置分区标识,且每个日志分区能够实现独立恢复所记录的事务;其中,所述数据相关日志指用于记录数据页改动的事务的日志;N为所述数据库系统中包含的数据库实例个数,每个数据库实例运行在所述数据库系统的一个节点上,且每个所述节点设置有节点标识;
所述第一节点获取所述第一数据实例的第一日志分区和其它各个数据库实例的第二日志分区;其中,所述第一日志分区为划分的所述N个日志分区中,与所述第一节点对应的日志分区,所述其它各个数据库实例中,每个数据库实例的第二日志分区是所述每个数据库实例所在节点将所述每个数据库实例包含的数据相关日志,按照所述预先设定的划分规则划分,并按照所述预先设定的标识规则设置分区标识后得到的日志分区中,与所述第一节点对应的日志分区;其中,与所述第一节点对应的日志分区具体为预先设定的节点标识与分区标识的映射关系所指示的与所述第一节点的标识对应的分区标识所对应的日志分区,所述其它数据库实例为所述N个数据库实例中除所述第一数据库实例之外的所有数据库实例;
所述第一节点恢复所述获取的第一日志分区所记录的事务以及各个第二日志分区所记录的事务。
2.如权利要求1所述的方法,其特征在于,所述第一节点获取所述第一数据实例的第一日志分区和其它各个数据库实例的第二日志分区,包括:
所述第一节点接收所述其它各个数据库实例所在的各个节点发送的所述其它各个数据库实例的第二日志分区;或者所述第一节点接收所述其它各个数据库实例所在的各个节点发送的所述其它各个数据库实例的第二日志分区的路径信息,根据所述路径信息读取所述其它各个数据库实例的第二日志分区;所述路径信息为存储第二日志分区的存储地址信息;
所述第一节点根据预先设定的节点标识与分区标识的映射关系,从划分得到的所述N个日志分区中,读取与所述第一节点的标识相对应分区标识所对应的第一日志分区。
3.如权利要求1所述的方法,其特征在于,所述第一节点获取所述第一数据实例中的第一日志分区和其它各个数据库实例的第二日志分区包括:
所述第一节点接收所述数据库系统的中心协调节点发送的所述其它各个数据库实例的第二日志分区的路径信息,所述路径信息为存储第二日志分区的存储地址信息;
所述第一节点根据所述路径信息从所述其它各个数据库实例所在的各个节点上,分别读取所述其它各个数据库实例的第二日志分区;
所述第一节点根据预先设定的节点标识与分区标识的映射关系,从划分得到的所述N个日志分区中,读取与所述第一节点的标识相对应分区标识所对应的第一日志分区。
4.如权利要求1-3中任一项所述的方法,其特征在于,所述第一节点将所述第一节点上运行的第一数据库实例包含的数据相关日志,按照预先设定的划分规则划分为N个日志分区,包括:
所述第一节点计算所述第一数据库实例包含的数据相关日志的哈希值,所述哈希值指所述数据相关日志的数据页的数据页标识的哈希值,所述数据页为所述数据相关日志所记录的事务的数据页;
所述第一节点将计算得到的哈希值,按照预先设定的划分规则划分为N个集合;
所述第一节点将哈希值为同一集合的所有数据页作为一个日志分区,以得到N个日志分区。
5.如权利要求4所述的方法,其特征在于,所述第一节点计算第一数据库实例包含的数据相关日志的哈希值之前,所述方法还包括:
所述第一节点基于所述第一数据库实例包含的数据相关日志的数据页所在表空间的标识、所述数据页所在数据库的内部ID、所述数据页所在表的内部ID和所述数据页的页号计算得到所述数据相关日志的数据页的数据页标识,以便于根据计算得到的所述数据页标识,计算所述第一数据库实例包含的数据相关日志的哈希值。
6.如权利要求1-3中任一项所述的方法,其特征在于,所述第一节点将所述第一节点上运行的第一数据库实例包含的数据相关日志,按照预先设定的划分规则划分为N个日志分区包括:
所述第一节点将所述第一节点上运行的第一数据库实例包含的指定区间的数据相关日志,按照预先设定的划分规则划分为N个日志分区;
其中,所述指定区间包括:
位置区间或时间区间。
7.如权利要求1-3中任一项所述的方法,其特征在于,所述方法还包括:
所述第一节点恢复所述第一数据库实例包含的非数据日志所记录的事务,以使所述第一节点根据所述非数据日志所记录的事务,恢复的所述第一日志分区所记录的事务以及各个第二日志分区所记录的事务,恢复出完整的数据页;所述非数据日志指用于记录非数据页改动的事务的日志。
8.一种节点设备,所述节点设备为数据库系统中的一个节点,其特征在于,所述节点设备包括:划分单元、获取单元和第一恢复单元,其中:
所述划分单元,用于将所述节点设备上运行的第一数据库实例包含的数据相关日志,按照预先设定的划分规则划分为N个日志分区,并按照预先设定的标识规则为每个所述日志分区设置分区标识,且每个日志分区能够实现独立恢复所记录的事务;其中,N为所述节点设备所在的数据库系统包含的数据库实例的个数,每一个数据库实例运行在一个所述节点设备上,且每个节点设备设置有节点标识;
所述获取单元,用于获取所述第一数据实例的第一日志分区和其它各个数据库实例的第二日志分区;其中,所述第一日志分区为划分的所述N个日志分区中,与所述节点设备对应的日志分区,所述其它各个数据库实例中,每个数据库实例的第二日志分区是所述每个数据库实例所在节点将所述每个数据库实例包含的数据相关日志,按照所述预先设定的划分规则划分,并按照所述预先设定的标识规则设置分区标识后得到的日志分区中,与所述节点设备对应的日志分区;其中,与所述节点设备对应的日志分区具体为预先设定的节点标识与分区标识的映射关系所指示的与所述设备节点的标识对应的分区标识所对应的日志分区,所述其它数据库实例为所述N个数据库实例中除所述第一数据库实例之外的所有数据库实例;
所述第一恢复单元,用于恢复所述获取单元获取第一日志分区所记录的事务以及各个第二日志分区所记录的事务。
9.如权利要求8所述的设备,其特征在于,所述获取单元具体用于接收所述其它各个数据库实例所在的各个节点发送的所述其它各个数据库实例的第二日志分区;或者接收所述其它各个数据库实例所在的各个节点发送的所述其它各个数据库实例的第二日志分区的路径信息,根据所述路径信息读取所述其它各个数据库实例的第二日志分区;所述路径信息为存储第二日志分区的存储地址信息;
根据预先设定的节点标识与分区标识的映射关系,从划分得到的所述N个日志分区中,读取与所述节点设备的标识相对应分区标识所对应的第一日志分区。
10.如权利要求8所述的设备,其特征在于,所述获取单元包括:
接收单元,用于接收所述数据库系统的中心协调节点发送的所述其它各个数据库实例的第二日志分区的路径信息,所述路径信息为存储第二日志分区的存储地址信息;
第一读取单元,用于根据所述路径信息从所述其它各个数据库实例所在的各个节点上,分别读取所述其它各个数据库实例的第二日志分区;
第二读取单元,用于根据预先设定的节点标识与分区标识的映射关系,从划分得到的所述N个日志分区中,读取与所述节点设备的标识相对应分区标识所对应的第一日志分区。
11.如权利要求8-10中任一项所述的设备,其特征在于,所述划分单元包括:
第一计算单元,用于计算所述第一数据库实例包含的数据相关日志的哈希值,所述哈希值指所述数据相关日志的数据页的数据页标识的哈希值,所述数据页为所述数据相关日志所记录的事务的数据页;
划分子单元,用于将计算得到的哈希值,按照预先设定的划分规则划分为N个集合;
分区单元,用于将哈希值为同一集合的所有数据页作为一个日志分区,以得到N个日志分区。
12.如权利要求11所述的设备,其特征在于,所述设备还包括:
第二计算单元,用于基于所述第一数据库实例包含的数据相关日志的数据页所在表空间的标识、所述数据页所在数据库的内部ID、所述数据页所在表的内部ID和所述数据页的页号计算得到所述数据相关日志的数据页的数据页标识,以便于所述第一计算单元根据计算得到的所述数据页标识,计算所述第一数据库实例包含的数据相关日志的哈希值。
13.如权利要求8-10中任一项所述的设备,其特征在于,所述划分单元具体用于将所述节点设备上运行的第一数据库实例包含的指定区间的数据相关日志,按照预先设定的划分规则划分为N个日志分区;
其中,所述指定区间包括:
位置区间或时间区间。
14.如权利要求8-10中任一项所述的设备,其特征在于,所述设备还包括:
第二恢复单元,用于恢复所述第一数据库实例包含的非数据日志所记录的事务,以使所述节点设备根据所述非数据日志所记录的事务,恢复的所述第一日志分区所记录的事务以及各个第二日志分区所记录的事务,恢复出完整的数据页;所述非数据日志指用于记录非数据页改动的事务的日志。
15.一种数据库系统,其特征在于,包括:中心协调节点和多个处理节点,所述多个处理节点上运行有N个数据库实例,每一个数据库实例运行在一个处理节点上,每个所述处理节点均设置有节点标识,其中:
所述处理节点,用于将自身运行的数据库实例包含的数据相关日志,按照预先设定的划分规则划分为N个日志分区,并按照预先设定的标识规则为每个所述日志分区设置分区标识,且每个日志分区能够实现独立恢复所记录的事务;其中,所述数据相关日志指用于记录数据页改动的事务的日志;根据预先设定的节点标识与分区标识的映射关系,从划分得到的所述N个日志分区中,读取与所述处理节点的标识相对应分区标识所对应的第一日志分区,并将所述N个日志分区中除所述第一日志分区之外的其它日志分区发送给所述中心协调节点;
所述中心协调节点,用于接收各个处理节点发送的日志分区,并根据预先设定的节点标识与分区标识的映射关系,将接收到的每个日志分区发送给与该日志分区的分区标识对应的节点标识所对应的处理节点;
所述处理节点还用于,恢复读取的所述第一日志分区所记录的事务,以及接收到的所述中心协调节点发送的各个日志分区所记录的事务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210570176.1A CN103049355B (zh) | 2012-12-25 | 2012-12-25 | 一种数据库系统恢复方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210570176.1A CN103049355B (zh) | 2012-12-25 | 2012-12-25 | 一种数据库系统恢复方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103049355A CN103049355A (zh) | 2013-04-17 |
CN103049355B true CN103049355B (zh) | 2015-06-17 |
Family
ID=48062004
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210570176.1A Active CN103049355B (zh) | 2012-12-25 | 2012-12-25 | 一种数据库系统恢复方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103049355B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104346373B (zh) * | 2013-07-31 | 2017-12-15 | 华为技术有限公司 | 分区日志队列同步管理方法及设备 |
CN103838521B (zh) * | 2014-02-28 | 2017-02-08 | 华为技术有限公司 | 一种数据处理方法及装置 |
CN105045917B (zh) * | 2015-08-20 | 2019-06-18 | 北京百度网讯科技有限公司 | 一种基于实例的分布式数据恢复方法和装置 |
CN105930256B (zh) * | 2016-04-14 | 2018-07-17 | 北京思特奇信息技术股份有限公司 | 一种利用log4j分文件的日志输出方法和装置 |
CN107644025B (zh) * | 2016-07-20 | 2021-03-16 | 阿里巴巴集团控股有限公司 | 分布式数据库的wal记录的分发方法和装置 |
CN106776136B (zh) * | 2016-12-12 | 2019-10-22 | 网易(杭州)网络有限公司 | 数据库处理方法和装置 |
CN110121694B (zh) * | 2017-12-05 | 2020-08-07 | 华为技术有限公司 | 一种日志管理方法、服务器和数据库系统 |
CN109086292B (zh) * | 2018-06-11 | 2023-11-28 | 平安科技(深圳)有限公司 | 一种数据库的切换方法及系统 |
CN115114370B (zh) * | 2022-01-20 | 2023-06-13 | 腾讯科技(深圳)有限公司 | 主从数据库的同步方法、装置、电子设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1975684A (zh) * | 2006-12-13 | 2007-06-06 | 天津理工大学 | 一种支持边服务边恢复的分布式实时数据库故障恢复方法 |
CN101122924A (zh) * | 2007-09-30 | 2008-02-13 | 华为技术有限公司 | 逻辑日志生成方法、数据库备份/恢复方法与系统 |
CN102541990A (zh) * | 2010-12-07 | 2012-07-04 | 国际商业机器公司 | 利用虚拟分区的数据库重新分布方法和系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8650155B2 (en) * | 2008-02-26 | 2014-02-11 | Oracle International Corporation | Apparatus and method for log based replication of distributed transactions using globally acknowledged commits |
US8676753B2 (en) * | 2009-10-26 | 2014-03-18 | Amazon Technologies, Inc. | Monitoring of replicated data instances |
-
2012
- 2012-12-25 CN CN201210570176.1A patent/CN103049355B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1975684A (zh) * | 2006-12-13 | 2007-06-06 | 天津理工大学 | 一种支持边服务边恢复的分布式实时数据库故障恢复方法 |
CN101122924A (zh) * | 2007-09-30 | 2008-02-13 | 华为技术有限公司 | 逻辑日志生成方法、数据库备份/恢复方法与系统 |
CN102541990A (zh) * | 2010-12-07 | 2012-07-04 | 国际商业机器公司 | 利用虚拟分区的数据库重新分布方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103049355A (zh) | 2013-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103049355B (zh) | 一种数据库系统恢复方法及设备 | |
CN107544871B (zh) | 一种虚拟机磁盘备份方法及装置 | |
CN102662992B (zh) | 一种海量小文件的存储、访问方法及装置 | |
CN102725755B (zh) | 文件访问方法及系统 | |
CN109033360B (zh) | 一种数据查询方法、装置、服务器及存储介质 | |
CN107436725A (zh) | 一种数据写、读方法、装置及分布式对象存储集群 | |
CN110266763B (zh) | 跨网段互连的区块链网络实现方法、系统及存储介质 | |
CN104407935A (zh) | 快照回滚方法和存储设备 | |
CN104967658A (zh) | 一种多终端设备上的数据同步方法 | |
CN104020961A (zh) | 分布式数据存储方法、装置及系统 | |
CN103324533A (zh) | 分布式数据处理方法、装置及系统 | |
CN103078907A (zh) | 上传、云备份、查找、恢复数据的方法及装置 | |
CN104346373A (zh) | 分区日志队列同步管理方法及设备 | |
CN103731489A (zh) | 一种数据存储方法、系统和设备 | |
CN106126374A (zh) | 数据写入方法、数据读取方法及装置 | |
CN106802892A (zh) | 用于主备数据一致性校验的方法和设备 | |
CN104657435A (zh) | 一种应用数据的存储管理方法和网络管理系统 | |
CN104410666A (zh) | 云计算下实现异构存储资源管理的方法及系统 | |
CN103778120A (zh) | 全局文件标识生成方法、生成装置及相应的分布式文件系统 | |
EP3786802B1 (en) | Method and device for failover in hbase system | |
CN103065096A (zh) | 一种数据保护方法、装置及系统 | |
CN104424316A (zh) | 一种数据存储方法、数据查询方法、相关装置和系统 | |
CN105446982A (zh) | 用于管理数据存储系统的方法和装置 | |
CN104461779A (zh) | 一种分布式数据的存储方法、装置及系统 | |
CN105144073A (zh) | 可移除存储设备身份和配置信息 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211223 Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province Patentee after: Super fusion Digital Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |