一种数据同步方法、系统和存储介质与流程

文档序号:18985806发布日期:2019-10-29 04:23阅读:163来源:国知局
一种数据同步方法、系统和存储介质与流程

本发明涉及数据同步技术领域统,尤其涉及一种数据同步方法、系统和存储介质。



背景技术:

当前,各级政府部门自建或垂直建设了不少政务应用,在某些情况下一些部门需要共享其他部门的政务数据,比如纪委监察平台需要监督各部门政务服务效能就需要抽取各部门业务数据进行分析判断,这就需要将各部门业务数据同步给到纪委的监察平台,目前市场常用的数据同步方案均存有同步失败后丢失数据的情况,或者长时间未同步致使同步不稳定的问题。



技术实现要素:

为了解决上述技术问题,本发明的目的是提供一种通过同步队列进行数据同步的方法、系统和存储介质。

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

一种数据同步系统,包括主数据库、数据库触发器、同步队列和至少一个客户端数据库,所述主数据库中存储有多个同步数据,所述同步队列上设有与各同步数据对应的数据库表;

所述数据库触发器用于监听主数据库,并在监听到主数据库的同步数据发送事件操作时,触发生成触发信息,以及将触发信息发送至对应的数据库表中;

所述同步队列用于结合触发信息和数据库表从主数据库中获取同步数据,并根据获得的同步数据对客户端数据库进行同步操作。

进一步,所述同步数据的表名与对应的数据库表的表名相同,所述数据库表内记录有数据主键、同步状态信息和触发事件标识。

进一步,所述事件操作至少包括增加数据操作、删除数据操作和更改数据操作三种操作类型中的一种。

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

一种数据同步方法,包括以下步骤:

对主数据库进行监听,并在监听到主数据库的同步数据发送事件操作时,触发生成触发信息,以及将触发信息发送至对应的数据库表中;

结合触发信息和数据库表从主数据库中获取同步数据,并根据获得的同步数据对客户端数据库进行同步操作。

进一步,所述同步数据的表名与对应的数据库表的表名相同,所述数据库表内记录有数据主键、同步状态信息和触发事件标识。

进一步,所述事件操作至少包括增加数据操作、删除数据操作和更改数据操作三种类型中的一种。

进一步,所述触发信息包括表名信息、事件类型信息和同步数据的状态信息,所述将触发信息发送至对应的数据库表中这一步骤,具体为:

根据表名信息获取对应的数据库表;

根据事件类型信息修改数据库表内的触发事件标识,以及根据状态信息修改数据库表内的同步状态信息。

进一步,所述结合触发信息和数据库表从主数据库中获取同步数据,并根据获得的同步数据对客户端数据库进行同步操作这一步骤,具体包括以下步骤:

根据同步状态信息触发同步队列启动预设的同步程序;

根据数据库表内的数据主键从主数据库中获取同步数据,并结合触发事件标识和获取的数据对客户端数据库进行同步操作。

进一步,所述结合触发事件标识和获取的数据对客户端数据库进行同步操作这一步骤,具体为:

依次结合触发事件标识和获取的数据对客户端数据库进行同步操作;

判断是否同步操作是否成功,若成功,删除获取的同步数据;反之,结束同步操作,并将同步状态信息设置为失败状态。

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

一种存储介质,其中存储有处理器可执行的指令,所述处理器可执行的指令在由处理器执行时用于执行如上所述方法。

本发明的有益效果是:本发明通过监听和同步队列的方式进行实时同步,即将外部触发的数据增量加入同步队列,基于数据库层面进行数据同步,性能较快且容错性好,能够防止数据同步中丢失数据。

附图说明

图1是本发明一种数据同步系统的结构框图;

图2是本发明一种数据同步方法的步骤流程图;

图3是具体实施例一中一种数据同步方法的步骤流程图;

图4是具体实施例二中一种数据同步系统的结构框图。

具体实施方式

如图1所示,本实施例提供了一种数据同步系统,包括主数据库、数据库触发器、同步队列和至少一个客户端数据库,所述主数据库中存储有多个同步数据,所述同步队列上设有与各同步数据对应的数据库表;

所述数据库触发器用于监听主数据库,并在监听到主数据库的同步数据发送事件操作时,触发生成触发信息,以及将触发信息发送至对应的数据库表中;

所述同步队列用于结合触发信息和数据库表从主数据库中获取同步数据,并根据获得的同步数据对客户端数据库进行同步操作。

本实施例中,所述主数据库即是需要将数据同步给所述客户端数据库,针对表行级数据进行同步。所述数据库触发器建立在主数据库需要同步的表上,用于对主数据库进行监听,并在监听到主数据库内发生事件操作时,触发生成触发信息,如果数据库触发器只需对某些事件操作产生触发,则需要在数据库触发器中设置过滤条件,以实现只有满足条件的数据方可触发。所述同步队列为与主数据库用户在同一个数据库实例上的另一个数据库用户,其内部设有数据库表,这些数据库表与同步数据一一对应匹配,比如各数据库表的字段内记录有与之对应的同步数据的信息。

数据库触发器实时对主数据库进行监听,并判断主数据库的同步数据是不是发生了事件操作,所述发送事件操作主要为外部触发主数据库事件,具体可以是通过系统应用操作数据实现,也可以直接在数据库触发事件来实现。当监听到某同步数据发送事件操作时,触发预设的生成程序,并生成触发信息,将生成的触发信息发送至发生事件操作对应的数据库表中。当同步队列接收到触发信息,说明主数据库出现了需要同步的数据,同步队列根据触发信息启动预设的同步程序,读取获取数据库表内的记录数据,由于主数据库的同步数据与同步队列的数据库表一一对应,因此同步队列可以根据数据库表获得需要同步的同步数据。获得需要同步的同步数据后,根据同步数据对客户端数据库进行同步操作,比如同步增加客户端数据库的数据,或者同步删减客户端数据库的数据等。其中,图1中客户端数据库1代表第一个客户端数据库,客户端数据库2代表第二个客户端数据库,客户端数据库n代表第n个客户端数据库。

本实施例系统中,将数据同步需要进行的繁琐配置进行封装,且实现了系统处理全覆盖,减少了人工配置及维护。另外,数据同步基于数据库事务,保证了数据同步的容错性,避免数据同步过程中丢失数据。

进一步作为优选的实施方式,所述同步数据的表名与对应的数据库表的表名相同,所述数据库表内记录有数据主键、同步状态信息和触发事件标识。

进一步作为优选的实施方式,所述事件操作至少包括增加数据操作、删除数据操作和更改数据操作三种操作类型中的一种。

在数据库触发器上增加insert(插入)、update(修改)、delete(删除)等过滤条件,用于监听同步数据是否插入了新的数据、修改了数据或删除了数据,当监听到对应的事件操作后,生成触发信息,其他的事件操作则不进行触发。

如图2所示,本实施例提供了一种数据同步方法,包括以下步骤:

s1、对主数据库进行监听,并在监听到主数据库的同步数据发送事件操作时,触发生成触发信息,以及将触发信息发送至对应的数据库表中;

s2、结合触发信息和数据库表从主数据库中获取同步数据,并根据获得的同步数据对客户端数据库进行同步操作。

在本实施例方法中,实时对主数据库进行监听,当监听到主数据库内发生事件操作时,触发生成触发信息。同步队列结合触发信息和数据库表获取需要用于同步指客户端数据库的同步数据,并将同步数据写入客户端数据库。本实施例方法中,实时监听数据,能够进行快速地同步,且数据同步基于数据库事务,保证了数据同步的容错性,避免数据同步过程中丢失数据。

其中,所述同步数据的表名与对应的数据库表的表名相同,所述数据库表内记录有数据主键、同步状态信息和触发事件标识。所述事件操作至少包括增加数据操作、删除数据操作和更改数据操作三种类型中的一种。

其中,所述触发信息包括表名信息、事件类型信息和同步数据的状态信息,步骤s1中将触发信息发送至对应的数据库表中这一步骤,具体包括步骤a1~a2:

a1、根据表名信息获取对应的数据库表;

a2、根据事件类型信息修改数据库表内的触发事件标识,以及根据状态信息修改数据库表内的同步状态信息。

其中,步骤s2,具体包括步骤s21~s22:

s21、根据同步状态信息触发同步队列启动预设的同步程序;

s22、根据数据库表内的数据主键从主数据库中获取同步数据,并结合触发事件标识和获取的数据对客户端数据库进行同步操作。

其中,所述步骤s22中结合触发事件标识和获取的数据对客户端数据库进行同步操作这一步骤,具体包括步骤b1~b2:

b1、依次结合触发事件标识和获取的数据对客户端数据库进行同步操作;

b2、判断是否同步操作是否成功,若成功,删除获取的同步数据;反之,结束同步操作,并将同步状态信息设置为失败状态。

本实施例还提供了一种存储介质,其中存储有处理器可执行的指令,所述处理器可执行的指令在由处理器执行时用于执行如上所述的方法。

本实施例的一种存储介质,可执行本发明方法实施例所提供的一种数据同步方法,可执行方法实施例的任意组合实施步骤,具备该方法相应的功能和有益效果。

具体实施例一

以下结合图3对上述方法进行详细的解释说明。

一种数据同步方法,包括以下步骤:

步骤101:外部触发主数据库事件,可以是通过系统应用操作数据或者直接在数据库触发事件。

步骤102:触发器监听到主数据库操作事件后,根据事件类型向同步队列库插入一条数据,数据包括发生事件的数据主键值、自增长序列(队列主键)、事件(增、删、改)、状态(待同步,出现异常)、触发事件标识(insert、update、delete)。

步骤103:同步程序循环从队列库读取等待同步的数据主键,然后到主数据库同名表中查找到该数据,然后由同步程序写入到客户端数据库。

步骤104:同步程序根据同步事件对客户端数据进行增、删、改操作。

步骤105:针对客户端数据库操作事务完成则进行下一步106操作,否则标记对列表同步状态为失败,用于后期跟踪,结束本条数据的同步。

步骤106:105步骤同步事务完成之后,由同步程序删除队列数据,完成数据同步。

具体实施例二

以下结合图4对上述系统进行详细的解释。

一种数据同步系统,包括主数据库、数据库触发器、待同步数据配置程序、触发器生成程序、同步队列、同步程序和至少一个客户端数据库。本系统能够灵活快速的实现数据同步配置,并且兼容市场流行的大部分数据库。

所述待同步数据配置程序即由通过程序配置需要进行数据同步的数据库表名及同步条件。所述触发器生成程序需要配置主数据库连接以及同步队列连接,程序启动后根据所述待同步数据配置程序配置的库表名称及同步条件初始化生成同步触发器,同时所述触发器生成程序也会在同步队列中生成与需要同步的主数据库表相同表名且字段包括(主键、主数据库需要同步的表主键、事件、状态、触发同步时间)。外部触发数据后由数据库触发器监听到数据变化从而向同步队列相同表中增加一条数据,标记主数据库待同步的数据状态。所述同步程序需要连接主数据库、同步队列以及客户端数据库,同步程序循环读取所述同步队列用户中的所有表数据,根据同步队列表中的主数据库表的主键从主数据库表中读取数据并根据事件标识向所述数据库客户端insert、update、delete数据,进而实现数据从主数据库同步到客户端数据库。

参照图4,其中步骤201是由外部触发主数据库操作事件,数据库触发器监听到需要同步的表的操作事件后,向同步队列中新增一条数据,描述需要同步的数据,即步骤202。

步骤203:同步程序循环读取同步队列中的所有表数据,读取到有数据后则根据数据中间到主数据库中查找需要同步的数据即204,然后写入客户端数据库1或者客户端数据库n。

综上所述,本发明基于数据库层面进行数据同步,性能较快且容错性好,能够防止数据同步中丢失数据。本发明将外部触发的数据增量加入待同步队列,只有同步事务完成才删掉同步队列,实现较好的容错性,并且由于数据同步基于数据库事务,只要数据库运行正常,数据同步就运行正常,从而实现良好的运行稳定性。

以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

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