一种双活数据库容灾系统及方法与流程

文档序号:16999945发布日期:2019-03-02 01:42阅读:292来源:国知局
一种双活数据库容灾系统及方法与流程

本发明涉及数据库容灾领域,具体涉及一种双活数据库容灾系统及方法。



背景技术:

现有技术多采用磁盘阵列、或者数据库内部提供的快照或事务日志等方法实现,比如专利申请号为201310213591.6的一种数据库容灾方法、系统及服务器,采用磁盘阵列物理硬件解决,成本居高,中小企业现实中难以实施,采用数据库内部提供的快照或者事务日志并不通用只依赖于某一数据库,另外使用快照或事务日志运行效率较低,难以实现双活要求,同时数据库必须在归档模式下运行,且生成大量的事务日志信息,不便于维护,同时运行效率低。



技术实现要素:

本发明的目的在于针对现有技术的不足,提供一种双活数据库容灾系统及方法,通过中间层软件系统方法实现数据库双活容灾备份,确保数据库数据安全,同时不间断的对外提供数据服务。

为了解决上述技术问题,采用如下技术方案:

一种双活数据库容灾系统,包括目标数据库、备用数据库、容灾模块和应用层数据控制模块,所述容灾模块分别与所述目标数据库和备用数据库相连接,所述目标数据库与所述应用层数据控制模块相连接;

所述目标数据库为应用层数据控制模块正常使用的数据库;

所述备用数据库为目标数据库出现故障时应用层数据控制模块要切换的数据库;

所述应用层数据控制模块负责整个系统应用层对目标数据库的读写操作;

所述容灾模块负责从目标数据库的数据实时增量备份到备用数据库。

进一步,所述目标数据库建立有目标数据库关系表,所述目标数据库关系表包括目标数据库操作副表和目标数据库主表,所述目标数据库操作副表和目标数据库主表相对应。

进一步,所述备用数据库建立有备用数据库关系表,所述备用数据库关系表包括备用数据库操作副表和备用数据库主表,所述备用数据库操作副表和备用数据库主表相对应。

进一步,所述读写操作的操作类型包括插入、更新和删除。

一种双活数据库容灾方法,包括以下步骤:

(a)容灾模块在实时扫描目标数据库中的目标数据库操作副表,如果目标数据库操作副表中存在有记录,容灾模块根据目标数据库副表中的主键和操作类型从目标数据库主表中获取主键对应的数据记录,将所述数据记录按照对目标数据库主表的操作类型同步更新到备用数据库主表中。

(b)应用层数据控制模块在运行过程中和目标数据库保持连接,如果目标数据库出现故障,不能提供数据服务,应用层数据控制模块连通备用数据库,备用数据库和目标数据库互换角色,原备用数据库为目标数据库,原目标数据库为备用数据库,容灾模块停止工作。

(c)通过人工维修原目标数据库,故障修复后,开启容灾模块,容灾模块仍然按照步骤(a)操作目标数据库和备用数据库。

(d)如果备用数据库出现故障,容灾模块无法将目标数据库的数据更新到备用数据库而停止工作,应用层数据控制模块不受对外服务的影响,通过人工维修备用数据库,然后再开启容灾模块,容灾模块依然按照步骤(a)处理目标数据库和备用数据库。

由于采用上述技术方案,具有以下有益效果:

(1)本发明方法不依赖于任何一种数据库软件,完全通过中间层软件实现,通用性强。

(2)本发明不依赖于任何硬件实现数据库双活,实现成本低。

(3)本发明和数据库提供的内部技术相比,不需要数据库在归档模式下运行,无大量的事务日志生成,大大提高数据库的执行效率。

附图说明

下面结合附图对本发明作进一步说明:

图1为本发明中一种双活数据库容灾系统的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明了,下面通过附图及实施例,对本发明进行进一步详细说明。但是应该理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。

如图1所示,一种双活数据库容灾系统,包括目标数据库、备用数据库、容灾模块和应用层数据控制模块,所述容灾模块分别与所述目标数据库和备用数据库相连接,所述目标数据库与所述应用层数据控制模块相连接。

所述目标数据库为应用层数据控制模块正常使用的数据库。

所述备用数据库为目标数据库出现故障时应用层数据控制模块要切换的数据库。

目标数据库和备用数据库必须分别对应一台物理主机,目标数据库和备用数据库可以在同一个机房,也可以在异地机房;目标数据库和备用数据库表在保持一致的状态下启动;目标数据库和备用数据库的每张关系表必须有主键,没有主键的表不适用于本系统;

所述应用层数据控制模块负责整个系统应用层对目标数据库的读写操作,所述读写操作的操作类型包括插入、更新和删除。

应用层数据控制模块对目标数据库主表进行插入、更新操作时,同时将主表中操作的主键和对应的操作类型写入主表对应的副表中,操作类型包括插入、更新和删除;

所述容灾模块负责从目标数据库的数据实时增量备份到备用数据库。容灾模块是独立的一个系统模块,可以单独对应一台物理主机,也可以和备用数据库、目标数据库或者应用层系统同属一台物理主机。

具体地,所述目标数据库建立有目标数据库关系表,所述目标数据库关系表包括目标数据库操作副表和目标数据库主表,所述目标数据库操作副表和目标数据库主表相对应。所述备用数据库建立有备用数据库关系表,所述备用数据库关系表包括备用数据库操作副表和备用数据库主表,所述备用数据库操作副表和备用数据库主表相对应。

参看下表1,目标数据库和备用数据库中的其中一张主表,有5个字段组成,第一个字段是主键。

表1

参看表2,目标数据库和备用数据库与表1的主表对应的副表,有两个字段组成,第一个字段是主表的主键,第二个字段是对应主表的主键的操作类型,有0:插入记录,1:更新记录,2:删除记录。

表2

一种双活数据库容灾方法,包括以下步骤:

(a)容灾模块在实时扫描目标数据库中的目标数据库操作副表,如果目标数据库操作副表中存在有记录,容灾模块根据目标数据库副表中的主键和操作类型从目标数据库主表中获取主键对应的数据记录,将所述数据记录按照对目标数据库主表的操作类型同步更新到备用数据库主表中,操作类型包括插入、更新和删除;如果目标数据库副表记录的是删除操作类型,容灾控制模块直接删除备用数据库中主表中主键对应的记录,容灾控制模块在对备用数据库的主表操作完毕后,删除目标数据库中副表中已经操作过的记录。容灾模块实时循环扫描目标数据库中的所有副表,发现副表有数据记录就执行上述操作,以确保目标数据库和备用数据库的数据保持一致

(b)应用层数据控制模块在运行过程中和目标数据库保持连接,对数据库的所有表的操作都是在目标数据库中完成,如果目标数据库出现故障,不能提供数据服务,应用层数据控制模块连通备用数据库,备用数据库和目标数据库互换角色,原备用数据库为目标数据库,原目标数据库为备用数据库,容灾模块停止工作。

(c)通过人工维修原目标数据库,故障修复后,开启容灾模块,容灾模块仍然按照步骤(a)操作目标数据库和备用数据库。

(d)如果备用数据库出现故障,容灾模块无法将目标数据库的数据更新到备用数据库而停止工作,应用层数据控制模块不受对外服务的影响,通过人工维修备用数据库,然后再开启容灾模块,容灾模块依然按照步骤(a)处理目标数据库和备用数据库。

综上,无论目标数据库和备用数据库所对应的物理机,任何一台出现故障,都不影响应用层控制模块的工作,保持应用层数据控制模块持续不断的提供对外服务。

对应表1和表2的主表和副表,实施一种双活数据库容灾方法,包括以下步骤:

第1步:应用层数据控制模块在启动时保持和目标数据库连接,(a)应用层数据控制模块对目标数据库的图1主表的插入新记录操作:目标数据库表1新记录的主键和操作类型0,同时插入到表2的副表中,也就是副表新记录mem_account字段为主表对应的新记录的主键,oper_type字段为0;(b)应用层数据控制模块对目标数据库表1主表的更新操作:目标数据库表1表更新记录的主键和操作类型1,同时插入到表2的副表中,也就是副表新记录mem_account字段为主表对应的更新记录的主键,oper_type字段为1;(c)应用层数据控制模块对目标数据库表1表的删除操作:目标数据库表1表删除记录的主键和操作类型2,同时插入到表2副表中,也就是副表新记录mem_account字段为主表对应的删除记录的主键,oper_type字段为2;(d)应用层数据控制模块对目标数据库图1表的查询操作:副表不做任何变动。

第2步:容灾模块启动后,连接目标数据库和备用数据库,实时扫描目标数据库的表2副表,根据目标数据库表2副表的oper_type的数值有三中操作类型如下:(a)oper_type为0,表示是对目标数据库表1主表的插入新记录操作,根据目标数据库表2副表mem_account的值,从目标数据库表1主表获取到新数据记录,同时插入到备用数据库的表1的主表中,操作完毕后删除目标数据库表2副表中对应的记录;(b)oper_type为1,表示是对目标数据库表1主表的更新记录操作,根据目标数据库表2副表mem_account的值,从目标数据库表1主表获取到更新数据记录,同时更新到备用数据库的表1的主表中,操作完毕后删除目标数据库表2副表中对应的记录;(c)oper_type为2,表示是删除记录,容灾模块根据从目标数据库表2副表中,获取主键然后删除备用数据库表1的主表中。容灾模块通过以上操作方法,实现数据库的增量从目标数据库表1数据更新到备用数据库的表1中。

第3步:如果目标数据库出现故障,应用层数据控制模块从目标数据库切换到备用数据库,根据图1连接到备用数据库,实现应用层不中断的持续对外服务,应用层数据控制模块切换成功后,目标数据库和备用数据库也切换角色,原目标数据库为备用数据库,原备用数据库为目标数据库,然后通过技术人员维修备用数据库(原目标数据库)故障,使其恢复正常,恢复正常后,并开启容灾模块,容灾模块依然按照第二步骤工作。

第3步:如果备用服务器出现故障,通过技术人员排查故障,使其恢复正常,恢复正常后,开启容灾模块,容灾模块依然按照第二步骤工作,备用服务器恢复后仍作为备用数据库服务器。

以上仅为本发明的具体实施例,但本发明的技术特征并不局限于此。任何以本发明为基础,为解决基本相同的技术问题,实现基本相同的技术效果,所作出地简单变化、等同替换或者修饰等,皆涵盖于本发明的保护范围之中。

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