一种通过备用数据库实现主备数据库同步的方法与设备与流程

文档序号:12596353阅读:394来源:国知局
一种通过备用数据库实现主备数据库同步的方法与设备与流程

本申请涉及计算机领域,尤其涉及一种用于通过备用数据库实现主备数据库同步的技术。



背景技术:

随着大数据时代的来临,数据处理量的激增带动了数据库的发展,一般采用主数据库以及备用数据库共同保障数据库的高可靠性,为保障数据安全不丢失,往往数据库的主数据库与备用数据库之间采用同步模式进行数据备份,其中,主备数据库同步过程中需要将主数据库的数据更改同步至备用数据库,现有技术通过将主数据库记录有数据更改信息的日志发送至备库,并从备用数据库的缓存区或磁盘读取数据页,根据日志对所读取的备用数据库的数据页做出相应更改后重新存储至备用数据库的缓存区或磁盘中的方法进行同步。

然而,现有技术从备用数据库的缓存区或磁盘读取数据页的操作会较为耗时,使得备用数据库同步主数据库的数据更改速度较慢,对主备同步数据库的性能有一定负面影响。



技术实现要素:

本申请的一个目的是提供一种用于通过备用数据库实现主备数据库同步的方法与设备,用以解决主备数据库在同步数据时对备用数据库数据页更改操作较为耗时的问题。

为实现上述目的,根据本申请的一个方面,本申请提供了一种用于通过备用数据库实现主备数据库同步的方法,该方法解决了主备数据库在同步数据时对备用数据库数据页更改操作较为耗时的问题,该方法包括:

接收主数据库发送至备用数据库的数据更新日志,其中,所述数据更新日志包括对应的完整数据页及数据更新信息;

回放所述数据更新日志,并在回放过程中执行数据恢复操作,其中,所 述数据恢复操作包括:

利用所述完整数据页及数据更新信息形成新数据页,并存储所述新数据页以覆盖对应的旧数据页。

根据本申请的另一个方面,本申请提供了一种用于通过备用数据库实现主备数据库同步的设备,该设备解决了主备数据库在同步数据时对备用数据库数据页更改操作较为耗时的问题,该设备包括:

日志接受装置,用于接收主数据库发送至备用数据库的数据更新日志,其中,所述数据更新日志包括对应的完整数据页及数据更新信息;

日志回放装置,用于回放所述数据更新日志,并在回放过程中执行数据恢复操作,其中,所述数据恢复操作包括:

利用所述完整数据页及数据更新信息形成新数据页,并存储所述新数据页以覆盖对应的旧数据页。

与现有技术相比,本申请接收主数据库发送至备用数据库的包括对应的完整数据页及数据更新信息的数据更新日志,回放数据更新日志,利用数据更新日志中的完整数据页及数据更新信息形成新数据页,并存储所述新数据页以覆盖备用数据库中的旧数据页,解决了主备数据库在同步数据时因为需要先在备用数据库读取数据页方可结合主库发送至备用数据库的更新日志进行更改操作而导致的备用数据库数据页更改较为耗时的问题,提高了主备数据库的性能,提升备用数据库更改的速度。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出根据本申请一个方面的一种用于通过备用数据库实现主备数据库同步的方法流程图;

图2示出根据本申请另一个优选实例的一种用于通过备用数据库实现主备数据库同步的方法流程图;

图3示出根据本申请另一个方面的一种用于通过备用数据库实现主备数据库同步的设备示意图;

图4示出根据本申请另一个优选实例的一种用于通过备用数据库实现主备数据库同步的设备示意图;

图5示出根据本申请另一个优选实例的通过备用数据库实现主备数据库同步示意图。

图6示出根据本申请另一个优选实例的主数据库与所述备用数据库共享存储时通过备用数据库实现主备数据库同步示意图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本申请作进一步详细描述。

在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

图1示出根据本申请一个方面的一种用于通过备用数据库实现主备数据库同步的方法流程图。包括步骤S1以及步骤S2。

其中,在步骤S1中设备1接收主数据库发送至备用数据库的数据更新日 志,其中,所述数据更新日志包括对应的完整数据页及数据更新信息;在步骤S2中设备1回放所述数据更新日志,并在回放过程中执行数据恢复操作,其中,所述数据恢复操作包括:利用所述完整数据页及数据更新信息形成新数据页,并存储所述新数据页以覆盖对应的旧数据页。

具体地,在步骤S1中设备1接收主数据库发送至备用数据库的数据更新日志,其中,所述数据更新日志包括对应的完整数据页及数据更新信息。其中,所述数据更新日志为主数据在数据发生更改后形成的日志,例如,图5中的REDO日志文件。所述数据更新信息记录有数据库中数据页的更改内容,如数据页中的偏移量以及该偏移处更新的内容,例如,图5中REDO日志中的“部分脏页”记录INSERT插入操作以及插入在数据页的哪个位置与插入的内容。所述对应的完整数据页是指记录对应主数据库存储的数据内容,包括更新后的完整数据页或更新前的完整数据页,例如图5中所示的REDO日志文件中的脏页是更新前的完整数据页,或更新后的完整数据页即图中的FULL脏页,例如,某次修改将某记录的某字段值由9改为10,则可以保存带有值9的更新前的完整数据页,也可以保存更新后的完整数据页,其中,所述更新日志中若存储更新后的完整数据页,则无需单独存储数据更新信息,因为更新后的完整数据页已经包括了更新的内容,因此可放入一条数据更新日志存放,所述更新日志中若存储更新前的完整数据页,则需要存储数据更新信息,所述对应的完整数据页以及数据更新信息可跟别放入两条数据更新日志中。在主备数据库同步模式下,备用数据库不断接受主数据库发送来的所述数据更新日志,从而直接获取所述完整数据页,无需从备用数据库的现有存储中读取完整数据页,从而免去备用数据库在使用完整数据页时读取存储的时间,提升同步时的速度和效率。

本领域技术人员应能理解上述将完整数据页以及数据更新信息存放入日志的方式仅为举例,其他现有的或今后可能出现的将完整数据页以及数据更新信息存放入日志的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

接着,在步骤S2中设备1回放所述数据更新日志,并在回放过程中执行数据恢复操作,其中,所述数据恢复操作包括:利用所述完整数据页及数据 更新信息形成新数据页,并存储所述新数据页以覆盖对应的旧数据页。其中,所述回放是指备用数据库接收所述数据更新日志后,根据所述数据更新日志进行数据更新,使备用数据库的数据状态与主库保持一致。所述数据恢复是指使得备用数据库中的数据与主数据库更新后的数据恢复到一致的状态,即将主数据库的更新合入到备用数据库中。所述数据恢复操作包括:利用所述完整数据页及数据更新信息形成新数据页,并存储所述新数据页以覆盖对应的旧数据页,从而使得主数据库的数据库更新信息同步存储至备用数据库,又因为所述完整数据页由日志中直接取得,因此可以提高回放日志的速度。

优选地,所述利用所述完整数据页及数据更新信息形成新数据页:当所述数据更新日志中完整数据页为更新前的完整数据页,则结合所述数据更新日志中的所述数据更新信息中所记载的数据页中的偏移量和在该偏移处更新的内容,对更新前的完整数据页进行相应更改,更改完成后在备用数据库中存储更新后的完整数据页以覆盖对应的旧数据页;当所述数据更新日志中完整数据页为更新后的完整数据页,则直接存储更新后的完整数据页以覆盖对应的旧数据页,其中,更新后的完整数据页可放入备用数据库的缓存区,并被定期存储到磁盘,例如图5中备用数据库利用REDO日志文件中脏页形成FULL脏页并存储在数据共享缓存区。

更优选地,当若干所述数据更新日志对应同一数据页均有更新,则后面的日志回放时,可把第一个日志回放时形成的数据页从存储区域例如缓存区中取出,然后根据后面的更新日志中的数据更新信息对其进行数据更改和同步。若到某一时间点,备用数据库中的缓存区无法存放回放日志所形成的更新后的完整数据页,则需要将它们全部或部分写入磁盘,从而释放缓存区,当再次遇到对应这些页的日志,可从磁盘重新读出它们来回放日志,从而节约备用数据库同步主数据库数据更新的速度。

本领域技术人员应能理解上述回放数据更新日志进行数据恢复操作的方式仅为举例,其他现有的或今后可能出现的回放数据更新日志进行数据恢复操作的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

优选地,所述主数据库与所述备用数据库共享存储。即主数据库和备用 数据库共享同一份数据,当备用数据库回放所述数据更新日志,并在回放过程中执行数据恢复操作时,无需读取共享存储即可保持与主数据库同步,备用数据库仅需将形成的更新后的完整数据页存储在共享缓存区,不需要写共享存储,例如,图6中所示,备用数据库利用REDO日志中的脏页获得更新后的完整数据页,并存储在数据库共享缓存区,如此,可节约写共享存储的时间,提升在共享存储的主备数据库同步情况下的同步速度和效率。

优选地,所述存储所述新数据页以覆盖对应的旧数据页包括:

将所述新数据页存储于所述备用数据库的缓存区以覆盖对应的旧数据页。更新后的完整数据页可放入备用数据库缓存区或在主备数据库共享存储架构中放入数据库共享缓存区,例如图6中备用数据库利用REDO日志文件中脏页形成FULL脏页并存储在数据共享缓存区,从而可以在下次数据库需要使用所述更新后的完整数据页时可直接在缓存区仅需读取,例如之后的若干日志对数据页进行读取,进而根据数据更新信息进行数据页的更新同步,直接在读取缓存区的数据页使得读取速率提升,更新速度加快。当共享缓存区的空间不够无法存放数据页,则可将它们全部或部分写入磁盘,释放缓冲区,当再次需要使用写入磁盘的数据页时,则从磁盘进行读取。

优选地,所述利用所述完整数据页及数据更新信息形成新数据页包括:优先利用所述数据更新日志在所述主数据库与所述备用数据库的共享缓存区中对应的完整数据页及所述数据更新日志中的数据更新信息形成新数据页。当所述主数据库与所述备用数据库共享存储,备用数据库优先使用已存在于共享缓存区对应的需要更新的完整数据页,例如在图6中所示的FULL脏页和REDO日志文件的部分脏页共同形成更新后的新数据页,优先利用共享缓存区中对应的完整数据页使得在主备同步时优先使用的数据页是最容易和快速读取的,从而使得同步的进程加快。

本领域技术人员应能理解上述读取缓存区数据页的方式仅为举例,其他现有的或今后可能出现的读取缓存区数据页的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

更优选地,所述利用所述完整数据页及数据更新信息形成新数据页还包括:当所述数据更新日志对应的完整数据页在所述共享缓存区中不存在时, 利用所述数据更新日志中的完整数据页及数据更新信息形成新数据页。接上文所述,当所需要更新的数据页在共享缓存区无法找到时,到备用数据库所接受的来自主数据库的所述数据更新日志中读取对应的需要进行更新的更新前的完整数据页或直接读取所述数据更新日志中的更新后的完整数据页,例如图6中所示的共享缓存区的FULL脏页不存在则使用REDO日志文件中的FULL脏页来构造FULL脏页,如果需要恢复REDO日志文件的部分脏页,则需要读取脏页暂存文件中对应的FULL脏页一起来构造脏页,从而依然能够以较快的速度获得对应的完整数据页,进而完成主备数据库的同步。

本领域技术人员应能理解上述根据所述数据更新日志读取数据页的方式仅为举例,其他现有的或今后可能出现的根据所述数据更新日志读取数据页的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

图2示出根据本申请另一个优选实例的一种用于通过备用数据库实现主备数据库同步的方法流程图。包括步骤S1、步骤S2以及步骤S3。

其中,在步骤S1中设备1接收主数据库发送至备用数据库的数据更新日志,其中,所述数据更新日志包括对应的完整数据页及数据更新信息;在步骤S2中设备1当触发预置检查点时,回放对应上一检查点后新增的所述数据更新日志,并在回放过程中执行数据恢复操作,其中,所述数据恢复操作包括:利用所述上一检查点后形成并存储的完整数据页,以及所述数据更新日志中的数据更新信息,形成新数据页并存储所述新数据页以覆盖对应的旧数据页;在步骤S3中设备1当所述缓存区满时,淘汰所述缓存区中的数据页,并将被淘汰的数据页记录于所述备用数据库的本地持久化存储。

在此,图1中的步骤S1与图2中的步骤S1相同或相似,不再进行赘述。

具体地,在步骤S2中设备1当触发预置检查点时,将对应上一检查点后数据更改所对应的数据页存入所述数据更新日志,回放所述数据更新日志,并在回放过程中执行数据恢复操作,其中,所述数据恢复操作包括:利用所述上一检查点后形成并存储的完整数据页,以及所述数据更新日志中的数据更新信息,形成新数据页并存储所述新数据页以覆盖对应的旧数据页。其中,所述预置检查点是定义的数据库定期的检查点,用以周期性或满足一定条件 时进行检查所对应的检查的数据页是否有更新的操作。优选地,触发条件可以是如下一种或几种:时间间隔,即每隔一定时间例如1分钟触发一次;存储的在缓冲区的完整数据页数量,即完整数据页数量的数量或其占共享缓冲区的内存总量的比例超过一定预置阈值,例如超过缓存区内存总量的百分之三十;数据更新日志产生量,即产生的日志文件总大小超过一定预置阈值,例如1G。在阈值检查点被触发后,只需对上一次检查点后第一次做更改的数据页进行读取和保存,并存储完整数据页到数据更新日志中,进而同步至备用数据库进行结合数据更新日志的数据更新信息同步,形成新数据页并覆盖备用数据库中的旧数据页,若一个数据页在两个检查点之间被多次修改,只需在第一次被修改时,存储完整数据页。在共享存储架构下,主数据库库触发检查点并完成后,将检查点对应数据页等信息放入所述数据更新日志,传给备用数据库,备用数据库接收后,即可不再在内存或本地存储中保留之前生成的对应数据页,当处理新的SQL请求需要使用数据页时,可以从共享存储中取得最新的数据页。所述检查点可以让备库丢弃已保存的脏页,非共享存储模式下,若将数据页不断写入数据表中,则不需要考虑检查点。

本领域技术人员应能理解上述根据所述数据更新日志读取数据页的方式仅为举例,其他现有的或今后可能出现的根据所述数据更新日志读取数据页的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

接着,在步骤S3中设备1当所述缓存区满时,淘汰所述缓存区中的数据页,并将被淘汰的数据页进行存储。即当数据库共享缓存区空间不够时,将缓存区中的数据页淘汰,在共享存储模式下,存入临时本地存储;非共享存储下,存入数据表,即与主库对应的物理文件中,从而完成主备数据库数据的同步。例如,图6中所示的将数据库共享缓存区的脏页刷出,刷出的脏页记录到本地的持久化存储也就是脏页暂存文件中,但是不需要再次写到共享存储,当被刷出的脏页再次涉及主数据库更新需要在备用数据库同步时,从本地持久化存储读取,优选地,本地持久化存储的脏页需要存储到到下一个检查点开始的时刻,从而保持文件数量不过大。从空间不够的缓存区淘汰数 据页并进行存储的方式使得缓存区保存的数据页控制在一定数量,避免因为存储过多而影响数据库其它需要使用缓存区的功能。

本领域技术人员应能理解上述淘汰数据页的方式仅为举例,其他现有的或今后可能出现的淘汰数据页的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

优选地,所述方法还包括步骤S4(未示出),在步骤S4中设备1对于所述备用数据库发起的SQL请求,优先从所述共享缓存区中查找对应数据。当备库发起读SQL请求时,优先从共享缓存区寻找数据页,优选地,若共享缓存区不存在需要的数据页,则在本地持久化存储中寻找数据页,若本地持久化缓存不存在需要的数据页,则在数据文件中进行寻找,例如,图6所示在暂存文件中的检查点之后产生的脏页中未找到所需脏页,则到数据文件中进行查找,其中,在本地持久化存储中寻找数据页是检查点之前的数据页,到数据文件中进行查找是检查点之前的页,从而避免循环查找,提高查找效率。依据一定的优先级朝找数据页可使得读取数据页过程高效有序。

本领域技术人员应能理解上述在主备数据库中查找数据的方式仅为举例,其他现有的或今后可能出现的在主备数据库中查找数据的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

图3示出根据本申请另一个方面的一种用于通过备用数据库实现主备数据库同步的设备示意图。所述设备1包括日志接受装置11以及日志回放装置12。

其中,日志接受装置11接收主数据库发送至备用数据库的数据更新日志,其中,所述数据更新日志包括对应的完整数据页及数据更新信息;日志回放装置12回放所述数据更新日志,并在回放过程中执行数据恢复操作,其中,所述数据恢复操作包括:利用所述完整数据页及数据更新信息形成新数据页,并存储所述新数据页以覆盖对应的旧数据页。

具体地,日志接受装置11接收主数据库发送至备用数据库的数据更新日志,其中,所述数据更新日志包括对应的完整数据页及数据更新信息。其中, 所述数据更新日志为主数据在数据发生更改后形成的日志,例如,图5中的REDO日志文件。所述数据更新信息记录有数据库中数据页的更改内容,如数据页中的偏移量以及该偏移处更新的内容,例如,图5中REDO日志中的“部分脏页”记录INSERT插入操作以及插入在数据页的哪个位置与插入的内容。所述对应的完整数据页是指记录对应主数据库存储的数据内容,包括更新后的完整数据页或更新前的完整数据页,例如图5中所示的REDO日志文件中的脏页是更新前的完整数据页,或更新后的完整数据页即图中的FULL脏页,例如,某次修改将某记录的某字段值由9改为10,则可以保存带有值9的更新前的完整数据页,也可以保存更新后的完整数据页,其中,所述更新日志中若存储更新后的完整数据页,则无需单独存储数据更新信息,因为更新后的完整数据页已经包括了更新的内容,因此可放入一条数据更新日志存放,所述更新日志中若存储更新前的完整数据页,则需要存储数据更新信息,所述对应的完整数据页以及数据更新信息可跟别放入两条数据更新日志中。在主备数据库同步模式下,备用数据库不断接受主数据库发送来的所述数据更新日志,从而直接获取所述完整数据页,无需从备用数据库的现有存储中读取完整数据页,从而免去备用数据库在使用完整数据页时读取存储的时间,提升同步时的速度和效率。

本领域技术人员应能理解上述将完整数据页以及数据更新信息存放入日志的方式仅为举例,其他现有的或今后可能出现的将完整数据页以及数据更新信息存放入日志的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

接着,日志回放装置12回放所述数据更新日志,并在回放过程中执行数据恢复操作,其中,所述数据恢复操作包括:利用所述完整数据页及数据更新信息形成新数据页,并存储所述新数据页以覆盖对应的旧数据页。其中,所述回放是指备用数据库接收所述数据更新日志后,根据所述数据更新日志进行数据更新,使备用数据库的数据状态与主库保持一致。所述数据恢复是指使得备用数据库中的数据与主数据库更新后的数据恢复到一致的状态,即将主数据库的更新合入到备用数据库中。所述数据恢复操作包括:利用所述完整数据页及数据更新信息形成新数据页,并存储所述新数据页以覆盖对应 的旧数据页,从而使得主数据库的数据库更新信息同步存储至备用数据库,又因为所述完整数据页由日志中直接取得,因此可以提高回放日志的速度。

优选地,所述利用所述完整数据页及数据更新信息形成新数据页:当所述数据更新日志中完整数据页为更新前的完整数据页,则结合所述数据更新日志中的所述数据更新信息中所记载的数据页中的偏移量和在该偏移处更新的内容,对更新前的完整数据页进行相应更改,更改完成后在备用数据库中存储更新后的完整数据页以覆盖对应的旧数据页;当所述数据更新日志中完整数据页为更新后的完整数据页,则直接存储更新后的完整数据页以覆盖对应的旧数据页,其中,更新后的完整数据页可放入备用数据库的缓存区,并被定期存储到磁盘,例如图5中备用数据库利用REDO日志文件中脏页形成FULL脏页并存储在数据共享缓存区。

更优选地,当若干所述数据更新日志对应同一数据页均有更新,则后面的日志回放时,可把第一个日志回放时形成的数据页从存储区域例如缓存区中取出,然后根据后面的更新日志中的数据更新信息对其进行数据更改和同步。若到某一时间点,备用数据库中的缓存区无法存放回放日志所形成的更新后的完整数据页,则需要将它们全部或部分写入磁盘,从而释放缓存区,当再次遇到对应这些页的日志,可从磁盘重新读出它们来回放日志,从而节约备用数据库同步主数据库数据更新的速度。

本领域技术人员应能理解上述回放数据更新日志进行数据恢复操作的方式仅为举例,其他现有的或今后可能出现的回放数据更新日志进行数据恢复操作的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

优选地,所述主数据库与所述备用数据库共享存储。即主数据库和备用数据库共享同一份数据,当备用数据库回放所述数据更新日志,并在回放过程中执行数据恢复操作时,无需读取共享存储即可保持与主数据库同步,备用数据库仅需将形成的更新后的完整数据页存储在共享缓存区,不需要写共享存储,例如,图6中所示,备用数据库利用REDO日志中的脏页获得更新后的完整数据页,并存储在数据库共享缓存区,如此,可节约写共享存储的时间,提升在共享存储的主备数据库同步情况下的同步速度和效率。

优选地,所述存储所述新数据页以覆盖对应的旧数据页包括:

将所述新数据页存储于所述备用数据库的缓存区以覆盖对应的旧数据页。更新后的完整数据页可放入备用数据库数据库缓存区或在主备数据库共享存储架构中放入数据库共享缓存区,例如图6中备用数据库利用REDO日志文件中脏页形成FULL脏页并存储在数据共享缓存区,从而可以在下次数据库需要使用所述更新后的完整数据页时可直接在缓存区仅需读取,例如之后的若干日志对数据页进行读取,进而根据数据更新信息进行数据页的更新同步,直接在读取缓存区的数据页使得读取速率提升,更新速度加快。当共享缓存区的空间不够无法存放数据页,则可将它们全部或部分写入磁盘,释放缓冲区,当再次需要使用写入磁盘的数据页时,则从磁盘进行读取。

优选地,所述利用所述完整数据页及数据更新信息形成新数据页包括:优先利用所述数据更新日志在所述主数据库与所述备用数据库的共享缓存区中对应的完整数据页及所述数据更新日志中的数据更新信息形成新数据页。当所述主数据库与所述备用数据库共享存储,备用数据库优先使用已存在于共享缓存区对应的需要更新的完整数据页,例如在图6中所示的FULL脏页和REDO日志文件的部分脏页共同形成更新后的新数据页,优先利用共享缓存区中对应的完整数据页使得在主备同步时优先使用的数据页是最容易和快速读取的,从而使得同步的进程加快。

本领域技术人员应能理解上述读取缓存区数据页的方式仅为举例,其他现有的或今后可能出现的读取缓存区数据页的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

更优选地,所述利用所述完整数据页及数据更新信息形成新数据页还包括:当所述数据更新日志对应的完整数据页在所述共享缓存区中不存在时,利用所述数据更新日志中的完整数据页及数据更新信息形成新数据页。接上文所述,当所需要更新的数据页在共享缓存区无法找到时,到备用数据库所接受的来自主数据库的所述数据更新日志中读取对应的需要进行更新的更新前的完整数据页或直接读取所述数据更新日志中的更新后的完整数据页,例如图6中所示的共享缓存区的FULL脏页不存在则使用REDO日志文件中的FULL脏页来构造FULL脏页,如果需要恢复REDO日志文件的部分脏页, 则需要读取脏页暂存文件中对应的FULL脏页一起来构造脏页,从而依然能够以较快的速度获得对应的完整数据页,进而完成主备数据库的同步。

本领域技术人员应能理解上述根据所述数据更新日志读取数据页的方式仅为举例,其他现有的或今后可能出现的根据所述数据更新日志读取数据页的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

图4示出根据本申请另一个优选实例的一种用于通过备用数据库实现主备数据库同步的设备示意图。所述设备1包括日志接受装置21、日志回放装置22以及缓存区淘汰装置23。

其中,日志接受装置21接收主数据库发送至备用数据库的数据更新日志,其中,所述数据更新日志包括对应的完整数据页及数据更新信息;日志回放装置22当触发预置检查点时,回放对应上一检查点后新增的所述数据更新日志,并在回放过程中执行数据恢复操作,其中,所述数据恢复操作包括:利用所述上一检查点后形成并存储的完整数据页,以及所述数据更新日志中的数据更新信息,形成新数据页并存储所述新数据页以覆盖对应的旧数据页;缓存区淘汰装置23当所述缓存区满时,淘汰所述缓存区中的数据页,并将被淘汰的数据页记录于所述备用数据库的本地持久化存储。

在此,图3中的日志接受装置11与图4中的日志接受装置21相同或相似,不再进行赘述。

具体地,日志回放装置22当触发预置检查点时,将对应上一检查点后数据更改所对应的数据页存入所述数据更新日志,回放所述数据更新日志,并在回放过程中执行数据恢复操作,其中,所述数据恢复操作包括:利用所述上一检查点后形成并存储的完整数据页,以及所述数据更新日志中的数据更新信息,形成新数据页并存储所述新数据页以覆盖对应的旧数据页。其中,所述预置检查点是定义的数据库定期的检查点,用以周期性或满足一定条件时进行检查所对应的检查的数据页是否有更新的操作。优选地,触发条件可以是如下一种或几种:时间间隔,即每隔一定时间例如1分钟触发一次;存储的在缓冲区的完整数据页数量,即完整数据页数量的数量或其占共享缓冲区的内存总量的比例超过一定预置阈值,例如超过缓存区内存总量的百分之 三十;数据更新日志产生量,即产生的日志文件总大小超过一定预置阈值,例如1G。在阈值检查点被触发后,只需对上一次检查点后第一次做更改的数据页进行读取和保存,并存储完整数据页到数据更新日志中,进而同步至备用数据库进行结合数据更新日志的数据更新信息同步,形成新数据页并覆盖备用数据库中的旧数据页,若一个数据页在两个检查点之间被多次修改,只需在第一次被修改时,存储完整数据页。在共享存储架构下,主数据库库触发检查点并完成后,将检查点对应数据页等信息放入所述数据更新日志,传给备用数据库,备用数据库接收后,即可不再在内存或本地存储中保留之前生成的对应数据页,当处理新的SQL请求需要使用数据页时,可以从共享存储中取得最新的数据页。所述检查点可以让备库丢弃已保存的脏页,非共享存储模式下,若将数据页不断写入数据表中,则不需要考虑检查点。

本领域技术人员应能理解上述根据所述数据更新日志读取数据页的方式仅为举例,其他现有的或今后可能出现的根据所述数据更新日志读取数据页的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

接着,缓存区淘汰装置23当所述缓存区满时,淘汰所述缓存区中的数据页,并将被淘汰的数据页进行存储。即当数据库共享缓存区空间不够时,将缓存区中的数据页淘汰,在共享存储模式下,存入临时本地存储;非共享存储下,存入数据表,即与主库对应的物理文件中,从而完成主备数据库数据的同步。例如,图6中所示的将数据库共享缓存区的脏页刷出,刷出的脏页记录到本地的持久化存储也就是脏页暂存文件中,但是不需要再次写到共享存储,当被刷出的脏页再次涉及主数据库更新需要在备用数据库同步时,从本地持久化存储读取,优选地,本地持久化存储的脏页需要存储到到下一个检查点开始的时刻,从而保持文件数量不过大。从空间不够的缓存区淘汰数据页并进行存储的方式使得缓存区保存的数据页控制在一定数量,避免因为存储过多而影响数据库其它需要使用缓存区的功能。

本领域技术人员应能理解上述淘汰数据页的方式仅为举例,其他现有的或今后可能出现的淘汰数据页的方式如可适用于本申请,也应包含在本 申请保护范围以内,并在此以引用方式包含于此。

优选地,所述设备1还包括优先查找装置24(未示出),所述优先查找装置24用于对于所述备用数据库发起的SQL请求,优先从所述共享缓存区中查找对应数据。当备库发起读SQL请求时,优先从共享缓存区寻找数据页,优选地,若共享缓存区不存在需要的数据页,则在本地持久化存储中寻找数据页,若本地持久化缓存不存在需要的数据页,则在数据文件中进行寻找,例如,图6所示在暂存文件中的检查点之后产生的脏页中未找到所需脏页,则到数据文件中进行查找,其中,在本地持久化存储中寻找数据页是检查点之前的数据页,到数据文件中进行查找是检查点之前的页,从而避免循环查找,提高查找效率。依据一定的优先级朝找数据页可使得读取数据页过程高效有序。

本领域技术人员应能理解上述在主备数据库中查找数据的方式仅为举例,其他现有的或今后可能出现的在主备数据库中查找数据的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存 储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1