发明内容
有鉴于此,本发明提供了一种数据的同步方法、装置及系统,用以解决现有技术中如果双机集群系统机制出现问题,则当前的主服务器不一定具有最新数据,那么控制器触发主服务器向备服务器发送数据的同步方式,可能导致两者中较旧较少的数据覆盖了两者中较新较全的数据,造成数据丢失的问题。具体方案如下:
一种数据的同步方法,包括:
判断目标主服务器与目标备服务器是否处于同步状态;
若否,获取第一预设时长内所述目标主服务器的第一打点数据和所述目标备服务器的第二打点数据;
将所述第一打点数据和所述第二打点数据进行比较,得到第一差集数据和第二差集数据;
将所述第一差集数据同步给所述目标主服务器并将所述第二差集数据同步给所述目标备服务器。
上述的方法,可选的,判断目标主服务器与目标备服务器是否处于同步状态,包括:
每间隔所述第一预设时长,获取目标主服务器的第一状态和目标备服务器的第二状态;
将所述第一状态与所述第二状态进行比较;
当所述第一状态与所述第二状态相同时,判定所述目标主服务器与所述目标备服务器同步,反之,判定所述目标主服务器与所述目标备服务器异步。
上述的方法,可选的,还包括:
若是,检测是否存在打点指令;
若存在,继续检测所述目标主服务器与所述目标备服务器是否处于同步状态。
上述的方法,可选的,获取第一预设时长内所述目标主服务器的第一打点数据和所述目标备服务器的第二打点数据之前还包括:
每间隔第二预设时长对所述主服务器和/或所述备服务器进行打点,得到各个数据同步点;
将与所述各个数据同步点对应数据依据所属服务器的不同分为第一打点数据和第二打点数据。
上述的方法,可选的,将所述第一打点数据和所述第二打点数据进行比较,得到第一差集数据和第二差集数据,包括:
解析所述第一打点数据包含的各个第一时间点和所述第二打点数据包含的各个第二时间点;
将所述各个第一时间点与所述各个第二时间点进行比较;
将所述各个第二时间点中不属于所述各个第一时间点的时间点组成的数据作为所述第一差集数据;
将所述各个第一时间点中不属于所述各个第二时间点的时间点组成的数据作为所述第二差集数据。
一种数据的同步装置,包括:
判断模块,用于判断目标主服务器与目标备服务器是否处于同步状态;
获取模块,用于若否,获取第一预设时长内所述目标主服务器的第一打点数据和所述目标备服务器的第二打点数据;
比较模块,用于将所述第一打点数据和所述第二打点数据进行比较,得到第一差集数据和第二差集数据;
同步模块,用于将所述第一差集数据同步给所述目标主服务器并将所述第二差集数据同步给所述目标备服务器。
上述的装置,可选的,所述判断模块包括:
获取单元,用于每间隔所述第一预设时长,获取目标主服务器的第一状态和目标备服务器的第二状态;
第一比较单元,用于将所述第一状态与所述第二状态进行比较;
判定单元,用于当所述第一状态与所述第二状态相同时,判定所述目标主服务器与所述目标备服务器同步,反之,判定所述目标主服务器与所述目标备服务器异步。
上述的装置,可选的,还包括:
定时打点模块,用于每间隔第二预设时长对所述主服务器和/或所述备服务器进行打点,得到各个数据同步点;
分配模块,用于将与所述各个数据同步点对应数据依据所属服务器的不同分为第一打点数据和第二打点数据。
上述的装置,可选的,所述比较模块包括:
解析单元,用于解析所述第一打点数据包含的各个第一时间点和所述第二打点数据包含的各个第二时间点;
第二比较单元,用于将所述各个第一时间点与所述各个第二时间点进行比较;
第一确定单元,用于将所述各个第二时间点中不属于所述各个第一时间点的时间点组成的数据作为所述第一差集数据;
第二确定单元,用于将所述各个第一时间点中不属于所述各个第二时间点的时间点组成的数据作为所述第二差集数据。
一种数据的同步系统,包括:控制器,目标主服务器和目标备服务器,其中,
所述控制器,用于判断目标主服务器与目标备服务器是否处于同步状态,若否,获取第一预设时长内所述目标主服务器的第一打点数据和所述目标备服务器的第二打点数据,将所述第一打点数据和所述第二打点数据进行比较,得到第一差集数据和第二差集数据,将所述第一差集数据同步给所述目标主服务器并将所述第二差集数据同步给所述目标备服务器;
所述目标主服务器,用于接收第一打点数据;
所述目标备服务器,用于接收第二打点数据。
与现有技术相比,本发明包括以下优点:
本发明公开了一种数据的同步方法,判断目标主服务器与目标备服务器是否处于同步状态;若否,需要对所述目标主服务器和目标备服务器中的数据进行同步,在数据同步过程中将目标主服务器中的第一打点数据和目标备服务器中的第二打点数据进行比较得到对应的第一差集数据和第二差集数据,将所述第一差集数据同步给所述目标主服务器并将所述第二差集数据同步给所述目标备服务器,避免了当前的主服务器不一定具有最新数据,那么控制器触发主服务器向备服务器发送数据的同步方式,可能导致两者中较旧较少的数据覆盖了两者中较新较全的数据,造成数据丢失的问题。
进一步的,现有技术中的数据全备份的方式会增大服务器的负担,而只对差集部分进行同步减少了同步的数据量,减轻了服务器的负担。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
本发明公开了一种数据同步方法、装置及系统,应用在双机热备份的数据同步过程中,通过在主备同步控制器中增加定时任务,为主服务器、备服务器中的数据文件进行定时打点。若主备用服务器处于同步状态,则主备用服务器同时打点;若主备用服务处于非同步状态、或某个服务器宕机,仅向控制器选择的当前使用服务器打点;通过这种方式,将大的数据文件划分为小的时间点,根据时间点来标识数据同步情况,大量复杂数据差异的比较转换为简单少量时间点的比较。将数据同步时的单向数据流,转换为根据数据差异执行的双向数据同步流。同时采用全备份、增量备份结合的方式来实现数据同步,在保障数据准确性与正确性的同时,满足了数据备份时的高效性需求。所述同步方法的执行流程如图1所示,包括步骤:
S101、判断目标主服务器与目标备服务器是否处于同步状态;
本发明实施例中,在所述目标主服务器和所述目标备服务器在接收客户端发送的数据的过程中,为了保证数据传输的可靠性,通常数据在目标主服务器上进行存储的同时,会在目标备服务器上进行同步,其中,所述第一预设时长内包含多个同步时间点,每个同步时间点对应当前需要传输的数据。在同步时,需要判断所述目标主服务器与所述目标备服务器是否处于同步状态,若所述目标主服务器与所述目标备服务器同步时,继续检测所述目标主服务器与所述目标备服务器是否处于同步状态
S102、若否,获取第一预设时长内所述目标主服务器的第一打点数据和所述目标备服务器的第二打点数据;
本发明实施例中,当所述目标主服务器和所述目标备服务器不同步时,说明所述目标主服务器或者目标备服务器之中有一个存在故障或者掉线等问题,导致两者不可以实现同步存储,为了实现所述目标主服务器和所述目标备服务器中的数据同步,需要获取第一预设时长内所述目标主服务器的第一打点数据和所述目标备服务器的第二打点数据,其中,所述第一打点数据和所述第二打点数据指在所述第一预设时长内存储的打点数据,所述第一打点数据和所述第二打点数据可能为空,所述第一预设时长依据经验值进行设定。
S103、将所述第一打点数据和所述第二打点数据进行比较,得到第一差集数据和第二差集数据;
本发明实施例中,所述第一打点数据和所述第二打点数据中包含的为时间点,时间点与数据存在对应关系,依据所述第一打点数据和所述第二打点数据的各个时间点,确定所述第一差集数据和所述第二差集数据,其中,所述第一差集数据中为所述第二打点数据中存在而所述第一打点数据中不存在的数据,所述第二差集数据为所述第一打点数据中存在而所述第二打点数据中不存在的数据。
S104、将所述第一差集数据同步给所述目标主服务器并将所述第二差集数据同步给所述目标备服务器。
本发明实施例中,当所述主服务器和所述备服务器均得到其对应的差集数据后,各自创建同步会话,将所述第一差集数据同步给所述目标主服务器对应的数据库中并将所述第二差集数据同步给所述目标备服务器对应的数据库中,完成数据的同步。
本发明实施例中,还包括,当检测到所述目标主服务器或者所述目标备服务器中的任意一个掉线后重新上线或者发生故障后恢复时,需要执行上述S101-S104所述的方法,直接对其进行数据同步。
本发明实施例中,还包括:当所述目标主服务器和所述目标备服务器不同步时检测是否存在打点指令,若存在,继续检测所述目标主服务器与所述目标备服务器是否处于同步状态,若不存在,停止对所述目标主服务器与所述目标备服务器同步状态的检测。
本发明公开了一种数据的同步方法,判断目标主服务器与目标备服务器是否处于同步状态;若否,需要对所述目标主服务器和目标备服务器中的数据进行同步,在数据同步过程中将目标主服务器中的第一打点数据和目标备服务器中的第二打点数据进行比较得到对应的第一差集数据和第二差集数据,将所述第一差集数据同步给所述目标主服务器并将所述第二差集数据同步给所述目标备服务器,避免了当前的主服务器不一定具有最新数据,那么控制器触发主服务器向备服务器发送数据的同步方式,可能导致两者中较旧较少的数据覆盖了两者中较新较全的数据,造成数据丢失的问题。
进一步的,现有技术中的数据全备份的方式会增大服务器的负担,而只对差集部分进行同步减少了同步的数据量,减轻了服务器的负担。
本发明实施例中,判断目标主服务器与目标备服务器是否处于同步状态的方法流程如图2所示,包括步骤
S201、每间隔所述第一预设时长,获取目标主服务器的第一状态和目标备服务器的第二状态;
本发明实施例,解析所述目标主服务器和所述目标备服务器,获取所述目标主服务器的第一状态和所述目标备服务器的第二状态,其中,所述第一状态和所述第二状态可以为一个标识,依据所述标识确定所述目标主服务器和所述目标备服务器是否处于同步状态,其中,所述标识可以为数字组成的编号或者数字、字母加特殊符号组成的密码等形式。
S202、将所述第一状态与所述第二状态进行比较;
本发明实施例中,将所述第一状态和所述第二状态进行比较,判断两者是否相同。
S203、当所述第一状态与所述第二状态相同时,判定所述目标主服务器与所述目标备服务器同步,反之,判定所述目标主服务器与所述目标备服务器异步。
本发明实施例中,当所述第一状态与所述第二状态相同时,判定所述目标主服务器与所述目标备服务器同步,直接将对应的数据同步到所述目标主服务器和所述目标备服务器。反之,判定所述目标主服务器与所述目标备服务器异步也可能为单服务器状态,执行S101-S104所述的方法。
本发明实施例中获取第一预设时长内所述目标主服务器的第一打点数据和所述目标备服务器的第二打点数据之前还包括:每间隔第二预设时长对所述主服务器和/或所述备服务器进行打点,得到各个数据同步点,所述打点是通过计时器记录时间,将所述第一预设时长内的数据进行同步,将与所述各个数据同步点对应数据依据所属服务器的不同分为第一打点数据和第二打点数据。其中,所述第二预设时长依据经验值进行设定。
本发明实施例中,将所述第一打点数据和所述第二打点数据进行比较,得到第一差集数据和第二差集数据的方法流程如图3所示,包括步骤:
S301、解析所述第一打点数据包含的各个第一时间点和所述第二打点数据包含的各个第二时间点;
本发明实施例中,所述第一时间点和所述第二时间点为数据同步点,获取所述目标主服务器和所述目标备服务器的同步状态,若同步,则在主备服务器上记录数据同步时间点;若主备服务器异步或单服务器,则仅向控制器选择的当前主服务器上发送时间同步点;所述目标主服务器和所述目标备用服务器上各自维护一份数据同步点时间序列。
S302、将所述各个第一时间点与所述各个第二时间点进行比较;
本发明实施例中,将对应的同步点时间序列中的所述各个第一时间点与所述各个第二时间点进行比较。
S303、将所述各个第二时间点中不属于所述各个第一时间点的时间点组成的数据作为所述第一差集数据;
本发明实施例中,无论所述第一时间点还是所述第二时间点均对应数据,将所述各个第二时间点中不属于所述各个第一时间点的时间点组成的数据作为所述第一差集数据;
S304、将所述各个第一时间点中不属于所述各个第二时间点的时间点组成的数据作为所述第二差集数据。
本发明实施例中,无论所述第一时间点还是所述第二时间点均对应数据,将所述各个第一时间点中不属于所述各个第二时间点的时间点组成的数据作为所述第二差集数据。
本发明实施例中,基于S301-S304所述的方法,若目标备服务器上无数据,目标主服务器作为发送端,目标备服务器作为接收端,此时直接将目标主服务器上的数据传送给目标备服务器即可。
当所述目标主服务器和所述目标备服务器均包含数据时,所述目标主服务器和所述目标备服务器从第一个时间点开始比较,各采用一个文件记录对方没有的时间点,直至最后一个时间点;获取到差异时间点之后,将差异时间点对应的数据同步给对方。若某个文件为空则单向同步;若两个均不空则双向同步;若主备服务器的差集为空,则可不做同步操作。
差集的计算算法如下:
假设:t_i_master:所述目标主用服务器上的同步时间点,i最大取M;t_j_backup:所述目标备用服务器上的同步时间点,j最大取N;
所述目标主服务器和所述目标备服务器从第一个时间点开始比较,直至i=M或j=N:
若t_i_master==t_j_backup,则i++,j++;
若t_i_master>t_j_backup,则在备用服务器的差集中增加t_j_backup,并j++,若j=N,则将t_i_master到t_M_master的时间点均添加到所述目标主用服务器的时间差集中,依据时间差集确定对应的数据差集;
若t_i_master<t_j_backup,则在主用服务器的差集中增加t_i_master,并i++,若i=M,则将t_j_backup到t_N_backup的时间点均添加到所述目标备服务器的时间差集中,依据时间差集确定对应的数据差集;
在所述目标主服务器和所述目标备服务器上得到各自的数据差集后,各自创建同步会话,向对方发送时间点差集对应的数据块;同步会话的数据接收端将接收到的数据存放到对应的位置,并将对应的时间点数据补齐。
本发明实施例中,基于上述的一种数据的同步方法,本发明实施例中还提供了一种数据的同步系统,所述数据同步系统的结构框图如图4所示,其中,所述数据同步系统包括:
控制器,目标主服务器和目标备服务器,其中,
所述控制器,用于判断目标主服务器与目标备服务器是否处于同步状态,若否,获取第一预设时长内所述目标主服务器的第一打点数据和所述目标备服务器的第二打点数据,将所述第一打点数据和所述第二打点数据进行比较,得到第一差集数据和第二差集数据,将所述第一差集数据同步给所述目标主服务器并将所述第二差集数据同步给所述目标备服务器。
所述目标主服务器,用于接收第一打点数据;
所述目标备服务器,用于接收第二打点数据;
本发明实施例中,基于上述的一种数据的同步方法,本发明实施例中还提供了一种数据的同步装置,所述数据同步装置的结构框图如图5所示,包括:
判断模块401,获取模块402,比较模块403和同步模块404。
其中,
所述判断模块401,用于判断目标主服务器与目标备服务器是否处于同步状态;
所述获取模块402,用于若否,获取第一预设时长内所述目标主服务器的第一打点数据和所述目标备服务器的第二打点数据;
所述比较模块403,用于将所述第一打点数据和所述第二打点数据进行比较,得到第一差集数据和第二差集数据;
所述同步模块404,用于将所述第一差集数据同步给所述目标主服务器并将所述第二差集数据同步给所述目标备服务器。
本发明公开了一种数据的同步装置,判断目标主服务器与目标备服务器是否处于同步状态;若否,需要对所述目标主服务器和目标备服务器中的数据进行同步,在数据同步过程中将目标主服务器中的第一打点数据和目标备服务器中的第二打点数据进行比较得到对应的第一差集数据和第二差集数据,将所述第一差集数据同步给所述目标主服务器并将所述第二差集数据同步给所述目标备服务器,避免了当前的主服务器不一定具有最新数据,那么控制器触发主服务器向备服务器发送数据的同步方式,可能导致两者中较旧较少的数据覆盖了两者中较新较全的数据,造成数据丢失的问题。
进一步的,现有技术中的数据全备份的方式会增大服务器的负担,而只对差集部分进行同步减少了同步的数据量,减轻了服务器的负担。
本发明实施例中,所述判断模块401包括:
获取单元405,第一比较单元406和判定单元407。
其中,
所述获取单元405,用于每间隔所述第一预设时长,获取目标主服务器的第一状态和目标备服务器的第二状态;
所述第一比较单元406,用于将所述第一状态与所述第二状态进行比较;
所述判定单元407,用于当所述第一状态与所述第二状态相同时,判定所述目标主服务器与所述目标备服务器同步,反之,判定所述目标主服务器与所述目标备服务器异步。
本发明实施例中,所述同步装置还包括:
定时打点模块408和分配模块409。
其中,
所述定时打点模块408,用于每间隔第二预设时长对所述主服务器和/或所述备服务器进行打点,得到各个数据同步点;
所述分配模块409,用于将与所述各个数据同步点对应数据依据所属服务器的不同分为第一打点数据和第二打点数据。
本发明实施例中,所述比较模块403包括:
解析单元410,第二比较单元411,第一确定单元412和第二确定单元413。
其中,
所述解析单元410,用于解析所述第一打点数据包含的各个第一时间点和所述第二打点数据包含的各个第二时间点;
所述第二比较单元411,用于将所述各个第一时间点与所述各个第二时间点进行比较;
所述第一确定单元412,用于将所述各个第二时间点中不属于所述各个第一时间点的时间点组成的数据作为所述第一差集数据;
所述第二确定单元413,用于将所述各个第一时间点中不属于所述各个第二时间点的时间点组成的数据作为所述第二差集数据。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上对本发明所提供的一种数据的同步方法、装置及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。