一种多个子数据库与中心库之间同步或初始化的方法与流程

文档序号:15445860发布日期:2018-09-14 23:21阅读:511来源:国知局

本发明涉及数据库领域,特别是数据库的同步与初始化处理方法。



背景技术:

传统多个数据库同步到中心库或者数据库根据中心库内容初始化的方法都是采用etl工具,此方式一对一处理,不够灵活、容错性能差,即使能实现多对一同步,但要实现实时并不容易。而且这个同步是需要持续的,在出现网络偶尔中断等异常情况下要将目标库上的数据恢复至正常很难做到。

其中,初始化处理是要将子数据库中的数据与中心库中的数据进行批量对比,修正不符的数据,使得两者数据保持一致,同步处理一般指的是增量同步,将子数据库中的增量修改(增、删、改)过的数据同步到中心库,传统的同步或者初始化处理过程都有严重的滞后性,不能做到实时处理。



技术实现要素:

为解决上述技术问题,本发明的目的是提供一种多个子数据库与中心库之间灵活、高效同步或初始化处理的方法。

本发明采用的技术方案是:

一种多个子数据库与中心库之间同步或初始化的方法,包括中心库以及若干个能够对内部数据进行增删改操作的子数据库;

将需要同步或初始化的子数据库依次添加到队列中;位于队列头部的至少两个子数据库分别对应地进入线程池中的不同的线程;每个线程中判断子数据库是需要初始化处理还是同步处理;若需要初始化处理,则将子数据库中的数据与中心库的数据对比,修正子数据库中与中心库不符的数据,并且为该子数据库添加增删改的触发器以及相应的自定义日志表;若需要同步处理,则将子数据库中自定义日志表记录的增删改过的数据更新到中心库中,并删除自定义日志表中对应该增删改的记录;

将已完成初始化处理还是同步处理的子数据库返回队列尾部。

对子数据库的数据进行增删改操作后,通过触发器添加主键以及增删改类型到自定义日志表中。

在子数据库进入线程池中的线程时,判断子数据库是否为可用,若否,则结束执行该子数据库的线程,若是,则进入判断子数据库是需要初始化处理还是同步处理的步骤中。

通过同步工具检测子数据库是否存在人为修改成不可用状态或者无法连接状态,若存在,则将子数据库设置为不可用。

通过同步工具检测是否有新增的子数据库,并且将新增的子数据库添加到队列的尾部。

本发明的有益效果:

本发明多个子数据库与中心库之间同步或初始化处理的方法,对需要同步或初始化的子数据库依次添加到队列中,然后按顺序将子数据库放入线程池中,每个线程对应一个子数据库处理,先判断子数据库是需要同步还是初始化,若是初始化,则将子数据库中的数据与中心库的数据对比,修正子数据库中与中心库不符的数据,若是同步,则将子数据库中自定义日志表记录的增删改过的数据更新到中心库中,同时删除自定义日志表中对应该增删改的记录信息,防止重新触发子数据库与中心库关于此增删改操作的同步处理。

本设计通过队列排序以及线程池中多个线程的并行处理,实现多个子数据库与中心库之间的同步与初始化处理,使得处理方式更加灵活高效,同时本设计的同步过程为增量同步,即使出现网络中断等异常情况,子数据库中的自定义日志表没有受影响,在恢复正常后,中心库对应数据很快就能恢复至正常状态,不需要人工干预。

附图说明

下面结合附图对本发明的具体实施方式做进一步的说明。

图1是本发明同步或者初始化方法的基本流程图。

图2是本发明其一同步或者初始化方法的流程图。

具体实施方式

如图1、图2所示,本发明一种多个子数据库与中心库之间同步或初始化的方法,包括中心库以及若干个能够对内部数据进行增删改操作的子数据库,在网站配置页面中能够根据用户需要增加子数据库以及子数据库中需要同步的表名,由此在中心库中也需要增加与子数据库中需要同步的表名对应的同步表,子数据库与中心库之间可进行初始化或者同步操作;

其中,将需要同步或初始化的子数据库依次添加到队列中;位于队列头部的至少两个子数据库分别对应地进入线程池中的不同的线程;每个线程中判断子数据库是需要初始化处理还是同步处理;若需要初始化处理,则将子数据库中的数据与中心库的数据对比,修正子数据库中与中心库不符的数据,并且为该子数据库添加增删改的触发器以及相应的自定义日志表;若需要同步处理,则将子数据库中自定义日志表记录的增删改过的数据更新到中心库中,并删除自定义日志表中对应该增删改操作的记录信息;将已完成初始化处理还是同步处理的子数据库返回队列尾部。

在进行同步操作前,子数据库都会先经过初始化操作,所有需要同步的表在初始化运行时会添加针对增删改的触发器,同时在对子数据库中的数据进行增删改操作后,通过触发器添加主键以及增删改类型到自定义日志表中。

对需要同步或初始化的子数据库依次添加到队列中,然后按顺序将子数据库放入线程池中,每个线程对应一个子数据库处理,先判断子数据库是需要同步还是初始化,若是初始化,则将子数据库中的数据与中心库的数据对比,修正子数据库中与中心库不符的数据,若是同步,则将子数据库中自定义日志表记录的增删改过的数据更新到中心库中,同时删除自定义日志表中对应该增删改的记录信息,防止重新触发子数据库与中心库关于此增删改操作的同步处理。

本设计通过队列排序以及线程池中多个线程的并行处理,实现多个子数据库与中心库之间的同步与初始化处理,使得处理方式更加灵活高效,同时本设计的同步过程为增量同步,即使出现网络中断等异常情况,子数据库中的自定义日志表没有受影响,在恢复正常后,中心库对应数据很快就能恢复至正常状态,不需要人工干预。

进一步地,如图2所示,用户在操作时,可能会新增子数据库,本设计在运行过程中还会通过同步工具检测是否有新增的子数据库,并且将新增的子数据库添加到队列的尾部,从而通过初始化处理添加触发器以及触发器产生自定义日志表,同步工具是一款异构数据库之间数据同步的工具,目前支持的数据库有:access、sqlserver、oracle、db2、sybasease11-15,mysql等等,此处也可以通过cdc、历史记录表等审计功能来实现。

同时,在实际运行中,用户能够对子数据库进行修改,将子数据库修改为不可用状态,或者在内部处理中,子数据库无法连接等情况,此处通过同步工具检测子数据库是否存在人为修改成不可用状态或者无法连接状态(即失效状态),若存在,则将子数据库设置为不可用,此处可通过修改自定义日志表的方式实现。

在子数据库进入线程池中的线程时,判断子数据库是否为可用,若否,则结束执行该子数据库的线程,若是,才会进入判断子数据库是需要初始化处理还是同步处理的步骤中。

此方式在现有的子数据库出现不可用的情况后,进行设置,同时在进行同步处理前,及时结束该子数据库的线程,保证运行速度的高效。

以上所述仅为本发明的优先实施方式,本发明并不限定于上述实施方式,只要以基本相同手段实现本发明目的的技术方案都属于本发明的保护范围之内。



技术特征:

技术总结
本发明公开了一种多个子数据库与中心库之间同步或初始化的方法,包括中心库以及若干个子数据库;将需要同步或初始化的子数据库依次添加到队列中;位于队列头部的至少两个子数据库分别对应地进入线程池中的不同的线程;每个线程中判断子数据库是需要初始化处理还是同步处理;若需要初始化处理,则将子数据库中的数据与中心库的数据对比,修正子数据库中与中心库不符的数据,并且为该子数据库添加增删改的触发器以及相应的自定义日志表;若需要同步处理,则将子数据库中自定义日志表记录的增删改过的数据更新到中心库中,并删除自定义日志表中对应该增删改的记录;本设计处理方法灵活高效,网络出现异常,受到的影响较小,适应性强。

技术研发人员:余敬龙
受保护的技术使用者:广东能龙教育股份有限公司
技术研发日:2018.03.27
技术公布日:2018.09.14
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1