一种数据库同步的方法和装置的制造方法

文档序号:8487865阅读:351来源:国知局
一种数据库同步的方法和装置的制造方法
【技术领域】
[0001]本发明实施例涉及数据库技术领域,尤其涉及一种数据库同步的方法和装置。
【背景技术】
[0002]电子商务日益深入人心,实时交易系统的数据量也与日俱增,然而单一数据库的处理能力有限,因此需要基于源数据库,按照业务或功能建立多个目标数据库,从而降低对源数据库的访问压力。当源数据库中的某个数据表发生变化时,需要保证关注该数据表的目标数据库中的该数据表与源数据库中的该数据表发生一致的变化,因此需要一个同步装置来实现目标数据库与源数据库之间数据的同步。
[0003]现有技术中实现目标数据库与源数据库之间数据同步的方法为:设立一独立服务器,同时连接源数据库和目标数据库;通过该独立服务器实时获取源数据库产生的数据变更事件;并将其传输至目标数据库。
[0004]上述技术方案中,独立服务器为了保证较快的读写速度,通常为内存型服务器,此类服务器将数据变更事件缓存至内存中,当内存的存储空间占满时,新增的数据变更事件会将历史数据丢弃。本领域技术人员可知,由于系统故障等原因,经常会出现目标数据库的数据同步过程中断的情况,此时,目标数据库恢复工作之后,需要继续从中断点处开始获取后续的数据变更事件,以便于进行数据同步过程。但是若目标数据库中断时间较长,由于独立服务器的内存有限,因此,独立服务器中所储存的中断点附近的数据变更事件可能已经被丢弃,若目标数据库所获取的数据变更事件有缺失,则目标数据库无法做到与源数据库完全一致。
[0005]为了解决这一问题,若将数据变更事件缓存至独立服务器的持久化磁盘中进行保存时,一方面,持久化磁盘的储存空间也有限,另一方面,当该独立服务器连接的目标数据库中大部分均发生中断现象时,由于发生中断的目标数据库均需从该独立服务器的磁盘中获取中断点以后的所有数据变更事件,从而发生中断的目标数据库需要与该独立服务器之间进行大量的磁盘读写操作,而处于正常工作状态的目标数据库也实时从该独立服务器中获取数据变更事件,如此,由于该独立服务器上的负荷量过大,从而降低了发生中断的目标数据库恢复到正常工作状态的效率,以及其它未发生中断的目标数据库与该独立服务器之间数据传输的效率,即降低了目标数据库与源数据库之间的数据同步效率。
[0006]综上所述,亟需一种数据库同步的方法和装置,用于保证未发生中断的目标数据库与源数据库之间的数据同步效率不变的同时,提高发生中断的目标数据库自动恢复正常工作状态的效率。

【发明内容】

[0007]本发明实施例提供一种数据库同步的方法和装置,用于保证未发生中断的目标数据库与源数据库之间的数据同步效率不变的同时,提高发生中断的目标数据库自动恢复正常工作状态的效率。
[0008]本发明实施例提供一种数据库同步的方法,包括以下步骤:
[0009]目标端服务器根据预设对应关系确定目标端服务器所连接的目标数据库中目标数据标识号在源数据库中所对应的源数据标识号,并确定出目标数据表标识号对应的已同步的日期最新数据变更事件的第一全局标识号;其中,源数据标识号与目标数据标识号一一对应;其中,数据变更事件是源端服务器实时捕获源数据库产生的数据变更事件得到的;数据变更事件包括该数据变更事件的生成时间;
[0010]若第一全局标识号对应的数据变更事件的生成时间与当前时间的时间差不小于第一中断时长,则目标端服务器从源端历史服务器获取第一全局标识号之后的数据变更事件,并根据从源端历史服务器获取的数据变更事件对目标数据库执行同步操作;其中,每条数据变更事件包括该数据变更事件对应的全局标识号;源端历史服务器储存的数据变更事件的最远日期远于源端中继服务器储存的数据变更事件的最远日期;
[0011]若第一全局标识号对应的数据变更事件的生成时间与当前时间的时间差小于第一中断时长,则目标端服务器从源端中继服务器获取第一全局标识号之后的数据变更事件,并根据从源端中继服务器获取的数据变更事件对目标数据库执行同步操作;目标端服务器配置有目标数据库的配置参数。
[0012]本发明实施例提供一种数据库同步的装置,包括与源数据库连接的源端历史服务器,与源端历史服务器连接的目标端服务器,以及与源数据库连接的源端中继服务器,与源端中继服务器连接的目标端服务器,与目标端服务器连接的目标数据库:
[0013]目标端服务器,包括:
[0014]确定单元,用于根据预设对应关系确定目标端服务器所连接的目标数据库中目标数据标识号在源数据库中所对应的源数据标识号,并确定出目标数据表标识号对应的已同步的日期最新数据变更事件的第一全局标识号;其中,源数据标识号与目标数据标识号一一对应;其中,数据变更事件是源端服务器实时捕获源数据库产生的数据变更事件得到的;数据变更事件包括该数据变更事件的生成时间;
[0015]第一获取单元,用于若第一全局标识号对应的数据变更事件的生成时间与当前时间的时间差不小于第一中断时长,则从源端历史服务器获取第一全局标识号之后的数据变更事件,并根据从源端历史服务器获取的数据变更事件对目标数据库执行同步操作;其中,每条数据变更事件包括该数据变更事件对应的全局标识号;源端历史服务器储存的数据变更事件的最远日期远于源端中继服务器储存的数据变更事件的最远日期;
[0016]第二获取单元,用于若第一全局标识号对应的数据变更事件的生成时间与当前时间的时间差小于第一中断时长,则从源端中继服务器获取第一全局标识号之后的数据变更事件,并根据从源端中继服务器获取的数据变更事件对目标数据库执行同步操作;目标端服务器配置有目标数据库的配置参数。
[0017]本发明实施例中,目标端服务器确定出所述目标数据表标识号对应的已同步的日期最新数据变更事件的第一全局标识号;若所述第一全局标识号对应的数据变更事件的生成时间与当前时间的时间差不小于第一中断时长,则所述目标端服务器从源端历史服务器获取所述第一全局标识号之后的数据变更事件,并根据从所述源端历史服务器获取的数据变更事件对所述目标数据库执行同步操作;否则所述目标端服务器从源端中继服务器获取所述第一全局标识号之后的数据变更事件,并根据从所述源端中继服务器获取的数据变更事件对所述目标数据库执行同步操作。所述目标端服务器配置有所述目标数据库的配置参数。所述源端历史服务器储存的数据变更事件的最远日期远于所述源端中继服务器储存的数据变更事件的最远日期。
[0018]由于源端历史服务器储存的数据变更事件的最远日期远于所述源端中继服务器储存的数据变更事件的最远日期,因此当第一全局标识号对应的数据变更事件的生成时间与当前时间的时间差不小于第一中断时长,从源端历史服务器获取所述第一全局标识号之后的数据变更事件,否则,从源端中继服务器获取所述第一全局标识号之后的数据变更事件。可见,源端历史服务器存储空间较大,可存储时间较长的数据变更事件,而源端中继服务器中仅存储较新的数据变更事件,因此,目标端服务器若发生较长时间的中断,源端中继服务器中可能已经没有中断点处的数据变更事件,则目标端服务器可从源端历史服务器中获取中断点处的数据变更事件,进一步,由于源端历史服务器和源端中继服务器的功能分离,发生中断的目标端服务器可从源端历史服务器中获取历史数据变更事件,处于正常工作状态的目标端服务器可继续从源端中继服务器获取数据变更事件,如此,源端中继服务器中的负荷量不会因发生中断的目标端服务器恢复正常工作而加重,因此保证了未发生中断的目标端服务器执行数据同步效率不变的同时,提高发生中断的目标端服务器自动恢复正常工作状态的效率。
[0019]进一步由于目标端服务器连接目标数据库,且目标端服务器配置有目标数据库的配置参数,因此,当某个目标数据库发生变动,如新增一个目标数据库时,仅需要修改该新增的目标数据库对应连接的目标端服务器中的配置参数,并重启该目标端服务器即可,因此,其它未进行参数配置修改的目标端服务器不需重启,进而与该未进行参数配置修改的目标端服务器连接的目标数据库的数据同步过程也不会中断,从而实现多个目标数据库与源数据库之间的数据同步,且当某个目标数据库发生变化时,其它目标数据库的数据同步过程不受影响。
【附图说明】
[0020]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0021]图1a为本发明实施例提供的方法或装置适用的系统架构示意图;
[0022]图1b为本发明实施例提供的方法或装置适用的系统架构示意图;
[0023]图1c为本发明实施例所提供的方法或装置适用的系统架构示意图;
[0024]图2为本发明实施例提供的一种数据库同步的方法流程示意图;
[0025]图3为本发明实施例还提供一种数据库同步的装置的结构示意图。
【具体实施方式】
[0026]为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0027]本发明的实施例所应用的场景有多种,为更好的理解本方案,此处仅示例性列举以下几种:
[0028]场景一:源数据库为一个,目标数据库为多个,该源数据库为“写库”,支持相关写操作的事务处理,目标数据库为“读库”,支持业务查询、数据分析等查询操作。实际应用中,需保证该为“写库”的源数据库内容与多个为“读库”的目标数据库的数据内容一致,并需保证目标数据库的内容和源数据库内容同步的及时性和正确性,此时,即可通过本发明实施例所提供的方法或装置实现。
[0029]场景二:源数据库为多个,目标数据库为一个,该多个源数据库为“写库”,且多个源数据库中储存的数据表均为“订单表”,此时,可将一部分用户的交易写到某个源数据库的“订单表”中,而将另一部分用户的交易写入到另一个源数据库的“订单表”中,此时,BP多个源数据库中存储同一个数据表“订单表”,而不同源数据库中储存的数据内容不同。目标数据库为“读库”。实际应用中需实现将多个源数据库中的“订单表”的不同数据内容整合至一个目标数据库中,以便于通过该目标数据库可读取所有“订单表”的数据内容,此时,即可通过本发明实施例所提供的方法或装置实现。
[0030]较佳的,场景二中,也可设置多个目标数据库,分别将多个源数据库中的“订单表”同步至多个目标数据库中,以减少单个目标数据库的查询负荷量。
[0031]场景三:源数据库为多个,目标数据库为多个,该多个源数据库为“写库”,且多个源数据库中储存的数据表均为同一个数据表,例如“订单表”,多个源数据库中存储同一个数据表“订单表”,而不同源数据库中储存的数据内容不同。具体可为,源数据库按商户维度来区分,商户一的订单表信息通过一个源数据库储存,而商户二的订单表信息通过另一个源数据库储存。多个目标数据库均为“读库”。实际应用中可将以商户为维度区分的多个源数据库中的“订单表”的不同数据内容整合至以时间为维度的多个目标数据库中,即,可将一月份的所有商户的订单表整合至一个目标数据库中,将二月份的所有商户的订单表整合至另一个目标数据库中,以便于通过该目标数据库可读取所有“订单表”的数据内容,此时,即可通过本发明实施例所提供的方法或装置实现。
[0032]场景四:本发明实施例中的至少一个目标数据库储存单个源数据库储存的全部数据表中的部分数据表。该单个目标数据库中也可储存有多个源数据库中每个源数据库中储存的部分数据表。举个例子,源数据库一中储存有数据表“一月份统计表、二月份统计表”,源数据库二中储存有数据表“三月份统计表、四月份统计表”,目标数据库中可仅存储源数据库一中的数据表“一月份统计表”,也可仅存储有源数据库一中的“一月份统计表”和源数据库二中的“三月份统计表”。
[0033]场景五:新增一目标数据库,或某个目标数据库在数据同步过程中中断了,而中断时间点相距当前时间点较远,此时需要对该目标数据库进行数据同步的初始化过程的设置,即需要使该目标数据库的数据表内容与源数据库的某一时刻的数据表内容保持一致。
[0034]场景六:目标数据库在数据同步过程中中断了,而中断时间点相距当前时间点较远,此时需要使该目标数据库从中断状态恢复至正常数据同步的工作状态。
[0035]图1a示例性示出了一种本发明实施例提供的方法或装置适用的系统架构示意图;图1b示例性示出了一种本发明实施例提供的方法或装置适用的系统架构示意图;图1c示例性示出了一种本发明实施例所提供的方法或装置适用的系统架构示意图。
[0036]如图la、图lb、图1c所示,本发明实施例所提供的方法或装置适用的系统架构中可包括多个源数据库101、与源数据库101连接的源端服务器107,较佳的,源端服务器107包括源端中继服务器102和源端历史服务器105。源端中继服务器102与源数据库101连接、源端中继服务器102与目标端服务器103连接、目标端服务器103连接的多个目标数据库104。较佳的,本发明实施例中目标端服务器103也可连接非数据库类型的系统108,如联机系统、或文档类需获取源数据库中的数据内容的文件均可。
[0037]较佳的,本发明实施例所提供的方法或装置适用的系统架构还包括与源端中继服务器102连接的源端历史服务器105、源端历史服务器105与目标端服务器103连接、与源数据库101连接的源端快照服务器106、源端快照服务器106与目标端服务器103连接,较佳的,源端服务器107包括源端中继服务器102和源端历史服务器105。
[0038]本发明实施例用于实现目标数据库在数据同步之前的初始化过程,以及源数据库101与目标数据库104之间的数据同步。较佳的,本发明实施例中为了保证目标数据库与源数据库的常规数据同步操作的效率较高,将源端中继服务器设置为非持久化保存数据变更事件的服务器,将源端历史服务器设置为可持久化保存数据变更事件的服务器。源端中继服务器将捕获的数据变更事件缓存至内存中,常规数据同步操作中,目标数据库通过目标端服务器从源端中继服务器中获取数据变更事件,由于源端中继服务器将数据变更事件缓存至内存中,因此通过源端中继服务器写入或读出数据变更事件的效率也较高。但是由于内存的空间有限,仅能存储最新的少量的数据变更事件,时间较远的数据变更事件在源端中继服务器中可能会被丢弃,因此,较佳的,提供一源端历史服务器,通过该源端历史服务器定期从源端中继服务器中获取数据变更事件,再持久化保持至源端历史服务器中,即保持至源端历史服务器的硬盘或磁盘中,此时一旦目标数据库需同步的数据变更事件不在源端中继服务器中时,目标数据库可从源端历史服务器中获取时间较远的数据变更事件。
[0039]本发明实施例中当新增一个目标数据库时,该目标数据库通过本发明实施例中的源端快照服务器和目标端服务器自动实现初始化过程,同时,目标端服务器获得目标数据库执行初始化过程中的全量数据快照文件的生成时间,该目标端服务器依据该生成时间从源端服务器中接着获取后续数据变更事件,从而实现与源数据库之间的同步。
[0040]具体来说,与该目标数据库连接的目标端服务器经判断,确定当前全量数据快照文件的生成时间对应的数据变更事件不在源端中继服务器时,则从源端历史服务器中获取初始化时间点至当前时间点内的数据变更事件,所述初始化时间点早于或等于所述源数据表标识号对应的全量数据快照文件的生成时间,并在获取到数据变更事件之后对目标数据库执行数据同步操作;之后,目标端服务器接着去源端历史服务器中获取上次同步操作执行完成后,最新的已同步的日期最新的数据变更事件之后的数据变更事件,并再次执行数据同步操作,直至目标端服务器判断出目标数据库中已同步的日期最新的数据变更事件的生成时间与当前时间的时间差小于第一中断时长时,目标数据端服务器则从源端中继服务器中获取目标数据库中已同步的日期最新的数据变更事件之后的数据变更事件。
[0041]较佳的,在目标数据库与源端数据库进行数据同步的常规过程中,若目标数据库因某种原因,如目标数据库故障,或与该目标数据库连接的目标端服务器发生故障,因而目标数据库中断了一断时间,若目标端服务器经判断,目标数据库中已同步的日期最新的数据变更事件的生成时间与当前时间不小于第一中断时长时,则目标端服务器先从源端历史服务器中获取已同步的日期最新的数据变更事件之后的数据变更事件;直至目标端服务器判断出目标数据库中已同步的日期最新的数据变更事件的生成时间与当前时间的时间差小于第一中断时长时,目标数据端服务器则从源端中继服务器中获取目标数据库中已同步的日期最新的数据变更事件之后的数据变更事件。
[0042]较佳的,在目标数据库与源端数据库进行数据同步的常规过程中,若目标数据库因某种原因,中断了一断时间,若目标端数据库经判断,目标数据库中已同步的日期最新的数据变更事件的生成时间与当前时间不小于第二时长时,则目标端服务器先从源端快照服务器中获取全量数据快照文件,接着从源端历史服务器或源端中继服务器中获取全量数据快照文件的生成时间或生成时间之前的某一时间之后的数据变更事件。
[0043]从上述过程中可看出,本发明实施例中,若新增一目标数据库,则目标端服务器自动从源端快照服务器中获取全量快照文件,并将其导入目标数据库中,从而自动实现初始化过程;接着,经判断,可自动从源端历史服务器或源端中继服务器获取后续数据变更事件,以便实现数据同步的自动化;且进一步在数据同步操作过程中若出现中断,则目标端服务器也可自动从源端历史服务器或源端中继服务器获取中断后的数据变更事件,整个过程不需人工操作,提高了数据同步效率。
[0044]较佳的,本发明实施例中源端服务器可连接一个源数据库,也可连接多个源数据库,多个源数据库中可存储同一个数据表中的不同数据内容。较佳的,源端服务器可连接一个目标端服务器,也可连接多个目标端服务器,每个目标端服务器可连接多个目标数据库,也可每个目标端服务器仅连接一个目标数据库。
[0045]较佳的,本发明实施例中的源端服务器包括源端中继服务器和源端历史服务器,因此,具体来说,本发明实施例中源端中继服务器可连接一个源数据库,也可连接多个源数据库。较佳的,源端中继服务器可连接一个目标端服务器,也可连接多个目标端服务器。较佳的,本发明实施例中的源端历史服务器,可连接一个源端中继服务器,也可连接多个源端中继服务器。
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1