一种数据同步的方法技术

技术编号:9718865 阅读:124 留言:0更新日期:2014-02-27 05:39
本发明专利技术提供一种数据同步的方法,从库i中存储数据表T-i,主库中存储数据表T,数据表T存储记录的格式与数据表T-i存储记录的格式相同;在从库i中建立修改历史表T_i-act;同时,在主库中建立修改历史表T_-act;当达到本次同步时间时,从库i读取获得有效操作增量,然后将有效操作增量、记录内容以及上次同步时保存的初始主库版本号打包,并将上传包上传给主库;主库入库后,统计得到有效操作增量,然后将有效操作增量、记录内容以及当前主库版本号打包,并将返回包返回给从库i;从库i进行入库操作,完成一个数据同步过程。该数据同步的方法,能够简单、快速、可靠、高效的实现一个主库与若干个从库之间数据表的同步。

【技术实现步骤摘要】

本专利技术属于通信及计算机
,具体涉及。
技术介绍
随着网络技术、信息技术、电子商务和电信业务的迅速发展,系统体系和业务之间的复杂程度也随之加大,为了解决复杂的业务管理和运营问题,许多企业往往通过配置多套系统解决上述问题,并且,各套系统之间往往需要实现数据共享,而数据共享一般都是通过数据同步实现。典型的应用如用户登录信息,通过数据同步,可以实现一处登录处处登录,或者一个密码走天下的效果。因此,在IT行业中,如何低成本、高效率并且高可靠性的进行数据同步,一直是互联网中用于向用户提供各种服务的众多公司致力解决的问题。现有的数据同步一般通过以下两种方式进行:( 1)手工同步:例如:当需要同步数据库A中的表Al和数据库B中的表BI时,则人工比对表Al和表BI内容是否相同,如果不相同,则人工将表Al中的数据复制粘贴到表 BI,从而保证表Al和表BI内容相同。该种方法主要存在以下问题:效率低,且容易出错。(2)数据库自带自动同步:如SQL Server数据库一般采用复制订阅功能进行数据同步。例如:当需要同步数据库A中的表Al和数据库B中的表BI时,每当表BI进行了修改或表Al进行了修改时,均自动将发生修改的表的所有内容复制到另一表中,从而保证两个表数据的一致性。该种方法存在的主要问题为:由于同步时将发生变化的表的所有内容均需复制到另一张表中,尤其当表本身较大时,会占用过多的带宽进行数据同步,从而影响同步速度,增加了同步的配置复杂度。
技术实现思路
针对现有技术存在的缺陷,本专利技术提供,能够简单、快速、可靠、高效的实现若干个数据库之间数据表的同步。本专利技术采用的技术方案如下:本专利技术提供,包括以下步骤:SI,主库连接有n个从库,n个从库分别命名为:从库1、从库2…从库n ;S2,分别为每一个从库设置定时同步时间,当任意的从库i到达自身配置的定时同步时间时,从库i与主库进行同步操作,使主库与从库i保持一致;其中,i e (1、2…n);主库通过与各个从库依次进行同步操作,最终使主库、从库1、从库2…从库n这 n+1个数据库均同步。优选的,S2中,从库i与主库进行同步操作具体为:从库i的数据表与主库的数据表进行同步操作,并且,需同步的数据表在主库和从库i中具有相同的字段。优选的,所述从库i的数据表与主库的数据表进行同步操作具体包括以下步骤:S21,设从库i中存储数据表T-1,该数据表T_i由若干条记录组成,每一条记录包括:记录ID、记录具体内容以及该条记录的操作时间;其中,记录ID用于唯一标识该条记录,当该条记录发生修改或删除操作时,记录ID仍然保持不变;所述操作时间为:对该条记录进行创建或修改时操作发生的时间点;设所述主库中存储数据表T,所述数据表T存储记录的格式与数据表τ-1存储记录的格式相同;S22,当需要同步所述数据表T和所述数据表T-1时,在从库i中建立修改历史表T_i_act,所述修改历史表T_i_act用于记录对所述数据表T_i进行的操作信息;同时,在主库中建立修改历史表T__act,所述修改历史表T__act用于记录对所述数据表T进行的操作信息;S23,设置针对从库i的定时同步时间间隔,则当达到本次同步时间时,所述从库i读取所述修改历史表T_i_act,获得上次同步结束时间点到当前时刻时间段内所述修改历史表T_i_act所记录的操作增量,通过对该操作增量进行分析,统计得到从库i的有效操作增量,针对该有效操作增量读取所述数据表T-1,获取与该有效操作增量对应的记录内容;然后将有效操作增量、记录内容以及上次同步时保存的初始主库版本号打包,得到上传包,并将所述上传包上传给所述主库;S24,所述主库接收所述上传包,首先分析所述初始主库版本号是否为有效主库版本号,如果否,则执行S25 ;如果是,则执行S26 ;S25,所述 主库将当前主库版本号以及数据表T打包,得到返回包,然后将所述返回包返回给所述从库i ;然后执行S27 ;S26,所述主库对所述有效操作增量进行进一步分析过滤后,对所述主库进行入库操作,并更新所述修改历史表T__act,然后,所述主库获得上次与从库i同步结束时间点到当前时刻时间段内所述修改历史表T_i_act所记录的操作增量,通过对该操作增量进行分析,统计得到主库的有效操作增量,针对该有效操作增量读取所述数据表T,获取与该有效操作增量对应的记录内容;然后将有效操作增量、记录内容以及当前主库版本号打包,得到返回包,并将所述返回包返回给所述从库i ;然后执行S27 ;S27,所述从库i接收所述返回包,对所述从库i进行入库操作,并更新所述修改历史表T_1-act,至此,完成一个数据同步过程,当下次定时同步时间到达时,循环S23-S27。优选的,S22中,所述修改历史表T_i_act由若干条操作记录组成,每一条操作记录用于记录对数据表T-1中某条记录进行的操作信息,即:每当数据表T-1中某条记录被操作时,则在所述修改历史表T_1-act中增加一条对应的操作记录,所述修改历史表T_i_act具体包括以下字段:操作序号autoid-1、记录ID、操作方式_1、修改角色_i和操作时间_i ;其中,所述操作序号autoid-1在该修改历史表T_i_act中具有唯一'丨生和单一'I生,表示操作序号;每当从库i与主库同步时,均需读取修改历史表1'」-&(^中操作序号的最大值作为从库i版本号并存储;所述记录ID即为所述数据表T-1中存储的记录ID,表示被操作记录的记录ID ;所述操作方式_i指对所述数据表T-1中记录进行的新增、修改或删除操作;所述修改角色_i指本次修改的发起者,包括本地库修改和主库发起的修改;所述操作时间_i区分以下两种情形:如果为本地库修改,则操作时间_i指对所述数据表T-1中记录进行操作的时间;如果为主库发起的修改,则操作时间_i指主库下发的操作增量中所携带的对该记录的操作时间;对于修改历史表T__act,包括以下字段:操作序号autoid、记录ID、操作方式、修改角色和操作时间;其中,操作序号autoid在该修改历史表1'_-8(^中具有唯一丨丨生和单一丨丨生,表示操作序号;每当主库与从库i同步时,均需读取修改历史表T__act中操作序号的最大值作为主库版本号并存储;所述记录ID即为所述数据表T中存储的记录ID,表示被操作记录的记录ID ;所述操作方式指对所述数据表T中记录进行的新增、修改或删除操作;所述修改角色指本次修改的发起者,包括本地库修改和从库发起的修改;所述操作时间区分以下两种情形:如果为本地库修改,则操作时间指对所述数据表T中记录进行操作的时间;如果为从库发起的修改,则操作时间指从库上传的操作增量中所携带的对该记录的操作时间。优选的,S23具体为:S231,当达到本次同步时间时,所述从库i读取已存储的上次同步时获得的初始从库i版本号Ml和初始主库版本号Zl ;所述从库i读取当前修改历史表T_i_act中操作序号的最大值M,则:操作序号大于Ml且小于等于M的各条T_i_act表中的操作记录集合构成从库的操作增量;S232,如果从库的操作增量中,存储针对同一记录ID的若干条操作记录,则过滤掉操作时间较早的操作记录,仅保留操作时间最晚的操作记录,由此得到的本文档来自技高网...

【技术保护点】
一种数据同步的方法,其特征在于,包括以下步骤:S1,主库连接有n个从库,n个从库分别命名为:从库1、从库2…从库n;S2,分别为每一个从库设置定时同步时间,当任意的从库i到达自身配置的定时同步时间时,从库i与主库进行同步操作,使主库与从库i保持一致;其中,i∈(1、2…n);主库通过与各个从库依次进行同步操作,最终使主库、从库1、从库2…从库n这n+1个数据库均同步。

【技术特征摘要】
1.一种数据同步的方法,其特征在于,包括以下步骤:SI,主库连接有n个从库,n个从库分别命名为:从库1、从库2…从库n ;S2,分别为每一个从库设置定时同步时间,当任意的从库i到达自身配置的定时同步时间时,从库i与主库进行同步操作,使主库与从库i保持一致;其中,i e (1、2…n);主库通过与各个从库依次进行同步操作,最终使主库、从库1、从库2…从库n这n+1个数据库均同步。2.根据权利要求1所述的数据同步的方法,其特征在于,S2中,从库i与主库进行同步操作具体为:从库i的数据表与主库的数据表进行同步操作,并且,需同步的数据表在主库和从库i中具有相同的字段。3.根据权利要求2所述的数据同步的方法,其特征在于,所述从库i的数据表与主库的数据表进行同步操作具体包括以下步骤:S21,设从库i中存储数据表T-1,该数据表T-1由若干条记录组成,每一条记录包括: 记录ID、记录具体内容以及该条记录的操作时间;其中,记录ID用于唯一标识该条记录,当该条记录发生修改或删除操作时,记录ID仍然保持不变;所述操作时间为:对该条记录进行创建或修改时操作发生的时间点;设所述主库中存储数据表T,所述数据表T存储记录的格式与数据表T-1存储记录的格式相同;S22,当需要同步所述数据表T和所述数据表T-1时,在从库i中建立修改历史表T_ 1-act,所述修改历史表T_i_act用于记录对所述数据表T_i进行的操作信息;同时,在主库中建立修改历史表T__act,所述修改历史表T__act用于记录对所述数据表T进行的操作信息;S23,设置针对从库i的定时同步时间间隔,则当达到本次同步时间时,所述从库i读取所述修改历史表T_i_act,获得上次同步结束时间点到当前时刻时间段内所述修改历史表T_i_act所记录的操作增量,通过对该操作增量进行分析,统计得到从库i的有效操作增量,针对该有效操作增量读取所述数据表T-1,获取与 该有效操作增量对应的记录内容;然后将有效操作增量、记录内容以及上次同步时保存的初始主库版本号打包,得到上传包,并将所述上传包上传给所述主库;S24,所述主库接收所述上传包,首先分析所述初始主库版本号是否为有效主库版本号,如果否,则执行S25 ;如果是,则执行S26 ;S25,所述主库将当前主库版本号以及数据表T打包,得到返回包,然后将所述返回包返回给所述从库i ;然后执行S27 ;S26,所述主库对所述有效操作增量进行进一步分析过滤后,对所述主库进行入库操作,并更新所述修改历史表T_-act,然后,所述主库获得上次与从库i同步结束时间点到当前时刻时间段内所述修改历史表T_1-act所记录的操作增量,通过对该操作增量进行分析,统计得到主库的有效操作增量,针对该有效操作增量读取所述数据表T,获取与该有效操作增量对应的记录内容;然后将有效操作增量、记录内容以及当前主库版本号打包,得到返回包,并将所述返回包返回给所述从库i ;然后执行S27 ;S27,所述从库i接收所述返回包,对所述从库i进行入库操作,并更新所述修改历史表 T_1-act,至此,完成一个数据同步过程,当下次定时同步时间到达时,循环S23-S27。4.根据权利要求3所述的数据同步的方法,其特征在于,S22中,所述修改历史表T_1-act由若干条操作记录组成,每一条操作记录用于记录对数据表T-1中某条记录进行的操作信息,即:每当数据表T-1中某条记录被操作时,则在所述修改历史表T_1-act中增加一条对应的操作记录,所述修改历史表T_i_act具体包括以下字段:操作序号autoid-1、记录ID、操作方式_1、修改角色_i和操作时间_i ; 其中,所述操作序号autoid-1在该修改历史表T_i_act中具有唯一'丨生和单一'丨生,表示操作序号;每当从库i与主库同步时,均需读取修改历史表1'」-&(^中操作序号的最大值作为从库i版本号并存储; 所述记录ID即为所述数据表T-1中存储的记录ID,表示被操作记录的记录ID ; 所述操作方式_i指对所述数据表T-1中记录进行的新增、修改或删除操作; 所述修改角色-1指本...

【专利技术属性】
技术研发人员:赵亚南
申请(专利权)人:厦门诚创网络有限公司
类型:发明
国别省市:

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

1