一种多数据库数据同步方法技术

技术编号:2856233 阅读:217 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种多数据库数据同步方法,对数据同步采收发分离机制,数据同步的实时性和正确性由实时同步、定时器轮询所有失步队列和所有数据同步3个层面共同保证。采用本发明专利技术的方法可以提高数据同步的效率,即使偶尔丢失消息包也不会对数据完整性产生影响,而且缓冲区只存放修改记录的关键字,占用缓存空间较小。

【技术实现步骤摘要】

本专利技术涉及数据库的数据同步领域,具体地讲,提供了一种基于异步消息机制的收发分离数据同步实现方法。
技术介绍
在很多系统中都有数据同步的需求,保证多模块的数据都要一致,而且要考虑实时性和正确性。申请号为02103019.7的中国专利提出了一种通信系统中主备板数据实时同步的方法,提供了一种内存数据库主备同步的方案。此专利在主、备板中各设置一数据缓冲区;当主板数据修改时,向其缓冲区中写入主板修改过的数据;缓冲区对数据进行处理;当缓冲区数据量达到一定时,主板实时同步进程从缓冲区中读数据并发送到备板实时同步进程;更新备板数据库,并将操作结果返回给主板;如果操作结果是同步成功,则删除缓冲区中相应的数据,否则重新发送数据,直至缓冲区内记录为空。1、原有技术在主板缓冲区达到一定数量时才会触发主备同步,实时性不够好。我们专利技术只要主数据库发生变化就向目标数据库同步。2、原有技术采用发送数据包后,主机等待备机应答后才做下一步处理。我们专利技术采用收发分离方法,主数据库发送数据不需要等待目标数据库应答,数据同步效率比较高。3、原有技术缓冲区存放的是所有变化数据,空间占用比较多。我们的专利技术缓冲区只存放修改记录的关键字,占用空间较小。4、如果对同一索引记录频繁修改,原有方法会造成缓冲区利用率不高。我们专利技术由于缓冲区只存放关键字,所以对同一记录反复修改在数据两次同步之间等同于只修改2次,大大提高同步效率,并保证数据的一致性。
技术实现思路
本专利技术提出了,基于异步消息机制,并结合了数据处理要求效率高、实时性强的特点,使不同模块间的数据同步保证了实时性,且传输量降低到最低程度;同时,通过异步消息机制保证了数据同步的正确性,也提高了数据同步的效率。本专利技术提出的多数据库数据同步方法,包括以下处理步骤步骤一,初始化所有目标数据库的失步队列;步骤二,当主数据库发生变化时,将变化表记录的关键字写入各目标数据库的失步队列,用唯一的ID号标识其在失步队列中的位置,并向所有目标数据库发送失步记录内容;步骤三,目标数据库接收数据,并更新相应表记录,向主数据库返回应答消息,消息内含有更新成功的失步记录的ID号;步骤四,主数据库端根据响应消息内的ID号,将该目标数据库的失步队列内对应的失步记录清除。优选地,步骤一中还可以设定一个周期定时器一,当定时周期到时执行以下同步过程;1)根据各目标数据库的失步队列内记录的关键字,从数据库中读取若干条失步记录,将其打包发送到目标数据库,每次定时同步最大发包数量可以预设;2)目标数据库接收数据,并更新相应表记录,向主数据库返回应答消息,消息内含有更新成功的失步记录的ID号;3)主数据库端根据响应消息内的ID号,将该目标数据库的失步队列内对应的失步记录清除。优选地,当某个目标数据库的失步队列溢出时,执行以下同步处理过程i清空该溢出的失步队列,并将该队列加锁禁止读写,同时向该失步队列对应的目标数据库发送批量同步请求;ii系统接收到该目标数据库批量同步应答消息后,将主数据库所有需要同步的数据全部存储到内存缓冲区,并将所述失步队列解锁;iii主数据库将数据打包成同步数据包发送给目标数据库;iv目标数据库接收同步数据包,进行批量更新表记录。优选地,如果步骤iv中目标数据库反馈同步不成功消息,主数据库重复发送同步数据包给该目标数据库。优选地,所述步骤iii中主数据库可以将数据打成多个同步数据包发送给目标数据库,每次发送一包数据,并设定同步超时定时器二;然后主数据库收到目标数据库发送的成功应答消息后,发送下一个包;如果收到失败应答或定时器二超时则重复发送同步数据包。优选地,还可以设定重复发送同步数据包次数的阈值,达到阈值则不再发送,系统告警并宣布本次批量同步失败。优选地,所述步骤ii中,如果此时主数据库发生变化,将变化表记录的关键字写入各目标数据库的失步队列,并用全局唯一的ID号标识其在失步队列中的位置,向除正在进行批量同步外的其他目标数据库发送同步记录内容。采用本专利技术所述的方法,具有以下优点1.数据同步采收发分离机制,从而加快数据传输;即使偶尔丢失消息包也不会对数据完整性产生影响。2.队列所需空间大小依据应用情况确定,以不频繁发生所有数据同步为准,且需要保存信息少,所以空间要求不大。3.数据同步的实时性和正确性由实时同步、定时器轮询所有失步队列和所有数据同步3个层面共同保证。附图说明图1是本专利技术多数据库数据同步系统框架图;图2是本专利技术数据同步方法中实时同步和定时器轮询失步队列同步的处理流程图;图3是本专利技术数据同步方法中批量数据同步处理流程图。具体实施例方式下面列举一种应用于前后台数据同步的实施方案,其系统架构如图1。后台系统作为源模块,其数据库采用商用数据库;前台系统作为目的模块,其数据库是内存数据库。每次后台数据修改后,都要通过实时同步、定时器轮询和所有数据同步3个措施,同时向多个前台模块同步数据。数据同步流程如图2所示,具体实现步骤如下1.为每个前台模块建立数据失步队列,并初始化失步队列和传输数据控制区(即队列管理信息),设定轮询周期定时器timer1。1)数据失步队列描述数据失步信息; 2)队列管理信息描述队列的状态; 2.把对数据的每一次操作(包括增加、修改、删除数据)将变化表记录的关键字(即失步记录关键值)插入到所有失步队列中,并用唯一的ID号来标记该操作在队列中的位置。队列只需记录查找数据的关键值,而不记录此次数据操作类型。如果由于数据操作非常频繁,而数据实时同步和定时同步来不及处理,导致数据失步队列溢出,则清空失步队列并加锁防止读写,同时标记该失步队列为等待同步状态。3.系统从失步队列中取失步记录关键值,并查询相应的数据,依据查询结果来确定操作类型(有数据则为修改,无数据则为删除),把失步数据向前台模块发送。4.前台模块接收数据,更新相应的表记录,并向后台反馈更新成功与否的消息,消息内包含该记录在失步队列的ID号。5.源模块依据反馈的同步结果来处理如果同步成功,则依据ID号从失步队列中删除该条数据操作信息,否则保留该数据操作信息等待定时器定时轮询处理。6.timer1定时到,则所有失步队列进行轮询。如果该失步队列处于等待同步且非正在同步状态,则转步骤7~11的批量同步过程,如图3所示。如果该失步队列正常(非处于等待同步或正在同步状态),则从队列中取若干(最大处理条数可以依据系统性能进行调整)失步记录向前台同步,其过程如步骤3~5。7.批量同步过程,即对所有数据进行同步。后台模块向前台模块发送同步开始消息,并取消等待同步状态、打上正在同步状态。8.后台接收到前台模块响应的同步开始消息后,读取数据库中的所有数据并存储在缓冲区中,依据消息大小和数据包格式进行打包。同时,系统将该失步队列解锁,重新开始登记数据失步记录,但不向前台实时同步,如果失步队列再次溢出,则再次清空失步队列并上锁,打上等待同步状态,一直等此次批量同步完成后再次进行批量同步。9.每次后台给前台模块发送一个数据包(即数据同步消息),并设定同步超时定时器Timer2。前台接收同步数据包后,进行批量更新表记录,并向后台反馈同步成功与否的消息。10.后台接收到前台模块响应的数据同步消息后,依据反馈结果,如果数据同步成功,发送下一包数据。如果数本文档来自技高网...

【技术保护点】
一种多数据库数据同步方法,其特征在于,所述方法包括以下处理步骤:步骤一,初始化所有目标数据库的失步队列;步骤二,当主数据库发生变化时,将变化表记录的关键字写入各目标数据库的失步队列,用唯一的ID号标识其在失步队列中的位置,并 向所有目标数据库发送失步记录内容;步骤三,目标数据库接收数据,并更新相应表记录,向主数据库返回应答消息,消息内含有更新成功的失步记录的ID号;步骤四,主数据库端根据响应消息内的ID号,将该目标数据库的失步队列内对应的失步记录 清除。

【技术特征摘要】
1.一种多数据库数据同步方法,其特征在于,所述方法包括以下处理步骤步骤一,初始化所有目标数据库的失步队列;步骤二,当主数据库发生变化时,将变化表记录的关键字写入各目标数据库的失步队列,用唯一的ID号标识其在失步队列中的位置,并向所有目标数据库发送失步记录内容;步骤三,目标数据库接收数据,并更新相应表记录,向主数据库返回应答消息,消息内含有更新成功的失步记录的ID号;步骤四,主数据库端根据响应消息内的ID号,将该目标数据库的失步队列内对应的失步记录清除。2.如权利要求1所述的方法,其特征在于,步骤一中还可以设定一个周期定时器一,当定时周期到时执行以下同步过程1)根据各目标数据库的失步队列内记录的关键字,从数据库中读取若干条失步记录,将其打包发送到目标数据库,每次定时同步最大发包数量可以预设;2)目标数据库接收数据,并更新相应表记录,向主数据库返回应答消息,消息内含有更新成功的失步记录的ID号;3)主数据库端根据响应消息内的ID号,将该目标数据库的失步队列内对应的失步记录清除。3.如权利要求1或2所述的方法,其特征在于,当某个目标数据库的失步队列溢出时,执行以下同步处理过程i清空该溢出的失步队列,并将该队列加锁禁止读...

【专利技术属性】
技术研发人员:肖旸胡首锋许诤
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1