本发明属于大数据领域,特别涉及一种无法直接通信的服务器间进行可靠数据转移的方法及系统。
背景技术:
大数据是近年来各行各业研究的热点,在数据收集、存储、传输的过程中,由于存储介质、存储方式、网络连通性、实时性要求等方面的多样性,需要对数据进行及时的转移和存储,以减轻数据采集服务器的存储压力,并保证历史数据被完整保留以便于后续深入分析。
目前,当需要在无法直接通信的两台服务器间进行数据转移时,常使用同步两台服务器的系统时间、设定相对长的任务执行间隔时间等方法来提高可靠性,一旦两台服务器间的系统时间出现错位或某一端任务失败,则容易引起数据转移任务的失败,需要人工监控任务执行情况并及时处理失败任务,可靠性不高而且浪费人力。
技术实现要素:
【要解决的技术问题】
本发明的目的是提供一种无法直接通信的服务器间进行可靠数据转移的方法及系统,以在无法直接通信的两台服务器间进行数据的可靠转移。
【技术方案】
本发明是通过以下技术方案实现的。
本发明首先涉及一种无法直接通信的服务器间进行可靠数据转移的方法,包括数据源服务器数据处理流程和目标服务器数据处理流程,
所述数据源服务器数据处理流程包括以下步骤:
A1、查询数据源服务器上的源数据表是否存在数据,如果存在数据则转入步骤B1,否则退出本方法流程;
B1、查询当前时间数据源服务器上的源数据表中最大的ID值,将该最大的ID值存入第一变量,查询跳板服务器的中间ID表中最大的ID值,将该最大的ID值存入第二变量;
C1、从数据源服务器上的源数据表中取出ID值大于第二变量且小于等于第一变量的数据行,将取出的数据行转存至跳板服务器的中间数据表中;
D1、查询跳板服务器的中间数据表中的最大ID值,将其存入跳板服务器的中间ID表中,
所述目标服务器数据处理流程包括以下步骤:
A2、查询跳板服务器上的中间数据表是否存在数据,如果存在数据则转入步骤B2,否则退出本方法流程;
B2、查询当前时间跳板服务器上的中间数据表中最大的ID值,将该最大的ID值存入第三变量;
C2、从跳板服务器上的中间数据表中取出ID值小于等于第三变量的数据行,将取出的数据行转存至目标服务器的目标数据表中。
作为一种优选的实施方式,所述C1之后还包括:从跳板服务器的中间数据表中删除ID值小于等于第三变量的数据行。
本发明还涉及一种无法直接通信的服务器间进行可靠数据转移的系统,包括数据源服务器、目标服务器、跳板服务器、数据源服务器数据处理模块和目标服务器数据处理模块,所述数据源服务器上设置有源数据表,所述目标服务器上设置有目标数据表,所述跳板服务器上设置有中间数据表和中间ID表,
所述数据源服务器数据处理模块被配置成:查询数据源服务器上的源数据表是否存在数据,如果存在数据则查询当前时间数据源服务器上的源数据表中最大的ID值,将该最大的ID值存入第一变量,查询跳板服务器的中间ID表中最大的ID值,将该最大的ID值存入第二变量;从数据源服务器上的源数据表中取出ID值大于第二变量且小于等于第一变量的数据行,将取出的数据行转存至跳板服务器的中间数据表中;查询跳板服务器的中间数据表中的最大ID值,将其存入跳板服务器的中间ID表中,
所述目标服务器数据处理模块被配置成:查询跳板服务器上的中间数据表是否存在数据,如果存在数据则查询当前时间跳板服务器上的中间数据表中最大的ID值,将该最大的ID值存入第三变量;从跳板服务器上的中间数据表中取出ID值小于等于第三变量的数据行,将取出的数据行转存至目标服务器的目标数据表中。
作为一种优选的实施方式,所述目标服务器数据处理模块还被配置成:将中间数据表中ID值小于等于第三变量的数据行转存至目标服务器的目标数据表后,从跳板服务器的中间数据表中删除ID值小于等于第三变量的数据行。
【有益效果】
本发明提出的技术方案具有以下有益效果:
本发明实现的数据转移方法不依赖两台服务器间的系统时间同步,也不依赖两台服务器上的任务进行的先后顺序,即使某一端任务失败,对另一端的任务执行不会产生影响,且能在下一次任务执行时自动补全前次任务失败产生的数据缺失问题。因此,本发明降低了服务器设置的复杂度,而且本发明中的容错机制也能尽可能的节省运维成本。
附图说明
图1为本发明的实施例一提供的无法直接通信的服务器间进行可靠数据转移的系统的原理框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的具体实施方式进行清楚、完整的描述。
实施例一
图1为本发明实施例一提供的无法直接通信的服务器间进行可靠数据转移的系统的原理框图。如图1所示,该系统包括数据源服务器1、目标服务器2、跳板服务器3、数据源服务器数据处理模块和目标服务器数据处理模块,数据源服务器1上设置有源数据表,目标服务器2上设置有目标数据表,跳板服务器3上设置有中间数据表和中间ID表。
数据源服务器数据处理模块被配置成:查询数据源服务器1上的源数据表是否存在数据,如果存在数据则查询当前时间数据源服务器1上的源数据表中最大的ID值,将该最大的ID值存入第一变量,查询跳板服务器3的中间ID表中最大的ID值,将该最大的ID值存入第二变量;从数据源服务器1上的源数据表中取出ID值大于第二变量且小于等于第一变量的数据行,将取出的数据行转存至跳板服务器的中间数据表中;查询跳板服务器3的中间数据表中的最大ID值,将其存入跳板服务器3的中间ID表中。
目标服务器数据处理模块被配置成:查询跳板服务器3上的中间数据表是否存在数据,如果存在数据则查询当前时间跳板服务器3上的中间数据表中最大的ID值,将该最大的ID值存入第三变量;从跳板服务器3上的中间数据表中取出ID值小于等于第三变量的数据行,将取出的数据行转存至目标服务器2的目标数据表中。
另外,目标服务器数据处理模块还被配置成:将中间数据表中ID值小于等于第三变量的数据行转存至目标服务器2的目标数据表后,从跳板服务器2的中间数据表中删除ID值小于等于第三变量的数据行。
采用实施例一中的系统实现的无法直接通信的服务器间进行可靠数据转移的方法可以参考下述具体方法实施例。
实施例二
实施例二为无法直接通信的服务器间进行可靠数据转移的方法,该方法包括数据源服务器数据处理流程和目标服务器数据处理流程。
数据源服务器数据处理流程包括以下步骤:
A1、查询数据源服务器上的源数据表是否存在数据,如果存在数据则转入步骤B1,否则退出本方法流程。
B1、查询当前时间(假设为t1)数据源服务器上的源数据表中最大的ID值,将该最大的ID值存入MAXID,查询跳板服务器的中间ID表中最大的ID值,将该最大的ID值存入MINID。由于源数据表中的数据是随时更新的,因此该步骤取出的MAXID是t1时刻的源数据表中的最新一条数据的ID。而中间ID表中的最大ID即MINID,就是上一次执行任务时,从表a中取出的数据的最大ID,本次任务中,从该ID的下一个ID所在的行开始取数据即可。
C1、从数据源服务器上的源数据表中取出ID值大于MINID且小于等于MAXID的数据行,将取出的数据行转存至跳板服务器的中间数据表中。
D1、查询跳板服务器的中间数据表中的最大ID值,将其存入跳板服务器的中间ID表中。
目标服务器数据处理流程包括以下步骤:
A2、查询跳板服务器上的中间数据表是否存在数据,如果存在数据则转入步骤B2,否则退出本方法流程;
B2、查询当前时间(假设为t2)跳板服务器上的中间数据表中最大的ID值,将该最大的ID值存入MAXID_2。以该t2时刻为分界,若数据源服务器在t2时刻之前存入中间数据表的数据,会在后续步骤中被转存;若在t2时刻之后存入中间数据表的数据,则本次任务中不会转存,被顺延到下一次任务。
C2、从跳板服务器上的中间数据表中取出ID值小于等于MAXID_2的数据行,将取出的数据行转存至目标服务器的目标数据表中。
进一步,在实施例一的基础上,步骤C2之后还包括:从跳板服务器的中间数据表中删除ID值小于等于MAXID_2的数据行,以免造成存储空间的浪费。
从以上实施例可以看出,本发明实施例实现的数据转移方法不依赖两台服务器间的系统时间同步,也不依赖两台服务器上的任务进行的先后顺序,即使某一端任务失败,对另一端的任务执行不会产生影响,且能在下一次任务执行时自动补全前次任务失败产生的数据缺失问题。因此,本发明降低了服务器设置的复杂度,而且本发明中的容错机制也能尽可能的节省运维成本。
需要说明,上述描述的实施例是本发明的一部分实施例,而不是全部实施例,也不是对本发明的限制。基于本发明的实施例,本领域普通技术人员在不付出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。