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

文档序号:8487867阅读:453来源:国知局
一种数据库同步的方法和装置的制造方法
【技术领域】
[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]较佳的,本发明实施例中的源端服务器包括源端中继服务器和源端历史服务器,因此,具体来说,本发明实施例中源端中继服务器可连接一个源数据库,也可连接多个源数据库。较佳的,源端中继服务器可连接一个目标端服务器,也可连接多个目标端服务器。较佳的,本发明实施例中的源端历史服务器,可连接一个源端中继服务器,也可连接多个源端中继服务器。
[0046]较佳的,本发明实施例中源端快照服务器可连接一个源数据库,也可连接多个源数据库。较佳的,源端快照服务器可连接一个目标端服务器,也可连接多个目标端服务器。
[0047]较佳的,本发明实施例中的针对相同的源数据库连接的源端中继服务器也可布置多个,一方面提高系统的可用性,避免单个源端中继服务器出现故障时,整个系统不可用的现象;另一方面,提高系统的扩
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1