一种内存数据库的容灾方法、备用服务器及系统的制作方法

文档序号:6582567阅读:110来源:国知局
专利名称:一种内存数据库的容灾方法、备用服务器及系统的制作方法
技术领域
本发 明涉及存储领域,尤其涉及一种内存数据库的容灾方法、备用服务器及系统。
背景技术
内存数据库(Main Memory Database, MMDB)的容灾是指,将主用服务器的内存数 据库的数据每天或实时进行动态备份,并存储在远离主用服务器的备用服务器的内存数据 库中,当主用服务器因为发生地震、或火灾、或水灾、或战争而导致内存数据库毁坏时,可以 从备用服务器中进行数据恢复。内存数据库的容灾有两种方案,一种是1+1容灾方案,即一个备用服务器对应一 个主用服务器,其中,备用服务器和主用服务器中各有一套对等的内存数据库,当主用服务 器的内存数据库发生修改时,以重做日志的形式将修改数据同步到备用服务器,备用服务 器接收并解析重做日志获得操作地址ID以及修改数据后,将修改数据同步到该地址ID中。 另一种是N+1容灾方案,即一个备用服务器对应多个主用服务器,其中,备用服务器的内存 数据库大小等于对应的多个主用服务器的内存数据库大小之和,并且备用服务器用于为每 个主用服务器的内存数据库提供容灾服务的内存数据库区域互不相同。N+1容灾方案的实 现过程与1+1容灾方案的实现过程相似。发明人发现,上述的1+1容灾方案中,当主用服务器的数量增加时,需要相应地增 加备用服务器的数量,加大了容灾成本的投入;上述的N+1容灾方案中,当主用服务器数量 增加时,需要相应地增大备用服务器的内存,由于备用服务器的内存是有限的,如果主用服 务器的数量增加较多,备用服务器的内存可能无法满足容灾需求。

发明内容
本发明实施例提供了一种内存数据库的容灾方法、备用服务器及系统,不仅可以 降低内存数据库的容灾成本,还可以减少备用服务器内存的占用,达到内存数据库的N+1 容灾的目的。为了解决上述技术问题,本发明实施例提供如下技术方案本发明实施例提供了一种内存数据库的容灾方法,包括接收主用服务器发送的携带了操作地址以及修改数据的重做日志;解析所述重做日志,获得所述操作地址以及修改数据;判断所述操作地址对应的页面是否在本地内存数据库,若否,从磁盘中获取所述 操作地址对应的页面,并加载到本地内存数据库;将所述修改数据同步到所述操作地址对应的页面中。本发明实施例提供了一种备用服务器,包括接收模块,用于接收主用服务器发送的携带了操作地址以及修改数据的重做日 志;解析模块,用于解析所述接收模块接收的重做日志,获得所述操作地址以及修改数据; 第一判断模块,用于判断所述操作地址对应的页面是否在本地内存数据库;加载模块,用于在所述第一判断模块的判断结果为否时,从磁盘中获取所述操作 地址对应的页面,并加载到本地内存数据库;同步模块,用于将所述修改数据同步到所述操作地址对应的页面中。本发明实施例还提供了一种内存数据库的容灾系统,包括备用服务器和至少一个 主用服务器,所述备用服务器和主用服务器之间以可通信方式相连;所述主用服务器,用于向备用服务器发送携带了操作地址以及修改数据的重做日 志;所述备用服务器,用于接收所述主用服务器发送的携带了操作地址以及修改数据 的重做日志;解析所述重做日志,获得所述操作地址以及修改数据;判断所述操作地址对 应的页面是否在本地内存数据库中,若否,从磁盘中获取所述操作地址对应的页面,并加载 到本地内存数据库;将所述修改数据同步到所述操作地址对应的页面中。从以上技术方案可以看出,本发明实施例具有以下优点本发明实施例中,通过使用磁盘作为辅助存储介质,可以将主用服务器的内存数 据库中大部分数据存储到磁盘内,仅将主用服务器的内存数据库中临时发生变化的数据存 储在备用服务器的内存数据库中,这样可以减少对备用服务器内存的占用,达到内存数据 库的N+1容灾的目的;另外,本发明实施例以磁盘作为辅助存储介质,无需为每个主用服务 器配置一个备用服务器,从而可以降低内存数据库的容灾成本。


为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的 附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领 域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附 图。图1为本发明实施例中提供的一种内存数据库的容灾方法流程图;图2为本发明实施例中提供的一种获取操作地址对应页面的方法流程图;图3为本发明实施例中提供的又一种内存数据库的容灾方法流程图;图4为本发明实施例中提供的另一种内存数据库的容灾方法流程图;图5为本发明实施例中提供的一种从磁盘中加载页面的方法流程图;图6为本发明实施例中提供的一种备用服务器的结构示意图;图7为本发明实施例中提供的另一种备用服务器的结构示意图;图8为本发明实施例中提供的另一种备用服务器的结构示意图;图9为本发明实施例中提供的另一种备用服务器的结构示意图;图10为本发明实施例中提供的一种内存数据库的容灾系统的结构图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。请参阅图1,图1为本发明实施例中提供的一种内存数据库的容灾方法的流程示 意图。如图1所示,该方法可以包括步骤101、接收主用服务器发送的携带了操作地址以及修改数据的重做日志;举例来说,备用服务器可以通过同步传输方式或异步传输方式或其他传输方式来 接收主用服务器发送重做日志,该重做日志携带了操作地址以及修改数据。进一步地,为了防止接收的主用服务器发送的重做日志发生丢失,备用服务器可 以将接收的主用服务器发送的重做日志写入日志文件中,这样即使接收的主用服务器发送 的重做日志发生丢失,也可以从日志文件中提取出来。

102、解析上述重做日志,获得上述操作地址以及修改数据;103、判断上述操作地址对应的页面是否在本地内存数据库,若否,从磁盘中获取 上述操作地址对应的页面,并加载到本地内存数据库中;其中,内存数据库中的数据是以页面的形式进行存储的,一个内存数据库可以包 含若干个页面。在主用服务器中,工作需要的所有的数据都保存在主用服务器的内存数据 库中,例如包括内存数据库的管理数据、表记录数据、临时表记录数据以及索引数据。在本发明实施例中,备用服务器中只保存部分内容在内存,例如,本地内存数据库 只保存内存数据库的管理数据、索引数据以及部分表记录数据,将大部分表记录数据存储 到磁盘中,从而减少对本地内容数据库的占用。举例来说,上述的从磁盘中获取上述操作地址对应的页面,并加载到本地内存数 据库可以采用图2所示的方法。图2为本发明实施例中提供的一种获取操作地址对应页面 的方法流程图。如图2所示,该方法可以包括步骤201、向页面交换进程发送携带了上述操作地址的缺页请求;202、接收页面交换进程从磁盘中读取并发送的上述操作地址对应的页面;203、将上述操作地址对应的页面加载到本地内存数据库。如果上述操作地址对应的页面不在本地内存数据库时,可以通过向页面交换进程 发送缺页请求,由页面交换进程从磁盘中获取上述操作地址对应的页面,或者采用其他方 式从磁盘中获取上述操作地址对应的页面,本发明实施例在此不作限定。104 将上述修改数据同步到操作地址对应的页面中。当上述操作地址对应的页面加载到本地内存数据库之后,可以将主用服务器发送 过来的修改数据同步到上述操作地址对应的页面中,这样本地内存数据库中存储的是主用 服务器的临时修改的数据,无需存储主用服务器的内存数据库中的所有数据,从而可以减 少对本地内存数据库的占用。上述对本发明实施例提供的一种内存数据库的容灾方法进行了介绍,通过使用磁 盘作为辅助存储介质,可以将主用服务器的内存数据库中大部分数据存储到磁盘内,仅将 主用服务器的内存数据库中临时发生变化的数据存储在备用服务器的内存数据库中,这样 可以减少对备用服务器内存的占用,达到内存数据库的N+1容灾的目的;另外,本发明实施 例以磁盘作为辅助存储介质,无需为每个主用服务器配置一个备用服务器,从而可以降低 内存数据库的容灾成本。
请参阅图3,图3为本发明实施例中提供的一种内存数据库的容灾方法的流程示 意图。如图3所示,该方法可以包括步骤301、接收主用服务器发送的携带了操作地址以及修改数据的重做日志;举例来说,备用服务器可以通过同步传输方式或异步传输方式或其他传输方式来 接收主用服务器发送重做日志,该重做日志携带了操作地址以及修改数据。302、解析上述重做日志,获得上述操作地址以及修改数据;303、判断上述操作地址对应的页面是否在本地内存数据库,若否,执行步骤304 ; 若是,则执行步骤307;举例来说,如果上述操作地址对应的页面在本地内存数据库中,则备用服务器可 以将上述修改数据同步到上述操作地址对应的页面中,这样可以将主用服务器临时修改的 数据存储到本地内存数据库中。304 判断当前是否满足页面写入条件,若是,执行步骤305 ;若否,则执行步骤 306 ;其中,上述步骤304中的页面写入条件可以包括以下一个或几个本地内存数据库不存在空闲页面、当前系统运行达到指定时间以及接收重做日志 的次数达到指定次数。305 将本地内存数据库中满足预设条件的页面写入磁盘;当本地内存数据库中不存在空闲页面时,为了使本地内存数据库能够存储主用服 务器的临时修改数据,需要将本地内存数据中满足预设条件的页面写入磁盘,从而为本地 内存数据库腾出空闲页面来存储主用服务器的临时修改的数据。实际应用中,上述步骤305中的预设条件可以包括但不限于以下条件本地内存数据库中的页面存储时间达到预设值时,备用服务器可以将本地内存数 据库中的页面(部分或全部)写入磁盘,这样本地内存数据库可以有剩余空间来存储主用 服务器发送过来的临时修改的数据。或者,采用某些特定的算法,例如最近最少使用(Least Recently Used,LRU)淘汰 算法,或者本领域人员可以选择的其他淘汰算法将本地内存数据库中满足淘汰算法的页面 写入磁盘。当磁盘I/O 口比较繁忙时,可以将满足预设条件的本地内存数据库中部分页面写 入磁盘中,否则,可以将满足预设条件的本地内存数据库中全部页面写入磁盘中。可以理解的是,上述各种预设条件可以组合一起用,也可以分别使用,本发明不限 定具体的预设条件,本领域技术人员根据本发明实施例的描述情况,可以想到的其他条件, 只要能够满足将本地内存数据库中的页面写入磁盘,以便于有空间存储从磁盘中获取上述 操作地址对应的页面。在具体的实施例中,步骤304中的“判断当前是否满足页面写入条件”步骤,可以 包括以下步骤之一或者组合当系统运行达到指定时间时,触发将本地内存数据库中的页面(部分或全部)写 入磁盘;或者当接收重做日志的次数达到指定次数时,触发将本地内存数据库中的页面(部分 或全部)写入磁盘。具体的可以是,当本次接收重做日志在内的接收重做日志次数到达了指定次数时,可以将本地内存数据库的部分或全部页面写入磁盘。这样情况下,需要预先设 置好指定次数,以及在每次接收到主用服务器发送过来的重做日志时记录接收重做日志的 次数,以便后续判断接收重做日志的次数是否达到指定次数。以上两种判断步骤中,若判断结果为是,执行步骤305 ;若判断结果为否,则执行 步骤306 ;具体的步骤305 “将本地内存数据库中满足预设条件的页面写入磁盘”中的预设 条件同上。
306 从磁盘中获取上述操作地址对应的页面,并加载到本地内存数据库中;即步骤304的判断结果为本地内存数据库不存在空闲页面,或者,当前系统运行 达到指定时间,或者,接收重做日志的次数达到指定次数;则本地内存数据库中满足预设条 件的页面写入磁盘后,将从磁盘中获取的上述操作地址对应的页面加载到本地内存数据库 中;反之,直接将上述操作地址对应的页面加载到本地内存数据库中的空闲页面。举例来说,将从磁盘中获取的上述操作地址对应的页面加载到本地内存数据库中 的具体方式,可以采用图2所示的方法,本发明实施例在此不再赘述。307 将上述修改数据同步到操作地址对应的页面中。当上述操作地址对应的页面加载到本地内存数据库之后,可以将主用服务器发送 过来的修改数据同步到上述操作地址对应的页面中,这样本地内存数据库中存储的是主用 服务器临时修改的数据,无需存储主用服务器的内存数据库中的所有数据,从而可以减少 对本地内存数据库的占用。上述对本发明实施例提供的一种内存数据库的容灾方法进行了介绍,通过使用磁 盘作为辅助存储介质,可以将主用服务器的内存数据库中大部分数据存储到磁盘内,仅将 主用服务器的内存数据库中临时发生变化的数据存储在备用服务器的内存数据库中,这样 可以减少对备用服务器内存的占用,达到内存数据库的N+1容灾的目的;另外,本发明实施 例以磁盘作为辅助存储介质,无需为每个主用服务器配置一个备用服务器,从而可以降低 内存数据库的容灾成本。请参阅图4,图4为本发明实施例中提供的一种内存数据库的容灾方法的流程示 意图。如图4所示,该方法可以包括步骤401 407与上述的301 307相同,本发明实施例在此不再赘述。408 检测输入的内存数据库状态切换指令;具体的应用实例中,内存数据库状态切换指令可以是由主用服务器在出现灾难的 情况下发送至备用服务器的,或者是由本地人为输入的。在检测到内存数据库状态切换指令之后,备用服务器需要将当前处理的主用服务 器发送的重做日志处理完毕,然后才执行后续步骤,确保主用服务器临时修改的数据不会 发生丢失。409、停止接收重做日志,将未处理的重做日志写入日志文件;对于未处理的重做日志,备用服务器可以将其先写入日志文件,防止重做日志丢 失。410 创建完整的本地内存数据库,将磁盘存储的页面加载到本地内存数据库;举例来说,上述的步骤410中将磁盘存储的页面加载到本地内存数据库可以采用 图5所述的方法,如图5所示,该方法可以包括步骤
501 向页面交换进程发送页面加载请求;502 接收页面交换进程从磁盘中读取并发送的页面; 503 将页面加载到本地内存数据库中。411、解析未处理重做日志,获得未处理重做日志的操作地址和修改数据;412、将未处理重做日志的修改数据同步到本地内存数据库中的未处理重做日志 的操作地址对应的页面中;413、修改本地内存数据库状态标志为主用状态。本发明实施例使用磁盘作为辅助存储介质,可以将主用服务器的内存数据库中大 部分数据存储到磁盘内,仅将主用服务器的内存数据库中临时发生变化的数据存储在本地 内存数据库中,可以减少对本地内存的占用,达到内存数据库的N+1容灾的目的,降低内存 数据库的容灾成本。另外,本发明实施例可以通过接收内存数据库状态切换指令将磁盘存 储的页面加载到本地内心数据库,并将本地内存数据库状态标志为主用状态,从而可以将 本地内存数据库切换为主用状态,可以在主用服务器出现灾难时代替主用服务器继续工 作。请参阅图6,图6为本发明实施例中提供的一种备用服务器的结构示意图。如图6 所示,该备用服务器可以包括接收模块601,用于接收主用服务器发送的携带了操作地址以及修改数据的重做
日志;举例来说,接收模块601可以通过同步传输方式或异步传输方式或其他传输方式 来接收主用服务器发送重做日志,该重做日志携带了操作地址以及修改数据。其中,内存数据库中的数据是以页面的形式进行存储的,一个内存数据库可以包 含若干个页面。在主用服务器中,所有的数据都保存在主用服务器的内存数据库中,包括内 存数据库的管理数据、表记录数据、临时表记录数据以及索引数据,这是本领域技术人员所 公知的常识。在本发明实施例中,备用服务器的内存数据库只需保存内存数据库的管理数据、 索引数据以及部分表记录数据,从而减少对备用服务器的内容数据库的占用。解析模块602,用于解析接收模块601接收的重做日志,获得操作地址以及修改数 据;第一判断模块603,用于判断解析模块602解析获得的操作地址对应的页面是否 在本地内存数据库;加载模块604,用于在第一判断模块603的判断结果为否时,从磁盘中获取解析模 块602解析获得的操作地址对应的页面,并加载到本地内存数据库;同步模块605,用于将解析模块602解析获得的修改数据同步到解析获得的操作 地址对应的页面中。一个具体的例子中,同步模块605还用于在第一判断模块603判断解析模块602 解析获得的操作地址对应的页面在本地内存数据库时,将解析模块602解析获得的修改数 据同步到解析获得的操作地址对应的页面中。在图6所示的备用服务器的基础之上,本发明实施例进一步提出了如图7所示的 备用服务器。如图7所示的加载模块604可以包括
收发子模块6041,与第一判断模块603连接,用于在第一判断模块603的判断结果 为否时,向页面交换进程发送携带了解析模块602解析获得的操作地址的缺页请求;接收 页面交换进程从磁盘中读取并发送的该操作地址对应的页面;

加载子模块6042,用于将解析模块602解析获得的操作地址对应的页面加载到本 地内存数据库。在图6所示的备用服务器的基础之上,本发明实施例还进一步提出了如图8所示 的备用服务器。如图8所示,该备用服务器除了包括如图6所示的接收模块601、解析模块 602、第一判断模块603、加载模块604以及同步模块605之外,还可以包括第二判断模块606,与第一判断模块603连接,用于在第一判断模块603的判断结 果为否时,进一步判断当前是否满足页面写入条件;其中,页面写入条件可以包括以下一个或几个本地内存数据库不存在空闲页面、当前系统运行达到指定时间以及接收重做日志 的次数达到指定次数。即当本地内存数据库中不存在空闲页面,或者当前系统运行达到指定时间、或者 接收重做日志的次数达到指定次数,为了使本地内存数据库能够存储主用服务器的临时修 改数据,需要将本地内存数据中满足预设条件的页面写入磁盘,从而为本地内存数据库腾 出空闲页面来存储主用服务器的临时修改数据。写入模块607,与第二判断模块606连接,用于在第二判断模块606的判断结果为 是时,则将本地内存数据库中满足预设条件的页面写入磁盘;其中,上述的预先条件可以包括本地内存数据库的页面的存储时间达到预设值;和/或,本地内存数据库的页面满足最近最少使用LRU淘汰算法。可以理解的是,上述各种预设条件可以组合一起用,也可以分别使用,本发明不限 定具体的预设条件,本领域技术人员根据本发明实施例的描述情况,可以想到的其他条件, 只要能够满足将本地内存数据库中的页面写入磁盘,以便于有空间存储从磁盘中获取上述 操作地址对应的页面。进一步地,当磁盘I/O 口比较繁忙时,写入模块607可以将满足预设条件的本地内 存数据库中部分页面写入磁盘中,否则,可以将满足预设条件的本地内存数据库中全部页 面写入磁盘。此时,加载模块604与写入模块607连接,具体用于在写入模块607将本地内存数 据库中满足预设条件的页面写入磁盘之后,从磁盘中获取上述操作地址对应的页面,并加 载到本地内存数据库。同步模块605,用于在加载模块604从磁盘中获取上述操作地址对应的页面,并加 载到本地内存数据库之后,将上述修改数据同步到操作地址对应的页面中。一个具体的例子中,本发明实施例可以进一步在图6、或图7、或图8所示的备用服 务器的基础之上,增加相关的功能模块,以使得备用服务器在主用服务器的内存数据库毁 坏时,可以切换成主用服务器。为了便于理解,下面仅以图6所示的备用服务器增加相关 的功能模块为例,介绍本发明实施例提供的另一种备用服务器。请参阅图9,图9为本发明 实施例在图6所示的备用服务器的基础之上,进一步提出的另一种备用服务器900。如图9所示的备用服务器900除了包括如图6所示的接收模块601、解析模块602、第一判断模块 603、加载模块604以及同步模块605之外,还可以包括检测 模块608,用于检测输入的内存数据库状态切换指令;具体的应用实例中,内存数据库状态切换指令可以是由主用服务器在出现灾难的 情况下发送至备用服务器的,或者是由本地人为输入的。第一处理模块609,用于在检测模块608检测到内存数据库状态切换指令时,停止 接收重做日志,将未处理重做日志写入日志文件;创建完整的本地内存数据库,将磁盘存储 的页面加载到本地内存数据库;其中,在检测到内存数据库状态切换指令之后,第一处理模块609可以将未处理 重做日志写入日志文件,确保主用服务器临时修改数据不会发生丢失。举例来说,第一处理模块609创建完整的本地内存数据库之后,可以向页面交换 进程发送页面加载请求,并且接收页面交换进程从磁盘中读取并发送的页面;将该页面加 载到本地内存数据库中。第二处理模块610,用于解析未处理重做日志,获得未处理重做日志的操作地址和 修改数据;将未处理重做日志的修改数据同步到本地内存数据库中的未处理重做日志的操 作地址对应的页面中;修改本地内存数据库状态标志为主用状态。需要说明的是,以上备用服务器的实施方式中,各功能模块的划分仅是举例说明, 实际应用中可以根据需要,比如相应硬件的配置要求或者软件的实现的便利考虑,而将上 述功能分配由不同的功能模块完成,即将所述的备用服务器的内部结构划分成不同的功能 模块,以完成以上描述的全部或者部分功能。而且实际应用中,本实施例中的相应的功能模 块可以是由相应的硬件实现,也可以由相应的硬件执行相应的软件完成,例如,前述的收发 子模块6041,可以为具有执行前述功能的硬件,比如,收发器,以及其他通用的能够执行前 述功能的接收以及发送装置,第一判断模块603,可以为能够执行前述功能的特定处理器, 也可以是能够执行相应计算机程序从而完成前述功能的一般处理器,或者其他硬件设备。上述对本发明实施例提供的一种备用服务器进行了介绍,通过使用磁盘作为辅助 存储介质,可以将主用服务器的内存数据库中大部分数据存储到磁盘内,仅将主用服务器 的内存数据库中临时发生变化的数据存储在备用服务器的内存数据库中,这样可以减少对 备用服务器内存的占用,达到内存数据库的N+1容灾的目的;另外,本发明实施例以磁盘作 为辅助存储介质,无需为每个主用服务器配置一个备用服务器,从而可以降低内存数据库 的容灾成本。另外,本发明实施例提供的备用服务器也可以具备检测功能,当备用服务器检测 到和主用服务器发生灾难,或者检测到人为发送的切换指令时,可以停止重做日志接收工 作,并将磁盘中所有页面加载到备用服务器的内存数据库中,备用服务器可以在页面加载 完毕后,开始代替主用服务器工作。请参阅图10,图10为本发明实施例中提供的一种内存数据库的容灾系统的结构 示意图。如图10所示,该容灾系统可以包括备用服务器和至少一个主用服务器,其中,备用 服务器和至少一个主用服务器之间以可通信方式相连;其中,主用服务器1001,用于向备用服务器1002发送携带了操作地址以及修改数 据的重做日志;
备用服务器1002,用于接收主用服务器发送的携带了操作地址以及修改数据的重做日志;解析上述重做日志,获得上述操作地址以及修改数据;判断上述操作地址对应的页面是否在本地内存数据库中,若否,从磁盘中获取上 述操作地址对应的页面,并加载到本地内存数据库;将上述修改数据同步到所述操作地址 对应的页面中。可选地,备用服务器1002还用于当上述操作地址对应的页面不在本地内存数据 库时,进一步判断当前是否满足页面写入条件,若满足,则将本地内存数据库中满足预设条 件的页面写入磁盘,从磁盘中获取所述操作地址对应的页面,并加载到本地内存数据库。其中,上述的页面写入条件至少包括以下之一本地内存数据库不存在空闲页面、当前系统运行达到指定时间或者接收重做日志 的次数达到指定次数。其中,上述的预设条件至少包括以下之一本地内存数据库的页面的存储时间达到预设值;本地内存数据库的页面满足最近最少使用LRU淘汰算法。可选地,备用服务器1002还可以用于检测输入的内存数据库状态切换指令,停止 接收重做日志,将未处理重做日志写入日志文件;创建完整的本地内存数据库,将磁盘存储 的页面加载到本地内存数据库;解析未处理重做日志,获得未处理重做日志的操作地址和 修改数据;将未处理重做日志的修改数据同步到本地内存数据库中的所述未处理重做日志 的操作地址对应的页面中;修改本地内存数据库状态标志为主用状态。可以理解的是,上述系统实施例中的备用服务器,可以为前述备用服务器实施例 中描述的任意一种备用服务器,此处不再进行赘述。上述对本发明实施例提供的一种内存数据库的容灾系统进行了介绍,通过使用磁 盘作为辅助存储介质,可以将主用服务器的内存数据库中大部分数据存储到磁盘内,仅将 主用服务器的内存数据库中临时发生变化的数据存储在备用服务器的内存数据库中,这样 可以减少对备用服务器内存的占用,达到内存数据库的N+1容灾的目的;另外,本发明实施 例以磁盘作为辅助存储介质,无需为每个主用服务器配置一个备用服务器,从而可以降低 内存数据库的容灾成本。本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过 程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序 在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括只读存储器(ROM)、 随机存取器(RAM)、磁碟或者光盘等各种可以存储程序代码的介质。以上对本发明实施例所提供的一种内存数据库的容灾方法、备用服务器及系统进 行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施 例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人 员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明 书内容不应理解为对本发明的限制。
权利要求
1.一种内存数据库的容灾方法,其特征在于,包括接收主用服务器发送的携带了操作地址以及修改数据的重做日志; 解析所述重做日志,获得所述操作地址以及修改数据;判断所述操作地址对应的页面是否在本地内存数据库,若否,从磁盘中获取所述操作 地址对应的页面,并加载到本地内存数据库;将所述修改数据同步到所述操作地址对应的页面中。
2.如权利要求1所述的容灾方法,其特征在于,若所述操作地址对应的页面不在本地 内存数据库,还包括若满足页面写入条件,则将本地内存数据库中满足预设条件的页面写入磁盘。
3.如权利要求2所述的容灾方法,其特征在于,所述页面写入条件包括至少下述条件 之一本地内存数据库不存在空闲页面、当前系统运行达到指定时间以及接收重做日志的 次数达到指定次数。
4.如权利要求2或3所述的容灾方法,其特征在于,所述将本地内存数据库中满足预设 条件的页面写入磁盘包括将本地内存数据库中的存储时间达到预设值的页面写入磁盘; 和/或,将本地内存数据库中满足最近最少使用LRU淘汰算法的页面写入磁盘。
5.如权利要求1所述的容灾方法,其特征在于,从磁盘中获取所述操作地址对应的页 面,并加载到本地内存数据库包括向页面交换进程发送携带了所述操作地址的缺页请求; 接收所述页面交换进程从磁盘中读取并发送的所述操作地址对应的页面; 将所述操作地址对应的页面加载到本地内存数据库。
6.如权利要求1、2、3或5所述的容灾方法,其特征在于,还包括 检测输入的内存数据库状态切换指令;停止接收重做日志,将未处理重做日志写入日志文件; 创建完整的本地内存数据库,将所述磁盘存储的页面加载到本地内存数据库; 解析所述未处理重做日志,获得所述未处理重做日志的操作地址和修改数据; 将所述未处理重做日志的修改数据同步到本地内存数据库中的所述未处理重做日志 的操作地址对应的页面中;修改本地内存数据库状态标志为主用状态。
7.如权利要求6所述的容灾方法,其特征在于,将所述磁盘存储的页面加载到本地内 存数据库包括向页面交换进程发送页面加载请求; 接收所述页面交换进程从磁盘中读取并发送的页面; 将所述页面加载到本地内存数据库。
8.一种备用服务器,其特征在于,包括接收模块,用于接收主用服务器发送的携带了操作地址以及修改数据的重做日志; 解析模块,用于解析所述接收模块接收的重做日志,获得所述操作地址以及修改数据;第一判断模块,用于判断所述操作地址对应的页面是否在本地内存数据库;加载模块,用于在所述第一判断模块的判断结果为否时,从磁盘中获取所述操作地址 对应的页面,并加载到本地内存数据库;同步模块,用于将所述修改数据同步到所述操作地址对应的页面中。
9.如权利要求8所述的备用服务器,其特征在于,还包括第二判断模块,用于在所述第一判断模块的判断结果为否时,判断当前是否满足页面 写入条件;写入模块,用于在所述第二判断模块的判断结果为是时,将本地内存数据库中满足预 设条件的页面写入磁盘;所述加载模块,具体用于在所述写入模块将本地内存数据库中满足预设条件的页面写 入磁盘之后,从磁盘中获取所述操作地址对应的页面,并加载到本地内存数据库。
10.如权利要求9所述的备用服务器,其特征在于,所述第二判断模块根据至少下述条 件之一判断当前是否满足页面写入条件本地内存数据库不存在空闲页面、当前系统运行 达到指定时间以及接收重做日志的次数达到指定次数。
11.如权利要求9或10所述的备用服务器,其特征在于,所述写入模块具体用于将本地 内存数据库中的存储时间达到预设值的页面写入磁盘;和/或,用于将本地内存数据库中 满足最近最少使用LRU淘汰算法的页面写入磁盘。
12.如权利要求8所述的备用服务器,其特征在于,所述加载模块包括收发子模块,用于当所述第一判断模块的判断结果为否时,向页面交换进程发送携带 了所述操作地址的缺页请求;接收所述页面交换进程从所述磁盘中读取并发送的所述操作 地址对应的页面;加载子模块,用于将所述操作地址对应的页面加载到本地内存数据库。
13.如权利要求8、9、10或12所述的备用服务器,其特征在于,还包括检测模块,用于检测输入的内存数据库状态切换指令;第一处理模块,用于在所述检测模块检测到内存数据库状态切换指令时,停止接收重 做日志,将未处理重做日志写入日志文件;创建完整的本地内存数据库,将所述磁盘存储的 页面加载到本地内存数据库;第二处理模块,用于解析所述未处理重做日志,获得所述未处理重做日志的操作地址 和修改数据;将所述未处理重做日志的修改数据同步到本地内存数据库中的所述未处理重 做日志的操作地址对应的页面中;修改本地内存数据库状态标志为主用状态。
14.一种内存数据库的容灾系统,其特征在于,包括备用服务器和至少一个主用服务 器,所述备用服务器和主用服务器之间以可通信方式相连;所述主用服务器,用于向备用服务器发送携带了操作地址以及修改数据的重做日志;所述备用服务器,用于接收所述主用服务器发送的携带了操作地址以及修改数据的重 做日志;解析所述重做日志,获得所述操作地址以及修改数据;判断所述操作地址对应的 页面是否在本地内存数据库中,若否,从磁盘中获取所述操作地址对应的页面,并加载到本 地内存数据库;将所述修改数据同步到所述操作地址对应的页面中。
15.如权利要求14所述的容灾系统,其特征在于,所述备用服务器,还用于当所述操作地址对应的页面不在本地内存数据库时,进一步 判断当前是否满足页面写入条件,若满足,则将本地内存数据库中满足预设条件的页面写入磁盘,从磁盘中获取所述操作地址对应的页面,并加载到本地内存数据库。
16.如权利要求15所述的容灾系统,其特征在于,所述的备用服务器根据至少下述条 件之一判断当前是否满足页面写入条件本地内存数据库不存在空闲页面、当前系统运行 达到指定时间以及接收重做日志的次数达到指定次数。
17.如权利要求15或16所述的容灾系统,其特征在于,所述的备用服务器具体用于将 本地内存数据库中的存储时间达到预设值的页面写入磁盘;和/或,用于将本地内存数据 库中满足最近最少使用LRU淘汰算法的页面写入磁盘。
18.如权利要求14或15或16所述的容灾系统,其特征在于,所述备用服务器,还用于检测输入的内存数据库状态切换指令,停止接收重做日志,将 未处理重做日志写入日志文件;创建完整的本地内存数据库,将所述磁盘存储的页面加载 到本地内存数据库;解析所述未处理重做日志,获得所述未处理重做日志的操作地址和修 改数据;将所述未处理重做日志的修改数据同步到本地内存数据库中的所述未处理重做日 志的操作地址对应的页面中;修改本地内存数据库状态标志为主用状态。
全文摘要
本发明实施例涉及存储领域,公开了一种内存数据库的容灾方法、备用服务器及系统,该方法包括接收主用服务器发送的携带了操作地址以及修改数据的重做日志;解析上述重做日志,获得上述操作地址以及修改数据;判断上述操作地址对应的页面是否在本地内存数据库中,若否,从上述磁盘中获取上述操作地址对应的页面,并加载到本地内存数据库中;将上述修改数据同步到上述操作地址对应的页面。本发明实施例不仅可以降低内存数据库的容灾成本,还可以减少备用服务器内存的占用,达到内存数据库的N+1容灾的目的。
文档编号G06F17/30GK102043686SQ20091020550
公开日2011年5月4日 申请日期2009年10月20日 优先权日2009年10月20日
发明者张耿 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1