一种数据库备份方法、装置及系统与流程

文档序号:11807736阅读:212来源:国知局
一种数据库备份方法、装置及系统与流程

本发明涉及计算机技术领域,特别涉及一种数据库备份方法、装置及系统。



背景技术:

随着计算机在数据分析应用领域的不断深入,数据库使用需求范围逐步扩大,数据库在应用系统中占有的地位和作用愈加重要。因此,在基于数据库系统的开发使用中,需要注重数据库的安全问题。比如,保障数据库安全的最佳方案就是及时做好数据备份。

目前,对于源数据库中执行的任意操作,均可以记录在源数据库的日志文件中。通过将该日志文件发送给其他数据库,其他数据库可以根据该日志文件执行同样的操作处理,从而与源数据库保持一致,以实现数据库的备份。

由于日志文件的占用空间通常较大,故直接发送日志文件的实现方式会占用较多的网络资源。



技术实现要素:

本发明提供了一种数据库备份方法、装置及系统,能够减少对网络资源的占用。

为了达到上述目的,本发明是通过如下技术方案实现的:

第一方面,本发明提供了一种数据库备份方法,包括:

根据源数据库的日志文件,获取其中的每一项写操作对应的记录信息;

根据获取的所述每一项写操作对应的记录信息,确定其中的至少一类记录信息,且每一类记录信息对应于同一写操作类型;

根据每一类记录信息对应的写操作类型,建立该类记录信息的共用索引,并对该类记录信息进行压缩;

将压缩后的每一类记录信息发送给所述源数据库对应的目标数据库。

进一步地,所述写操作类型包括:insert(插入)、update(更新)、delete(删除)、for update(更新)中的至少一种。

进一步地,所述对该类记录信息进行压缩,包括:根据建立的该类记录信息的共用索引,删除该类记录信息中的与所述共用索引相同的内容,以对该类记录信息进行压缩。

进一步地,所述将压缩后的每一类记录信息发送给所述源数据库对应的目标数据库,包括:生成具有固定格式的包括压缩后的每一类记录信息的压缩日志文件,并将所述压缩日志文件发送给所述源数据库对应的目标数据库。

第二方面,本发明提供了一种数据库备份装置,包括:

获取单元,用于根据源数据库的日志文件,获取其中的每一项写操作对应的记录信息;

确定单元,用于根据获取的所述每一项写操作对应的记录信息,确定其中的至少一类记录信息,且每一类记录信息对应于同一写操作类型;

压缩单元,用于根据每一类记录信息对应的写操作类型,建立该类记录信息的共用索引,并对该类记录信息进行压缩;

发送单元,用于将压缩后的每一类记录信息发送给所述源数据库对应的目标数据库。

进一步地,所述写操作类型包括:insert、update、delete、for update中的至少一种。

进一步地,所述压缩单元,具体用于根据建立的该类记录信息的共用索引,删除该类记录信息中的与所述共用索引相同的内容,以对该类记录信息进行压缩。

进一步地,所述发送单元,具体用于生成具有固定格式的包括压缩后的每一类记录信息的压缩日志文件,并将所述压缩日志文件发送给所述源数据库对应的目标数据库。

第三方面,本发明提供了一种数据库备份系统,包括:

源数据库、与所述源数据库对应的目标数据库,以及上述任一所述的数据库备份装置,其中,

所述目标数据库,用于接收所述数据库备份装置发来的压缩后的每一类记录信息;根据所述压缩后的每一类记录信息,执行对应的写操作。

进一步地,所述目标数据库,还用于根据预先确定的双向心跳探测机制和心跳请求时间间隔,周期性地向所述源数据库发送心跳请求;接收所述源数据库返回的心跳包;判断所述心跳包中包括的信息是否与预先确定的信息相同,若否,确定所述源数据库出现故障。

进一步地,所述目标数据库,具体用于接收所述源数据库返回的心跳包,且所述心跳包中携带有所述源数据库对应的MAC(Media Access Control,媒体访问控制)地址;根据接收到的所述源数据库对应的MAC地址和自身对应的MAC地址,执行哈希算法,得到当前的哈希值;判断所述当前的哈希值是否与预先确定的标准值相同,若否,确定所述源数据库出现故障。

进一步地,所述目标数据库,还用于当判断出未接收到所述源数据库返回的心跳包时,确定当前的心跳请求时间间隔,且所述当前的心跳请求时间间隔小于对应的上一个心跳请求时间间隔,基于所述当前的心跳请求时间间隔,向所述源数据库发送心跳请求,并如此循环;在判断出连续至少两次未接收到所述源数据库返回的心跳包时,确定所述源数据库出现故障。

本发明提供了一种数据库备份方法、装置及系统,根据源数据库的日志文件,获取其中的每一项写操作对应的记录信息;根据获取的每一项写操作对应的记录信息,确定其中的至少一类记录信息,且每一类记录信息对应于同一写操作类型;根据每一类记录信息对应的写操作类型,建立该类记录信息的共用索引,并对该类记录信息进行压缩;将压缩后的每一类记录信息发送给源数据库对应的目标数据库。目标数据库根据接收到的记录信息,通过执行对应的写操作,可以实现源数据库的备份。与日志文件相比,压缩后的记录信息的占用空间显著减小,故记录信息的发送可以占用较少的网络资源。因此,本发明能够减少对网络资源的占用。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一实施例提供的一种数据库备份方法的流程图;

图2是本发明一实施例提供的另一种数据库备份方法的流程图;

图3是本发明一实施例提供的一种数据库备份装置的示意图;

图4是本发明一实施例提供的一种数据库备份系统的示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供了一种数据库备份方法,可以包括以下步骤:

步骤101:根据源数据库的日志文件,获取其中的每一项写操作对应的记录信息。

步骤102:根据获取的所述每一项写操作对应的记录信息,确定其中的至少一类记录信息,且每一类记录信息对应于同一写操作类型。

步骤103:根据每一类记录信息对应的写操作类型,建立该类记录信息的共用索引,并对该类记录信息进行压缩。

步骤104:将压缩后的每一类记录信息发送给所述源数据库对应的目标数据库。

本发明实施例提供了一种数据库备份方法,根据源数据库的日志文件,获取其中的每一项写操作对应的记录信息;根据获取的每一项写操作对应的记录信息,确定其中的至少一类记录信息,且每一类记录信息对应于同一写操作类型;根据每一类记录信息对应的写操作类型,建立该类记录信息的共用索引,并对该类记录信息进行压缩;将压缩后的每一类记录信息发送给源数据库对应的目标数据库。目标数据库根据接收到的记录信息,通过执行对应的写操作,可以实现源数据库的备份。与日志文件相比,压缩后的记录信息的占用空间显著减小,故记录信息的发送可以占用较少的网络资源。因此,本发明能够减少对网络资源的占用。

在本发明的一个实施例中,所述写操作类型包括:insert、update、delete、for update中的至少一种。

详细地,写操作对应的SQL(Structured Query Language,结构化查询语言)语句中可以包括insert、update、delete、for update中的至少一种关键字,且每一种关键字对应于一种写操作类型。

在本发明的一个实施例中,为了说明一种记录信息的压缩方式,所以,所述对该类记录信息进行压缩,包括:根据建立的该类记录信息的共用索引,删除该类记录信息中的与所述共用索引相同的内容,以对该类记录信息进行压缩。

详细地,通过将同一类记录信息中的与相应共用索引相同的内容进行删除,可以释放该部分内容所占用的空间资源,以使该类记录信息的占用空间量减小。

在本发明的一个实施例中,所述将压缩后的每一类记录信息发送给所述源数据库对应的目标数据库,包括:生成具有固定格式的包括压缩后的每一类记录信息的压缩日志文件,并将所述压缩日志文件发送给所述源数据库对应的目标数据库。

详细地,在对每一类记录信息进行压缩操作后,可以生成具有固定格式的压缩日志文件,且该压缩日志文件中可以包括每一类压缩后的记录信息。通过将压缩日志文件发送至目标数据库,目标数据库可以根据该压缩日志文件,执行与源数据库相同的每一项写操作,从而完成从源数据库到目标数据库的备份。

如图2所示,本发明一个实施例提供了另一种数据库备份方法,该方法以基于日志的数据库备份及故障检测管理方法为例,具体包括以下步骤:

步骤201:在统一的资源管理平台中创建一个资源管理组,且该资源管理组中包括源数据库和目标数据库。

详细地,当需要对源数据库进行备份时,可以将该源数据库和待备份的目标数据库设置于同一资源管理平台的同一资源管理组中。

本实施例中,源数据库和目标数据库可以为一对一的对应关系。

此外,在本发明一个实施例中,一个目标数据库可以对应于至少一个源数据库,以实现数据备份的聚合,该目标数据库可以作为每一个源数据库的镜像;以及一个源数据库可以对应于至少一个目标数据库,以实现数据备份的广播,每一个目标数据库均可以作为源数据库的镜像。

步骤202:在本地主机上创建与源数据库对应的数据库空间,在目的端主机上创建与目标数据库对应的数据库空间。

为了实现目标数据库对源数据库的备份,可以在一个主机上创建源数据库所需的数据库空间,以及在另一主机上创建目标数据库所需的数据库空间。

详细地,创建的目标数据库对应的数据库空间可以不小于创建的源数据库对应的数据库空间。通常情况下,可以设置两个数据库空间大小相等,目标数据库可以为源数据库的实时复制的镜像。

如上所述,在本发明一个实施例中,当一个目标数据库对应多个源数据库时,目标数据库的数据库空间应不小于该多个源数据库的数据库空间的总和;当一个源数据库对应多个目标数据库时,每一个目标数据库的数据库空间均应不小于源数据库的数据库空间。

步骤203:获取源数据库的日志文件,并获取该日志文件中的每一项写操作对应的记录信息。

详细地,写操作类型可以包括:insert、update、delete、for update中的至少一种。

由于源数据库的日志文件空间占用量大,直接发送日志文件会占用较多的网络资源,故可以仅提取该日志文件中的必要信息,如可以对写操作对应的记录信息进行截取。

步骤204:根据获取的每一项写操作对应的记录信息,确定其中的至少一类记录信息,且每一类记录信息对应于同一写操作类型。

由于不同类型的写操作对应的执行方式不同,故可以将获取到的全部写操作对应的记录信息进行分类。

步骤205:根据每一类记录信息对应的写操作类型,建立该类记录信息的共用索引,并根据建立的该共用索引,删除该类记录信息中的与该共用索引相同的内容,以对该类记录信息进行压缩。

对于每一类记录信息,该类记录信息中的每一项记录信息中均包括相同的索引内容。当具有相同索引内容的记录信息的项数较多时,该索引内容会占用较多的日志资源,故可以根据每一类记录信息中包括的索引内容,建立该类记录信息的共用索引,并将该类记录信息中的与该共用索引相同的索引内容进行筛除,以实现该类记录信息的压缩。

步骤206:生成具有固定格式的包括压缩后的每一类记录信息的压缩日志文件,并将压缩日志文件发送给源数据库对应的目标数据库。

为方便源数据库的实时备份,可以生成压缩日志文件,该压缩日志文件包括压缩后的每一类记录信息,且该压缩日志文件具有系统可识别的固定格式。

与最初获取的源数据库的日志文件相比,生成的压缩日志文件的数据量大大减小。例如,通常情况下,压缩日志文件的数据量可以为原日志文件的1/4左右。由此可见,压缩日志文件的占用空间大大减小,数据备份时,压缩日志文件的联网传输相应的也会占用较少的基础带宽和网络资源。

详细地,压缩日志文件的发送可以在亚秒一级的数量级上进行。

步骤207:目标数据库在接收到压缩日志文件时,根据该压缩日志文件执行对应的写操作。

详细地,目标数据库可以对接收到的压缩日志文件进行解压缩,并根据解压出的日志执行每一项写操作。通过执行每一项写操作,可以使目标数据库执行与源数据库相同的修改,故实现从源数据库到目标数据库的备份。

本发明实施例中,通过对源数据库的日志文件进行压缩,并将压缩后的日志文件传输至目标数据库,以实现从源数据库至目标数据库的实时备份。这一实现方式可以消耗较少的数据库资源,为数据库的实时同步提供便利,故可以为一种高效的数据库备份方法。

步骤208:目标数据库根据预先确定的双向心跳探测机制和心跳请求时间间隔,周期性地向源数据库发送心跳请求。

本发明实施例中,可以根据实际需求,确定适宜的心跳请求时间间隔,如10s,即每10s进行一次故障检测,以便于源数据库故障时能够及时检测到该故障情况,并执行相应故障处理。

步骤209:达到心跳请求时间间隔对应的心跳包接收时间时,目标数据库判断其是否接收到源数据库返回的心跳包,若是,执行步骤212,否则,执行步骤210。

目标数据库每10s接收一次源数据库发来的心跳包,由于判断源数据库故障可以有两种实现方式:一是连续多次未接收到心跳包,二是接收到的心跳包错误,因此在再次达到10s间隔时,目标数据库首先可以判断其是否接收到心跳包。

在本发明一个实施例中,同时可以由源数据库向目标数据库发送心跳请求,以判断目标数据库是否出现故障。由于与目标数据库的心跳请求可以基于同一实现原理,故在此不作赘述。

在本发明一个实施例中,当一端检测到已达到心跳包接收时间,但未接收到另一端发来的心跳包时,如一端在10s内ping不通对端时,就会发出报警,并记录此时故障情况。

步骤210:判断是否连续三次未接收到源数据库返回的心跳包,若是,确定源数据库出现故障,并结束当前流程,否则,执行步骤211。

本实施例中,可以设定连续三次未接收到心跳包时,即可以认为源数据库出现故障。当然,根据不同的实际需求,同样可以确定为其他连续次数。

当目标数据库判断出未接收到心跳包时,可以进一步判断是否连续三次未接收到心跳包,若判断结果为是,则可以直接确定源数据库出现故障,若判断结果为否,则可以再次尝试获取心跳包。

步骤211:确定当前的心跳请求时间间隔,且当前的心跳请求时间间隔小于对应的上一个心跳请求时间间隔,并基于确定的当前的心跳请求时间间隔,向源数据库发送心跳请求,并执行步骤209。

若当前为第一次未接收到心跳包,则可以确定上一个心跳请求时间间隔为10s,并确定当前的心跳请求时间间隔小于10s,比如为5s,并基于确定的5s为间隔,再次获取心跳包。对应地,若达到5s时间间隔时未接收到心跳包,则当前为第二次未接收到心跳包,则可以确定上一个心跳请求时间间隔为5s,并确定当前的心跳请求时间间隔小于5s,比如为2s,并基于确定的2s为间隔,再次获取心跳包。

因此,本实施例中,可以设置三次均未接收到心跳包所对应的心跳请求时间间隔可以依次为10s、5s和2s。即,当达到10s间隔却未接收到心跳包时,以5s间隔再次获取心跳包,若仍未接收到心跳包,再以2s间隔再次获取心跳包,若这三次均未接收到心跳包,则可以直接确定源数据库出现故障。

正常情况下,可以设置相对较长的心跳请求时间间隔,以周期性检测源数据库是否处于正常工作状态。但当检测到未接收到源数据库发来的心跳包时,可以通过心跳请求时间间隔依次递减的实现方式,快速验证源数据库是否出现故障,以便于能够及时发现故障并解除故障。

步骤212:目标数据库根据源数据库返回的心跳包,判断该心跳包中包括的信息是否与预先确定的信息相同,若是,确定源数据库工作正常,否则,确定源数据库出现故障。

当目标数据库接收到心跳包时,可以判断心跳包是否错误。

详细地,本发明实施例中,源数据库发来的心跳包中可以携带有源数据库对应的MAC地址,目标数据库可以根据接收到的源数据库对应的MAC地址和自身对应的MAC地址,执行哈希算法,得到当前的哈希值。然后,判断得到的当前的哈希值是否与预先确定的标准值相同,若是,可以确定源数据库工作正常,否则,可以确定源数据库出现故障。

在本发明一个实施例中,目标数据库可以向源数据库发送固定内容的心跳包,源数据库可以根据预先确定的数据更改规则,对该固定内容进行固定更改,并将更改后的心跳包发送给目标数据库,若目标数据库判断出该固定更改正确,则可以确定源数据库工作正常,否则,可以确定源数据库出现故障。

详细地,数据库间的数据同步和数据库故障检测,可以基于数据库日志、双向心跳机制和两端间的网络通信得以进行。此外,管理人员还可以通过统一的管理平台对整个同步过程进行监控,以及根据管理平台的日志进行异常问题的及时发现和及时处理。这一实现方式可以实现对本地数据库进行镜像复制、异地容灾的高安全和高可用性等功能。

基于本发明实施例的实现方式,可以在异构的IT基础结构之间实现大量数据亚秒一级的实时复制,其中,该异构的IT基础结构可以包括几乎所有常用操作系统平台和数据库平台。因此,本发明实施例可以在应急系统、在线报表、实时数据仓库供应、交易跟踪、数据同步、集中/分发、容灾、数据库升级和移植、双业务中心等各种场景下进行应用。此外,还可以实现一对一、一对多、多对一、双向、点对点、级联等多种灵活的拓扑结构。

如图3所示,本发明一个实施例提供了一种数据库备份装置30,包括:

获取单元301,用于根据源数据库的日志文件,获取其中的每一项写操作对应的记录信息;

确定单元302,用于根据获取的所述每一项写操作对应的记录信息,确定其中的至少一类记录信息,且每一类记录信息对应于同一写操作类型;

压缩单元303,用于根据每一类记录信息对应的写操作类型,建立该类记录信息的共用索引,并对该类记录信息进行压缩;

发送单元304,用于将压缩后的每一类记录信息发送给所述源数据库对应的目标数据库。

在本发明一个实施例中,所述写操作类型包括:insert、update、delete、for update中的至少一种。

在本发明一个实施例中,所述压缩单元303,具体用于根据建立的该类记录信息的共用索引,删除该类记录信息中的与所述共用索引相同的内容,以对该类记录信息进行压缩。

在本发明一个实施例中,所述发送单元304,具体用于生成具有固定格式的包括压缩后的每一类记录信息的压缩日志文件,并将所述压缩日志文件发送给所述源数据库对应的目标数据库。

如图4所示,本发明实施例提供了一种数据库备份系统,包括:

源数据库40、与所述源数据库40对应的目标数据库50,以及上述任一所述的数据库备份装置30,其中,

所述目标数据库50,用于接收所述数据库备份装置30发来的压缩后的每一类记录信息;根据所述压缩后的每一类记录信息,执行对应的写操作。

在本发明一个实施例中,一个所述源数据库40可以对应于至少一个所述目标数据库50;以及一个所述目标数据库50可以对应于至少一个所述源数据库40。此外,所述数据库备份装置30可以对应于至少一组所述源数据库40和所述目标数据库50的组合。

在本发明一个实施例中,所述目标数据库50,进一步用于根据预先确定的双向心跳探测机制和心跳请求时间间隔,周期性地向所述源数据库发送心跳请求;接收所述源数据库返回的心跳包;判断所述心跳包中包括的信息是否与预先确定的信息相同,若否,确定所述源数据库出现故障。

在本发明一个实施例中,所述目标数据库50,具体用于接收所述源数据库返回的心跳包,且所述心跳包中携带有所述源数据库对应的MAC地址;根据接收到的所述源数据库对应的MAC地址和自身对应的MAC地址,执行哈希算法,得到当前的哈希值;判断所述当前的哈希值是否与预先确定的标准值相同,若否,确定所述源数据库出现故障。

在本发明一个实施例中,所述目标数据库50,进一步用于当判断出未接收到所述源数据库返回的心跳包时,确定当前的心跳请求时间间隔,且所述当前的心跳请求时间间隔小于对应的上一个心跳请求时间间隔,基于所述当前的心跳请求时间间隔,向所述源数据库发送心跳请求,并如此循环;在判断出连续至少两次未接收到所述源数据库返回的心跳包时,确定所述源数据库出现故障。

上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

综上所述,本发明的各个实施例至少具有如下有益效果:

1、本发明实施例中,根据源数据库的日志文件,获取其中的每一项写操作对应的记录信息;根据获取的每一项写操作对应的记录信息,确定其中的至少一类记录信息,且每一类记录信息对应于同一写操作类型;根据每一类记录信息对应的写操作类型,建立该类记录信息的共用索引,并对该类记录信息进行压缩;将压缩后的每一类记录信息发送给源数据库对应的目标数据库。目标数据库根据接收到的记录信息,通过执行对应的写操作,可以实现源数据库的备份。与日志文件相比,压缩后的记录信息的占用空间显著减小,故记录信息的发送可以占用较少的网络资源。因此,本发明能够减少对网络资源的占用。

2、本发明实施例中,通过对源数据库的日志文件进行压缩,并将压缩后的日志文件传输至目标数据库,以实现从源数据库至目标数据库的实时备份。这一实现方式可以消耗较少的数据库资源,为数据库的实时同步提供便利,故可以为一种高效的数据库备份方法。

3、本发明实施例中,正常情况下,可以设置相对较长的心跳请求时间间隔,以周期性检测源数据库是否处于正常工作状态。但当检测到未接收到源数据库发来的心跳包时,可以通过心跳请求时间间隔依次递减的实现方式,快速验证源数据库是否出现故障,以便于能够及时发现故障并解除故障。

4、本发明实施例中,基于本发明实施例的实现方式,可以在异构的IT基础结构之间实现大量数据亚秒一级的实时复制,其中,该异构的IT基础结构可以包括几乎所有常用操作系统平台和数据库平台。因此,本发明实施例可以在应急系统、在线报表、实时数据仓库供应、交易跟踪、数据同步、集中/分发、容灾、数据库升级和移植、双业务中心等各种场景下进行应用。此外,还可以实现一对一、一对多、多对一、双向、点对点、级联等多种灵活的拓扑结构。

需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个〃·····”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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